Thứ Tư, 4 tháng 12, 2013

Tìm hiểu về bộ API Mantle đầy hứa của AMD.

Còn trên PC? Chỉ ở mức 2 - 3000 là các lập trình viên đã phải vật lộn với sự cắt giảm mạnh về hiệu năng do API cấp cao gây ra

Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

Người ta hiện có thể render 10000 – 20000 đối tượng trên mỗi khung hình và vẫn đạt mức 30-60 fps tùy theo chất lượng. Quản lí thể của các đối tượng trong game.

Câu hỏi đặt ra là. Một tiếng tăm lớn khác của ngành công nghiệp vi xử lí đồ họa thời bấy giờ là 3dfx cũng có một bộ API cấp thấp cho riêng các phần cứng của mình mang tên Glide. Bởi mỗi máy PC có một cấu hình khác nhau.

Để biểu hiện Mantle. Chí ít đó là những gì mà hãng này đang cố thể hiện trong những thông báo cung cấp cho giới truyền thông. OpenGL thì chất lượng cũng kém hơn so với phiên bản dùng Glide. Xét cho cùng. Ngay cả khi những lợi thế của Mantle đã là vô cùng rõ ràng.

Câu hỏi đặt ra là. Nhìn vào hình minh họa. Tuy rằng hãng có hứa hẹn rằng sẽ biểu hiện cụ thể các chi tiết kỹ thuật của Mantle tại AMD Developer Summit vào tháng 11 tới. Có thể nhận ra rằng khi phát triển API cho các mẫu console mới. Đều trở nên dễ dàng và hợp lí hơn nếu họ hoàn toàn nắm được việc các dòng code của mình tương tác với phần cứng như thế nào – mặc dầu điều này cũng đồng nghĩa với khối lượng công việc nhiều hơn chút xíu.

Mối liên tưởng với console. Cách nhìn này nâng tầm vai trò của Mantle lên thêm một bậc. Tức các game đi kèm. Và cũng không có vẻ rằng NVIDIA và Intel cũng sẽ gấp chạy theo cuộc đua này khiến cho thị trường xáo động. Câu hỏi cần đặt ra là liệu Mantle có tác dụng gì cho người dùng NVIDIA và Intel hay không. Cũng thành thử mà Glide lúc đó rất được các lập trình viên chuộng.

Điều này ngày càng lộ rõ nhiều nhược điểm. Nhưng các API cấp cao với khả năng trừu tượng hóa mạnh vẫn còn rất hiếm hoi.

Đưa các dòng code của lập trình viên đến gần với thiết bị phần cứng hơn bao giờ hết

Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

Nói một cách chính xác và đầy đủ. Một chữ viết tắt API là hoàn không đủ. Nhưng câu đáp mà rất nhiều chuyên gia trong ngành tin cẩn là không.

Người ta có thể lầm tưởng làm thêm 1 phiên bản module đồ họa riêng cho các GPU GNC của AMD bằng cách sử dụng lại các dòng code viết trên nền Mantle API là rất đơn giản. Cách tiếp cận của Mantle hoàn toàn trái lại. V. Lập trình viên. Liệu có lí do nào để AMD – thay vì port thẳng các API này từ console lên PC – lại đi phát triển các bộ API cho từng hệ máy riêng biệt hay không? Tuy hãng chưa đưa ra câu giải đáp chính thức.

Chúng chỉ được hợp nhất với nhau bởi các yêu cầu tính năng mà Microsoft đã định ra trong Direct3D. Cắt giảm bớt khối lượng công việc mà các lập trình viên game và đồ họa phải thực hành – cũng như cho phép chúng hoạt động trên nhiều loại nền móng phần cứng khác nhau.

Bây chừ Mantle mới chỉ được hiểu là một bộ dụng cụ giúp các lập trình viên tiếp cận hơn với nền móng phần cứng đồ họa trên PC. Nhiều người có thể lầm tưởng hiệu năng đã được cải thiện đáng kể trên DirectX 10? Nhưng thực tại đáng buồn là từ trước tới giờ số lượng draw calls mà một GPU high-end thực thụ có thể xử lí (render) vẫn luôn lớn hơn nhiều lần so với số lực draw calls mà nó nhận được tại bất kỳ thời điểm nào.

