VUDA: Implementasi Vulkan untuk CUDA
(github.com/jgbit)- VUDA adalah pustaka header-only berbasis Vulkan yang menyediakan antarmuka CUDA Runtime API untuk menulis aplikasi berakselerasi GPU
- Fungsionalitasnya mengikuti spesifikasi CUDA runtime sejauh memungkinkan, dan untuk penggunaan umum dapat merujuk ke dokumentasi referensi NVIDIA CUDA Runtime API
- Semua fitur dapat diakses dengan menyertakan
vuda.hppdan menggunakan namespacevuda::, sementaravuda_runtime.hppmembungkus dan mengalihkan fungsi-fungsi CUDA - Alur kerja contoh menggunakan pemanggilan CUDA Runtime API seperti
cudaSetDevice,cudaMalloc,cudaMemcpy,cudaFree, dan saat bukan menggunakan NVCC, menjalankan modul shader Vulkan denganvuda::launchKernel("add.spv", "main", ...) - Item dokumentasi mencakup Change List, Setup and Compilation, Deviations from CUDA, dan Implementation Details
1 komentar
Komentar Hacker News
Ini bukan implementasi CUDA, melainkan implementasi CUDA Runtime API
API ini dipakai untuk konfigurasi kartu, alokasi·penyalinan memori, dan eksekusi kernel
Yang penting, dengan ini tidak bisa menulis kode kernel yang benar-benar berjalan di GPU
Kalau tidak, untuk banyak beban kerja bahkan tidak bisa mulai
Ada juga wrapper API Modern C++ yang menyediakan pemeriksaan error otomatis, kontrol resource RAII, dan sebagainya: https://github.com/eyalroz/cuda-api-wrappers
Sebagai catatan, saya penulisnya
Untuk hal-hal seperti isolasi konteks atau penambahan dinamis kernel JIT yang baru dikompilasi sebagai modul, yang penting justru implementasi Driver API
Untuk membungkus seluruh API inti CUDA, yaitu driver·runtime·NVTX·CUDA-C++ serta kompilasi JIT PTX, dibutuhkan lebih dari 14.000 baris
Saya penasaran apa hubungan ini dengan tujuan yang pernah dibicarakan George Hotz, yaitu memungkinkan machine learning di chip AMD dan mematahkan dominasi Nvidia
Saya bukan ahli, tetapi pendekatan ini terlihat kuat dan penting
Hanya saja sistemnya sangat kompleks, jadi saya ragu apakah ini bisa dibuat oleh individu, dan untuk memulainya tampaknya perlu dukungan perusahaan
Saya juga bertanya-tanya apakah AMD sendiri mungkin tertarik membiayai engineer untuk terus menyempurnakannya secara iteratif
Sekarang saya agak lebih tenang tentang perjalanan saya menggunakan AMD
Driver GPU-nya memang tampak bermasalah besar, dan ternyata bukan hanya saya yang mengalaminya
Kalau Anda memakai GPU AMD di Windows dan ingin melatih atau menjalankan model machine learning, mungkin ada baiknya melihat torch-directml dan tensorflow-directml
CUDA dan DirectX tampak terlalu low-level untuk dijadikan API kompatibel di perangkat keras yang sangat berbeda, yaitu AMD dan Nvidia, tanpa banyak mengorbankan performa
cuDNN lebih high-level, jadi ada peluang lebih besar untuk menyediakan kompatibilitas tanpa kehilangan performa dengan memiliki implementasi kernel terpisah yang disesuaikan untuk perangkat keras AMD dan Nvidia
Tetapi cukup banyak hal yang dilakukan framework seperti PyTorch tidak hanya berbasis cuDNN, melainkan juga kernel kustom
Pilihan terbaik bagi AMD tampaknya adalah API low-level yang kokoh dan konsisten, serta dukungan compiler machine learning optimisasi high-level yang memudahkan vendor framework seperti PyTorch·TensorFlow·JAX membangun dukungan di atasnya
Pada akhirnya yang paling diuntungkan adalah vendor framework tersebut, jadi AMD harus bekerja sangat erat dengan mereka
Aneh bahwa AMD selama bertahun-tahun memperlakukan dukungan machine learning seolah prioritas belakang
Mungkin mereka menganggap pasar machine learning konsumen lebih kecil dibanding pasar grafis·game sehingga tidak layak diupayakan, tetapi seperti yang ditunjukkan Nvidia, ini adalah jalan menuju kontrak data center yang jauh lebih menguntungkan
Terakhir kali saya mencoba DirectML, dukungannya buruk dan software yang mendukungnya juga sedikit
Performanya pun tampak tidak terlalu bagus
Sekarang saya memakai instalasi Linux, dan berkat ROCm, saya bisa memakai alat populer seperti Automatic111 webui dan oobabooga
Jika AMD mengeluarkan GPU dengan harga masuk akal yang bisa mengalahkan Nvidia untuk machine learning, saya mungkin akan membeli GPU baru
GPU Nvidia yang layak terlalu mahal sehingga sulit dibenarkan untuk dibeli
Ini tampak seperti proyek mati
Commit terakhirnya pada Februari 2022
Sebagian besar kodenya berasal dari 3 sampai 5 tahun lalu
Saya bertanya karena belum pernah memprogram GPU secara langsung, bagaimana ini dibandingkan dengan HIP?
Apakah ini bisa menjadi lapisan abstraksi yang efisien di atas GPU Nvidia dan AMD?
Ia mengubah source CUDA menjadi abstract syntax tree, lalu matcher transformasi menelusurinya dan menghasilkan source HIP
Selain itu, daftar API CUDA yang didukung hipify-clang ada di sini: https://rocm.docs.amd.com/projects/HIPIFY/en/latest/supporte...
Saya tidak berharap banyak dari AMD
Mereka seharusnya sudah lama membuat alat kompatibilitas seperti ini
Proyek semacam ini cukup sering muncul, tetapi tidak pernah mendapatkan momentum, dan saya masih tetap memakai GPU Nvidia
Sepertinya ini pun tidak akan jauh berbeda
Cukup menarik
Jadi apakah itu berarti program saya yang dipercepat CUDA seharusnya bisa berjalan juga di perangkat AMD dan Intel?