NVIDIA akhirnya menambahkan dukungan Python native ke CUDA
(thenewstack.io)- Setelah bertahun-tahun berfokus pada C/C++, toolkit CUDA milik NVIDIA kini secara resmi menambahkan dukungan Python native di GTC 2024
- Kini algoritma dan komputasi berkecepatan tinggi dapat dijalankan langsung di GPU hanya dengan Python
- Arsitek CUDA Stephen Jones menjelaskan bahwa “Python CUDA bukan sekadar memindahkan kode C ke sintaks Python,
melainkan dirancang ulang sepenuhnya dengan cara yang terasa alami bagi pengembang Python”
Kemungkinan baru yang dibuka oleh dukungan Python native
- Sebelumnya pengguna CUDA harus memahami C++ atau Fortran, tetapi kini komputasi GPU berperforma tinggi juga bisa dilakukan hanya dengan Python
- Menurut survei open source GitHub 2024, Python menyalip JavaScript dan menjadi bahasa paling populer
- Jumlah pengguna CUDA meningkat dari 2 juta pada 2020 menjadi 4 juta pada 2023,
sementara pengembang Python berjumlah puluhan juta, sehingga ini menjadi kabar sangat baik terutama bagi pengembang di negara berkembang seperti India dan Brasil - Hal ini juga diharapkan berdampak positif pada perluasan infrastruktur GPU global
Cara penyusunan Pythonic CUDA
- CUDA terdiri dari library, SDK, compiler, runtime, tools, algoritma, dan lainnya
- Integrasi Python bukan sekadar menyediakan kernel, tetapi menyusun seluruh stack agar ramah Python
- Pendekatan utamanya: berbasis kompilasi JIT (Just-In-Time), dengan ketergantungan seminimal mungkin pada compiler
Komponen utama
- cuPyNumeric: library Python yang menyediakan API yang sama dengan NumPy sambil mendukung akselerasi GPU
- CUDA Core: sistem berbasis alur eksekusi yang mendesain ulang CUDA runtime dengan pendekatan Python
- NVMath Python: menyediakan antarmuka terpadu untuk memanggil library host/device
- Menyediakan API Python yang dapat terhubung langsung dengan library C++ berperforma tinggi
- Alat analisis performa dan analisis kode juga disediakan
> “Karena terhubung langsung dengan kode C++ berperforma tinggi yang sudah ada, hampir tidak ada kehilangan performa” — Stephen Jones
Model pemrograman baru: CuTile
- Model tingkat tinggi yang berpusat pada array dan dirancang untuk pengembang Python
- Jika CUDA lama menuntut kontrol detail berbasis thread, CuTile menawarkan struktur yang lebih ringkas dan mudah dipahami lewat abstraksi berbasis tile
- Dengan memetakan array ke unit tile GPU, CuTile membuat debugging dan optimasi lebih mudah sambil tetap mempertahankan performa
- Ke depannya juga direncanakan untuk diperluas ke C++ CUDA
> “Karena compiler dapat memahami struktur GPU dengan lebih baik, optimasi performa juga bisa dilakukan secara otomatis dengan lebih baik”
Ringkasan
- Integrasi Python native ke CUDA merupakan perubahan besar yang menurunkan hambatan masuk untuk pemrograman GPU
- Tanpa perlu pengetahuan bahasa yang rumit seperti sebelumnya, kini komputasi AI/sains di GPU bisa dilakukan hanya dengan Python
- Ini menjadi titik balik penting yang membuka era baru bagi perluasan ekosistem AI berbasis Python dan pemanfaatan GPU NVIDIA
3 komentar
Apakah ini bakal lebih cepat daripada wrapper CUDA yang sudah ada seperti CuPy dan PyTorch. Kelebihan CuPy dan torch adalah API-nya hampir sama persis dengan NumPy, jadi kode uji yang sebelumnya ditulis dengan NumPy bisa dipindahkan tanpa banyak usaha. Untuk yang ini, sepertinya harus dicoba dulu.
Komentar Hacker News
Saya bukan programmer GPU, tetapi sepertinya ini akan mudah digunakan bahkan oleh orang seperti saya. Saya mencoba membuat demo sederhana yang memakai GPU dan CPU. Hasilnya sebagai berikut
Saya penasaran kenapa Python menjadi target untuk hal-hal seperti ini. Saya sudah melihat banyak proyek menambahkan dukungan Python. Saya penasaran apakah codebase Python lebih mudah dikompilasi ke berbagai target dibandingkan yang lain
Syukurlah Pytorch sudah mendapatkan momentum besar sebelum ini muncul. Sekarang kita punya semacam semi-standar yang benar-benar lintas platform untuk komputasi paralel. Tidak terbatas pada NVIDIA
CuTile terasa seperti penerus Triton dari OpenAI dalam banyak hal. Bukan hanya primitive tingkat tile/blok dan TileIR, tetapi juga model pemrograman SIMT yang layak di CuPy. Sepertinya ini juga tidak terlalu diperhatikan banyak orang di GTC tahun ini. Sangat keren
Saya sangat penasaran bagaimana perbandingannya dengan JAX
Ini luar biasa. Orang yang sebelumnya mempertimbangkan AMD + ROCm sebagai alternatif NVIDIA di bidang AI mungkin tidak akan melakukannya lagi
Apakah dukungan Rust berikutnya? Saat ini saya secara manual melakukan [de]serialisasi struktur data saya menjadi array byte ke/dari kernel. Akan sangat bagus jika ada struktur data yang benar-benar bisa dibagikan seperti yang diberikan CUDA di C++
Python benar-benar sedang memantapkan dirinya sebagai lingua franca bahasa pemrograman. Adopsinya melonjak dalam renaisans FOSS, dan saya rasa ini adalah alat serbaguna yang paling mendekati yang kita punya
Ini kemungkinan akan mendorong apa yang selama ini biasanya didorong Python, yaitu lebih banyak hal dicoba lebih cepat dan sisanya ditinggalkan ke bahasa yang lebih cepat. Secara keseluruhan ini langkah yang bagus. Saya jelas menantikan untuk bermain-main dengan ini
CUDA lahir dari C dan C++. Saya berharap mereka benar-benar mengimplementasikan varian C untuk CUDA, alih-alih memperluas C++ dan menyebutnya CUDA C
Apakah kecepatan yang pertama itu benar? Kok terasa sangat lambat...