Liệu các hãng sinh sản game có phải một lần nữa phân tán nhân công của mình để phát triển đồng thời các phiên bản game trên nền Mantle và Direct3D – đồng nghĩa với việc chất lượng bản game Direct3D sẽ phải đi xuống? Việc phát triển một API cấp thấp hoàn chỉnh không thể xong trong 1 sớm một chiều.

Nhiều cây bút của các trang tin công nghệ hiện đã đang phát sốt vì những đổi thay mà bộ API này có thể mang lại. Thời khắc này có thể nói ngành công nghiệp máy tính đã qua thuở nguyên sơ.

Người dùng VGA của 3dfx có hiệu năng tốt hơn. Các API cấp cao vẫn luôn chiếm ưu thế.

Khi port game từ console lên PC. Để có thể lột tả hết những gì mà các họa sĩ thiết kế dự kiến thể hiện. Nhưng rất tiếc các dòng mã lệnh cấp thấp không hoạt động đơn giản như vậy. Nếu những thông tin AMD cung cấp là thật.

Điều mà trước đây hầu như bất khả thi. Tác hại của API cấp thấp. Và Microsoft thì vẫn còn đang vật lộn hoàn thiện Direct3D

Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

V. Chúng ta sẽ sớm thấy hàng loạt tựa game gán mác Mantle ra mắt trên thị trường. Các giải pháp tình thế của DirectX như việc gộp chung một cụm cây trên bản đồ của các game chiến thuật vào thành một đối tượng (object) độc nhất vô nhị để chỉ phải thực hiện một draw call cho cả cụm đó vẫn sẽ hoàn toàn không đủ trong tương lai sắp tới.

Intel và NVIDIA. Thậm chí đôi lúc gần như bị bỏ rơi. Trước mắt. Từ trước tới giờ trên console. AMD có đưa ra một số giới thiệu khá ngắn gọn về bộ API (application programming interface) mới nhất mang tên Mantle của mình. Khả năng thành công của API này vẫn chưa phải là tuyệt đối.

Hiện AMD là nhà cung cấp APU cho cả hai dòng máy được ưa thích Xbox One và PS4. Hiện giờ trên thị trường đồ họa PC. 3 cái tên nắm nhiều quyền lực nhất vẫn là AMD. Phục vụ hai mức cường độ công việc khác nhau.

Nhưng cũng khá lâu rồi ngành công nghiệp PC mới xuất hiện một “tay chơi” dám thực hiện điều này. Kiến trúc đồ họa của mỗi hãng là hoàn toàn khác nhau. Việc chúng ta có thể dễ dàng tận hưởng mọi thể loại game trên phần nhiều nền móng phần cứng như Hiện nay hầu như là bất khả thi. Mantle và vấn đề hiệu năng. Các API cấp cao như Direct3D hay OpenGL đều phải đánh đổi các lợi thế đã nói ở trên với một phần hiệu năng.

Các API cấp cao vẫn có thể được dùng cho các công việc đơn giản. Sự xuất hiện của Mantle thực thụ là cần thiết. Sau này người ta coi sự lụi tàn của Glide và sự sụp đổ của 3dfx hồi 2002 là tin tốt cho toàn ngành công nghiệp. Một trong số những vấn đề thường gặp nhất là vấn đề về draw calls (tạm dịch: lệnh gọi vẽ). Chúng ta đã nhắc sơ qua về lợi thế của việc lập trình game console trong phần thứ nhất.

Mọi công việc từ quản lí bộ nhớ

Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

Lúc này các hãng lập trình game trên Xbox One có thể dễ dàng đem phần code đồ họa đã được viết cho console lên PC để tận dụng lại. Và cũng không phải mới được thí nghiệm lần đầu. Khoảng cuối thập kỷ 90 của thế kỷ trước.

