CUDA, Direct3D, DirectCompute, OpenGL, OpenCL dll. Apa itu? - I
API (Gambar diambil dari sproutsocial). |
'Banyak dari Kita yang mungkin familiar dengan istilah CUDA, OpenGL serta OpenCL dan tak sedikit juga yang belum pernah mendengar istilah Direct3D dan DirectCompute.' - Hi! Kerabat Gembos Nge-Blog. Apa kabar? Semoga senantiasa baik - baik saja dan tak kurang satu apapun. Pada kesempatan kali ini. Kami ingin memberikan sedikit bahasan singkat tentang API (Application Programming Interface) yang umum Kita jumpai, contohnya CUDA, Direct3D, DirectCompute, OpenGL, OpenCL, Mantle, Metal dan Vulkan.
Baik. Langsung saja! Kita mulai dari API Metal.
1. API Metal
Tak heran jika banyak yang tidak familiar dengan API tersebut. Pasalnya pengguna sistem operasi bikinan Apple, khususnya di Indonesia, tidak sebanyak pengguna sistem operasi Windows dan GNU/Linux, seperti Ubuntu. 'Lalu, apa itu API Metal?' API Metal adalah grafis 3D akselerasi perangkat keras level rendah dan antarmuka pemrograman aplikasi komputasi shader yang dikembangkan oleh Apple. Metal menggabungkan fungsi yang mirip dengan OpenGL dan OpenCL dan performa Metal sendiri serupa dengan API Vulkan. Jadi dapat dikatakan bahwa API Metal adalah Rendering API.
Oke. Selanjutnya adalah API Vulkan.
2. API Vulkan
API Vulkan sebelumnya bernama 'Next Generation OpenGL Initiative' (glNext). Sama halnya dengan Metal. API Vulkan adalah grafis 3D akselerasi perangkat keras level rendah dan antarmuka pemrograman aplikasi komputasi shader. Namun ada perbedaan antara API Metal dengan API Vulkan, yakni API Vulkan adalah API lintas platform.
'Apa maksudnya?' maksudnya adalah API Vulkan tidak dikunci pada satu OS. API Vulkan dapat diimplementasikan di sistem operasi bikinan Microsoft. Bahkan bisa juga diimplementasikan di Android dan iOS.
Meskipun ada platform RISC dan VLIW tapi umumnya platform yang Kita gunakan adalah platform x86 dan ARM. Intinya. Platform adalah Instruction Set Architectures (ISA) dan beberapa contoh perangkat dengan platform ARM adalah ponsel pintar Android serta iPhone. Sedangkan perangkat dengan platform x86 adalah PC Desktop dan laptop yang menggunakan prosesor AMD atau Intel.
Masih tentang platform. Sebenarnya Kita cukup familiar dengan platform VLIW terlebih bagi pengguna kartu grafis ATi/AMD Radeon seri HD 4000, HD 5000 dan HD 6000 karena prosesor grafis (Unified Shader), bukan arsitektur (TeraScale) nya, pada seri-seri tersebut dibuat berdasarkan platform Very Long Instruction Word (VLIW).
Selanjutnya adalah API Mantle.
AMD awalnya mengembangkan Mantle bekerja sama dengan DICE, mulai tahun 2013. Mantle dirancang sebagai alternatif untuk Direct3D dan OpenGL, terutama untuk digunakan pada komputer pribadi, meskipun Mantle mendukung GPU yang ada di PlayStation 4 dan di Xbox One. Namun di tahun 2015. Pengembangan Mantle ditangguhkan karena DirectX 12 dan Vulkan turunan dari Mantle semakin populer.
API Mantle bukanlah API lintas platform dan untuk saat ini API Mantle tidak dapat diimplementasikan di platform selain x86 dan x86-64. Tapi baik API Vulkan maupun API Mantle, keduanya disebut Rendering API.
Tujuan desain Mantle adalah untuk memungkinkan game dan aplikasi memanfaatkan CPU dan GPU secara lebih efisien, menghilangkan hambatan (baca: bottleneck) CPU dengan mengurangi overhead validasi API dan memungkinkan penskalaan yang lebih efektif pada beberapa core CPU, menyediakan rutinitas draw yang lebih cepat dan memungkinkan kontrol yang lebih besar pada grafik pipeline dengan menghilangkan aspek-aspek tertentu dari abstraksi perangkat keras yang melekat pada API grafis yang berlaku saat ini OpenGL dan Direct3D.
Sekarang lanjut ke API OpenGL.
API OpenGL adalah grafis API tertua diantara Mantle, Metal dan Vulkan. Adalah Silicon Graphics Inc. yang memulai pengembangan OpenGL di tahun 1991 dan dilepas ke publik tepat pada 30 Juni 1992. OpenGL adalah API lintas bahasa (cross-language) dan lintas platform untuk rendering grafik vektor 2D dan 3D.
'Apa maksudnya?' maksudnya adalah API Vulkan tidak dikunci pada satu OS. API Vulkan dapat diimplementasikan di sistem operasi bikinan Microsoft. Bahkan bisa juga diimplementasikan di Android dan iOS.
API Vulkan. |
Meskipun ada platform RISC dan VLIW tapi umumnya platform yang Kita gunakan adalah platform x86 dan ARM. Intinya. Platform adalah Instruction Set Architectures (ISA) dan beberapa contoh perangkat dengan platform ARM adalah ponsel pintar Android serta iPhone. Sedangkan perangkat dengan platform x86 adalah PC Desktop dan laptop yang menggunakan prosesor AMD atau Intel.
Masih tentang platform. Sebenarnya Kita cukup familiar dengan platform VLIW terlebih bagi pengguna kartu grafis ATi/AMD Radeon seri HD 4000, HD 5000 dan HD 6000 karena prosesor grafis (Unified Shader), bukan arsitektur (TeraScale) nya, pada seri-seri tersebut dibuat berdasarkan platform Very Long Instruction Word (VLIW).
Selanjutnya adalah API Mantle.
3. API Mantle
AMD awalnya mengembangkan Mantle bekerja sama dengan DICE, mulai tahun 2013. Mantle dirancang sebagai alternatif untuk Direct3D dan OpenGL, terutama untuk digunakan pada komputer pribadi, meskipun Mantle mendukung GPU yang ada di PlayStation 4 dan di Xbox One. Namun di tahun 2015. Pengembangan Mantle ditangguhkan karena DirectX 12 dan Vulkan turunan dari Mantle semakin populer.
API Mantle. |
API Mantle bukanlah API lintas platform dan untuk saat ini API Mantle tidak dapat diimplementasikan di platform selain x86 dan x86-64. Tapi baik API Vulkan maupun API Mantle, keduanya disebut Rendering API.
Tujuan desain Mantle adalah untuk memungkinkan game dan aplikasi memanfaatkan CPU dan GPU secara lebih efisien, menghilangkan hambatan (baca: bottleneck) CPU dengan mengurangi overhead validasi API dan memungkinkan penskalaan yang lebih efektif pada beberapa core CPU, menyediakan rutinitas draw yang lebih cepat dan memungkinkan kontrol yang lebih besar pada grafik pipeline dengan menghilangkan aspek-aspek tertentu dari abstraksi perangkat keras yang melekat pada API grafis yang berlaku saat ini OpenGL dan Direct3D.
Sekarang lanjut ke API OpenGL.
4. API OpenGL
API OpenGL adalah grafis API tertua diantara Mantle, Metal dan Vulkan. Adalah Silicon Graphics Inc. yang memulai pengembangan OpenGL di tahun 1991 dan dilepas ke publik tepat pada 30 Juni 1992. OpenGL adalah API lintas bahasa (cross-language) dan lintas platform untuk rendering grafik vektor 2D dan 3D.
API OpenGL. |
Sejak 2006 OpenGL telah dikelolah oleh konsorsium teknologi nirlaba, Khronos Group. Spesifikasi OpenGL menjelaskan API abstrak untuk menggambar grafik vektor 2D dan 3D. Meskipun API dapat diimplementasikan sepenuhnya dalam perangkat lunak, API dirancang untuk diimplementasikan sebagian besar atau seluruhnya dalam perangkat keras.
API OpenGL menjadi API grafik vektor 2D dan 3D baku di sistem GNU/Linux. Lain halnya di sistem Windows. API untuk grafik vektor 2D, Windows punya DirectDraw atau kini dipanggil Direct2D. Sedangkan API untuk grafis 3D. Windows mempunyai Direct3D.
Tahu tidak, dari sinilah pengertian DirectX menjadi salah kaprah. Sebenarnya DirectX adalah sebutan untuk sekumpulan API yang didalamnya berisi API grafik vektor 2D (Direct2D), API grafis 3D (Direct3D), DirectInput, DirectSound, DirectCompute dsb.
Tahu tidak, dari sinilah pengertian DirectX menjadi salah kaprah. Sebenarnya DirectX adalah sebutan untuk sekumpulan API yang didalamnya berisi API grafik vektor 2D (Direct2D), API grafis 3D (Direct3D), DirectInput, DirectSound, DirectCompute dsb.
Selanjutnya API Direct3D.
5. API Direct3D
Masih sama dengan keempat API diatas. API Direct3D adalah antarmuka pemrograman aplikasi grafis. Kumpulan API DirectX, mempunyai konsep serupa dengan API OpenGL yaitu dirancang untuk diimplementasikan sebagian dalam perangkat lunak dan perangkat keras. Sama seperti Metal, API Direct3D dikunci pada satu OS yaitu Windows.
Di tahun 1990-an. Microsoft bersama SGI (Silicon Graphics, Inc.) berupaya menggabungkan API OpenGL dan Direct3D untuk menjadi API Fahrenheit, tetapi akhirnya dibatalkan. API Direct3D awalnya bernama Reality Lab, yang dikembangkan sebuah perusahaan bernama RenderMorphics untuk digunakan dalam pencitraan medis serta perangkat lunak CAD. Lalu di tahun 1995, Microsoft membelinya dan mengubah namanya menjadi Direct3D.
Kesimpulannya. Kelima rendering API grafis diatas hanya API OpenGL yang juga rendering grafik vektor 2D. Performa kesemua rendering API diatas, bisa Kalian rasakan ketika Kalian bermain video gim. Itupun masih harus memperhatikan catatan dari engine gamenya.
Contoh. Ketika Kalian bermain gim 'Sniper Elite III'. Engine Gim tersebut memberikan opsi rendering API Mantle di sistem operasi Windows. Jadi Kalian bisa memilih mau menggunakan rendering API Direct3D atau Mantle.
Contoh lainnya. Permainan 'Dota 2'. Sejak 23 Mei 2016, engine gim tersebut memberikan opsi rendering API Vulkan untuk OS Windows. Sementara di macOS. Ketika Kalian menjalankan aplikasi Vulkan, misalnya gim Dota 2, diperlukan Library (baca: pustaka) MoltenVK agar gim tersebut bisa dimainkan dan dukungan pustaka MoltenVK terhadap API Vulkan baru dihadirkan pada 31 Mei 2018.
Bicara library. Pustaka MoltenVK adalah perangkat lunak yang memungkinkan perangkat lunak API Vulkan berjalan diatas API Metal pada sistem operasi bikinan Apple. MoltenVK adalah sebuah proyek untuk membuat subset dari Vulkan pada macOS dan iOS yang tidak memiliki driver Vulkan asli. Intinya MoltenVK adalah pustaka yang hanya "menyebrangkan" perangkat lunak Vulkan di atas API Metal.
Masih tentang library. Khusus untuk API Mantle, AMD yang menyediakan pustakanya karena AMD adalah pengembang dari API tersebut. Sedangkan untuk OpenGL. OpenGL yang menyediakan pustakanya dan untuk API Vulkan karena API tersebut dikembangkan beramai-ramai dibawah konsorsium Khronos Group maka semua member yang tergabung didalamnya bertanggung jawab atas pustakanya.
Contoh. Ketika Kalian bermain gim 'Sniper Elite III'. Engine Gim tersebut memberikan opsi rendering API Mantle di sistem operasi Windows. Jadi Kalian bisa memilih mau menggunakan rendering API Direct3D atau Mantle.
Contoh lainnya. Permainan 'Dota 2'. Sejak 23 Mei 2016, engine gim tersebut memberikan opsi rendering API Vulkan untuk OS Windows. Sementara di macOS. Ketika Kalian menjalankan aplikasi Vulkan, misalnya gim Dota 2, diperlukan Library (baca: pustaka) MoltenVK agar gim tersebut bisa dimainkan dan dukungan pustaka MoltenVK terhadap API Vulkan baru dihadirkan pada 31 Mei 2018.
Bicara library. Pustaka MoltenVK adalah perangkat lunak yang memungkinkan perangkat lunak API Vulkan berjalan diatas API Metal pada sistem operasi bikinan Apple. MoltenVK adalah sebuah proyek untuk membuat subset dari Vulkan pada macOS dan iOS yang tidak memiliki driver Vulkan asli. Intinya MoltenVK adalah pustaka yang hanya "menyebrangkan" perangkat lunak Vulkan di atas API Metal.
Masih tentang library. Khusus untuk API Mantle, AMD yang menyediakan pustakanya karena AMD adalah pengembang dari API tersebut. Sedangkan untuk OpenGL. OpenGL yang menyediakan pustakanya dan untuk API Vulkan karena API tersebut dikembangkan beramai-ramai dibawah konsorsium Khronos Group maka semua member yang tergabung didalamnya bertanggung jawab atas pustakanya.
'Jadi library diberikan bersamaan dengan graphics driver?' Tepat sekali. Jika Kalian pengguna OS Windows. Perhatikan proses saat Kalian memasang driver. Kalian akan melihat proses copy-paste berkas (.dll atau Dynamic-link library). Jadi jangan heran jika OS Windows bisa menjalankan piranti lunak OpenGL seperti NoxPlayer.
Iya. Sampai disini dulu tulisannya. Semoga bermanfaat dan menginspirasi. Semoga tidak ada lagi anggapan bahwa API adalah gimmick. Jadilah konsumen dan pengguna yang cerdas dan bijak.