24 poin oleh GN⁺ 2025-04-05 | 3 komentar | Bagikan ke WhatsApp
  • 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

 
aer0700 2025-04-06

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.

 
GN⁺ 2025-04-05
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

    • Membuat 100 matriks acak berukuran 5000x5000 di CPU
    • Menjumlahkan matriks di CPU
    • Waktu selesai penjumlahan matriks di CPU: 0.6541 detik
    • Ukuran matriks hasil CPU: (5000, 5000)
    • Membuat 100 matriks acak berukuran 5000x5000 di GPU
    • Menjumlahkan matriks di GPU
    • Waktu selesai penjumlahan matriks di GPU: 0.1480 detik
    • Ukuran matriks hasil GPU: (5000, 5000)
    • API-nya benar-benar sederhana, jadi layak untuk digali lebih dalam. Pemrograman CUDA tampak seperti pekerjaan besar tanpa sesuatu setingkat tinggi seperti ini
  • 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

    • Bagian Pytorch yang terkait dengan backend NVIDIA sekarang bisa diimplementasikan langsung dalam Python
    • Yang penting, hal ini tidak penting atau seharusnya tidak penting bagi pengguna akhir/pengembang
    • Mungkin platform baru ini bisa memperluas seluruh konsep komputasi GPU ke lebih banyak domain seperti game melalui Python
    • Bayangkan menjalankan game Rust terutama di GPU melalui Python
  • 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

    • Meski begitu, hampir tidak ada pengumuman atau sesi pembahasan yang terkait CPU. Grace CPU sudah diumumkan cukup lama, tetapi tampaknya kita tidak akan segera melihat abstraksi umum yang bekerja mulus di CPU dan GPU Nvidia
    • Bagi orang yang bekerja dengan algoritma paralel setiap hari, ini adalah masalah. Debugging dengan NSight dan CUDA-GDB masih belum seperti GDB mentah, dan jauh lebih mudah merancang algoritma di CPU terlebih dahulu lalu memindahkannya ke GPU
    • Dari semua tim di bidang compiler, Modular adalah salah satu dari sedikit tim yang tidak sepenuhnya terseret demam LLM dan justru aktif membangun abstraksi serta bahasa yang mencakup banyak platform. Ini makin berharga di lingkungan seperti sekarang. Saya berharap lebih banyak orang bereksperimen dengan Mojo. Mungkin itu akhirnya bisa menjembatani kesenjangan CPU-GPU yang kita hadapi setiap hari
  • Saya sangat penasaran bagaimana perbandingannya dengan JAX

    • JAX memungkinkan Anda menulis kode Python yang berjalan di GPU bukan hanya dari Nvidia tetapi juga merek lain (meski dukungannya beragam). Demikian pula, ia punya pengganti drop-in untuk fungsi NumPy
    • Ini hanya mendukung Nvidia. Tapi apakah ini bisa melakukan hal yang tidak bisa dilakukan JAX? Apakah lebih mudah digunakan? Apakah kurang berorientasi pada array berukuran tetap? Apakah layak mengunci diri pada GPU dari satu merek?
  • Ini luar biasa. Orang yang sebelumnya mempertimbangkan AMD + ROCm sebagai alternatif NVIDIA di bidang AI mungkin tidak akan melakukannya lagi

    • Saya salah satu orang yang tidak berhasil belajar C++ sampai cukup bisa menulis kode secara efektif untuk eksekusi GPU (dan mungkin tidak akan belajar). Tapi melalui Python, saya bisa punya pipeline langsung ke GPU. Menakjubkan
    • Implikasi efisiensinya sangat besar. Bukan hanya untuk library Python seperti PyTorch, tetapi untuk segala hal yang berjalan di GPU NVIDIA
    • Saya suka melihat peningkatan efisiensi. Kita terus-menerus mendengar berapa banyak pembangkit listrik tenaga nuklir yang mungkin dibutuhkan OpenAI dan Google untuk menjalankan semua GPU mereka
  • 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

    • Model PEP adalah sarana yang baik untuk perbaikan diri dan standardisasi. Berkat proyek seperti uv dan BeeWare, packaging dan deployment tampaknya akan segera menjadi masalah yang terselesaikan. Saya yakin peningkatan performa akan terus berlanjut setiap tahun
  • 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

 
iwi19 2025-04-06

Apakah kecepatan yang pertama itu benar? Kok terasa sangat lambat...