Cách xử lí thường gặp trước giờ vẫn là gắng giảm bớt số lượng draw calls – nhưng với nhu cầu ngày càng tăng cao về mặt đồ họa. Để tổng kết lại cho buổi giới thiệu sản phẩm hôm 24/9 mới rồi.

Và thật tâm mà nói thì cho tới giờ giới lập trình game. Nó sẽ chỉ đơn giản. Thực tế AMD sẽ cần phải phát triển hai bộ khác nhau. Trên các máy console. Thật may mắn là có. Nhưng trên PC. Tuy nhiên mối liên can của Mantle với các máy console có nhiều điều để nói hơn thế. Tách nó khỏi tầm kiểm soát của các lập trình viên. Khác biệt lớn nhất của các máy console với PC là sự đồng nhất.

Ngay cả khi Mantle trên PC và trên console gần như là một thì khối lượng công việc mà các lập trình viên phải thực hành cho riêng phiên bản này vẫn lớn hơn việc chỉ làm một bản Direct3D rất nhiều lần.

Lúc này việc các hãng phát triển game có thể tập kết mọi nguồn lực vào một API độc nhất vô nhị đã đem đến kết quả tốt hơn cho cả thảy người dùng thay vì phân tán sức lực vào các cách render khác nhau cho từng nền móng phần cứng khác nhau.

Liệu AMD có thuyết phục nổi giới lập trình viên ưu ái mình đến vậy hay không?.

Hơn nữa lại vẫn tận dụng được các lợi thế về mặt hiệu năng khi dùng API cấp thấp (ít nhất là cho các GPU GNC của AMD). Nói chuẩn xác hơn. Các hãng game vốn ép phải có một phiên bản module đồ họa xây dựng trên nền API Direct3D nếu muốn game của mình chạy được với nhiều mẫu VGA khác nhau.

Việc sắp xếp các thông báo cấp thiết cho việc render và gửi đi một draw calls sẽ tốn một khoảng thời gian nhất định. Các bộ API về xử lí đồ họa mà chúng ta thường gặp như OpenGL hay Direct3D có mức trừu tượng hóa cao hơn. Nếu Mantle chỉ đơn giản cung cấp khả năng tiếp cận gần hơn với kiến trúc GPU GCN của AMD.

Mantle là một bộ API cấp thấp chuyên dùng cho kiến trúc Graphic Core Next của AMD

Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

Thậm chí tùy theo khoảng cách về tuổi đời mà các dòng sản phẩm của cùng một hãng cũng có thể khác nhau một trời một vực. Các công việc đòi hỏi nhiều sức mạnh xử lí từ phần cứng vẫn luôn phải được hiện trên các API cấp thấp.

Thậm chí hầu như thường phải làm gì. Nhìn vào các phân tích trong phần 2. Trong đó kiến trúc phần cứng hầu như là nhất mực – đặc biệt là với các máy console đời cũ khi mà hãng sinh sản sẽ luôn muốn cho phép các lập trình viên tận dụng mọi khả năng xử lí của phần cứng.

Đến mức mà có những thời khắc game mới ra mắt chỉ tương trợ mỗi Glide (tức chỉ chạy trên nền phần cứng của hãng 3dfx) hoặc nếu có phiên bản dựa trên Direct3D. Giờ đây khi mà Direct3D đã già cỗi và các chướng ngại về hiệu năng như trong phần 1 càng ngày càng gây phiền phức cho giới lập trình.

Kể cả sau khi Microsoft và các đối tác sử dụng Direct3D khác đã cải thiện đáng kể điều này khi nâng cấp từ DirectX 9 lên DirectX 10. Cụ thể hơn. Nếu không có sự tồn tại của các bộ API như Direct3D và OpenGL. Lệnh yêu cầu GPU tiến hành render một vật thể. Về mặt lợi. Bộ API này đi sâu hạ tầng hết mức có thể. Ngoài việc làm ẩn đi sức mạnh xử lí đích thực của phấn cứng.

Chung cục Mantle có gì đặc biệt và liệu nó có đích thực có thể thay đổi cách các lập trình viên làm việc với vi xử lí đồ họa? Hãy cùng điểm qua các phân tích của chuyên trang AnandTech về vấn đề này.

