8 poin oleh ssssut 2020-12-31 | 1 komentar | Bagikan ke WhatsApp

Nvidia

Pelopor pasar, dengan toolkit yang matang. Masih terus berkembang pesat, dan terutama API level tinggi (higher-level) bahkan lebih demikian. Semua GPU yang dijual Nvidia mendukung CUDA.

HPC SDK, yang dulu dikenal sebagai PGI dan hanya dapat digunakan di Linux, menambahkan dukungan OpenACC, paralelisasi standar C++ (stdpar), dan OpenMP (beta).

Salah satu masalah pada lisensi HPC SDK Nvidia adalah klausul berikut:

You shall strictly prohibit the further distribution of the Run-Time Files by users of an End-User Application

Karena pengguna tidak dapat mendistribusikan ulang aplikasi dengan tetap menyertakan file runtime yang dibutuhkan aplikasi yang dibundel, mungkin saja aplikasi tersebut sama sekali tidak bisa didistribusikan. Masalah ini tidak berlaku untuk CUDA SDK yang digunakan oleh sebagian besar orang.

AMD

Pemrograman GPGPU yang menjadi fokus utama pada hardware AMD adalah ROCm. Selain HIP yang dimiliki AMD, yang didukung secara resmi adalah OpenMP dan OpenACC.

Ada beberapa kelemahan yang jelas di sini:

  • Hanya untuk Linux, sehingga tidak menjadi opsi untuk sebagian besar pasar.

  • Biner yang dihasilkan oleh toolchain ROCm bergantung pada hardware dan tidak menargetkan IR. Saat generasi baru keluar, biner harus dikompilasi ulang.

  • Untuk waktu yang cukup lama setelah rilis, dukungan untuk hardware baru pada praktiknya tidak ada.

Kelemahan-kelemahan ini pada praktiknya membuat kegunaannya di desktop nyaris tidak ada, dan hanya OpenCL yang tersisa sebagai API yang disediakan vendor untuk hardware GPU AMD.

Intel

oneAPI didukung pada semua GPU Intel yang dirilis baru-baru ini, tetapi performa tinggi masih belum ada. Selain Level Zero dari Intel, API yang didukung secara resmi adalah OpenMP dan SYLC.

Level Zero dari oneAPI menggunakan SPIR-V sebagai IR, sehingga memungkinkan dukungan yang mulus untuk hardware yang akan dirilis di masa depan. Windows juga didukung.

Khronos

Menyediakan standar industri yang dapat digunakan di berbagai vendor.

Reset yang dikenal sebagai OpenCL 3.0 masih belum memberi dampak besar. Kombinasi SYCL dan komputasi Vulkan bisa menjadi jalur yang lebih baik, memungkinkan satu biner digunakan di banyak vendor sekaligus menghadirkan pengalaman pengembang yang baik.

Dukungan OpenCL yang sebenarnya:

Saat ini Nvidia menyediakan OpenCL 1.2 dengan dukungan extensions.

AMD menyediakan implementasi OpenCL 1.2 yang lumayan, bersama implementasi OpenCL 2.x yang sangat penuh bug (dan tidak ada cara yang layak untuk melakukan debugging).

Intel menyediakan implementasi OpenCL 3.0 untuk GPU Intel.

OpenCL 1.2 juga didukung di macOS, termasuk Apple Silicon, tetapi dokumentasinya sudah deprecated.

Microsoft

C++ AMP tampaknya sudah mati. Ini bersifat vendor-independent dan didukung oleh Visual C++, tetapi belum pernah diperbarui sejak D3D11. Versi ROCm lama juga pernah didukung.

Apple

Komputasi Metal hanya untuk macOS/iOS/…. Dalam ranah GPGPU, daya tariknya jauh berkurang, terutama dalam performa komputasi GPU.

1 komentar

 
kbumsik 2020-12-31

GPGPU sangat berbeda-beda tergantung vendor dan OS, jadi semoga suatu saat bisa disatukan.

Ngomong-ngomong, tidak ada penyebutan tentang DirectML di Windows. Dukungan hardwarenya luas, dan belakangan bahkan dibuat bisa berjalan di WSL, jadi menurut saya itu cukup menarik.