Đồng nghĩa với việc AMD đóng vai trò cực lớn trong việc phát triển chúng – không chỉ trong khuôn khổ phần cứng mà còn có sự can hệ không nhỏ với hệ thống phần mềm. Cách tiếp cận này không phải quá phức tạp. Cả hai máy console sắp ra mắt này đều có vi xử lí hoạt động dựa trên kiến trúc GCN.

Điều này dẫn đến kết luận rằng Mantle – dù được giới thiệu là sản phẩm cho PC – bản chất chính là bộ API cấp thấp của Xbox One được AMD port lên PC.

Direct3D được hoàn thiện và lên ngôi vua API trên thị trường PC. Tham khảo: Anandtech. Với cùng một nền tảng kiến trúc vi xử lí. Không. Các vật thể cần được xử lí càng tách biệt và chi tiết càng tốt

Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

Và câu đáp. Tuy thực tại chẳng thể phủ nhận rằng AMD chỉ là nắm một phần trên miếng bánh đồ họa PC (đồng nghĩa với Mantle chẳng thể hoàn toàn thay thế Direct3D) nhưng ít nhất đây cũng là một bước tiến đáng kể khi cung cấp cho các lập trình viên một phương án để tận dụng lại các dòng code cấp thấp hiệu năng cao của mình.

Cho phép lập trình viên tiếp cận gần hơn với phần cứng và loại bỏ các vấn đề thường gặp trên API cấp cao như giới hạn số lượng draw call.

Thực tại thì các API cấp cao và cấp thấp vẫn thường được sử dụng cùng lúc. Các lãnh đạo của AMD không ngây ngô đến mức đột một ngày đẹp trời nổi hứng bảo nhau phát triển Mantle rồi mới tính cách mời gọi các hãng game dùng API của mình. Nhiều tính năng hơn và ít lỗi hơn. Để tạo ra một frame hình có thể cần tới hàng trăm thậm chí hàng ngàn draw calls (đặc biệt đối với các game 3D bối cảnh rộng).

Đúc kết từ những điều này. Một trong những Studio tiếng tăm nhất của cả ngành công nghiệp game - DICE của EA – đã nhận vai trò tiên phong trong việc vận dụng Mantle vào trong phần tiếp theo của tựa game đình đám Battlefield. Nhưng ngược lại người dùng card ATI (sau này thuộc về AMD) và NVIDIA tất nhiên sẽ không lấy gì làm vui vẻ. Đối với các chuyên gia. Theo như các thông tin mà AMD cung cấp thời gian gần đấy.

Ít ra thì cho đến giờ phút này. Cũng chính do vậy. Cả những người đảm đương mảng phần cứng và phần mềm đều chưa bao giờ hài lòng với tốc độ thực thi draw calls trên PC.

Chính AMD chứ không ai khác sẽ phải cung cấp các driver và API mà các nhà lập trình game cho các máy này sẽ cần dùng để tận dụng hết các sức mạnh xử lí của phần cứng trên đó. Mantle đã có một khởi đầu khá tốt đẹp. Nhưng để tránh đi vào vết xe đổ của Glide.

Chúng ta sẽ cần phải chờ xem AMD sẽ thương thuyết như thế nào để Mantle không đem lại những tác động xấu lên thị trường như Glide đã từng làm. Về cơ bản.

Bản thân quá trình trừu tượng hóa của các API này cũng có những tác động không nhỏ lên hiệu năng. Mantle ra đời bởi suốt bao bấy lâu giới lập trình đã kêu gào khản cổ yêu cầu các hãng sản xuất đồ họa PC cung cấp cho họ một bộ API cấp thấp để thỏa sức “vắt kiệt” tiềm năng xử lí của phần cứng - và AMD đã quyết định đáp.

Kết luận: Mantle là một trong các API cấp thấp hiếm hoi loại bỏ hồ hết việc trừu tượng hóa. Việc được tương tác trực tiếp đến phần cứng là điều không mấy khó khăn cho các lập trình viên console. Do sự đa dạng của các kiến trúc GPU.