24 poin oleh GN⁺ 2025-04-05 | 2 komentar | Bagikan ke WhatsApp
  • CUDA diperluas melampaui ekosistem yang berpusat pada C/C++, ke arah yang memungkinkan developer Python menangani komputasi GPU NVIDIA secara lebih langsung
  • Dukungan baru ini bukan sekadar binding, melainkan upaya untuk mengintegrasikan antarmuka Python dan alur scripting ke seluruh toolkit CUDA
  • Stack CUDA Python mencakup binding dasar, kompiler runtime, cuPyNumeric, CUDA Core, NVMath Python, profiler, hingga alat analisis kode
  • NVIDIA ingin meningkatkan produktivitas Python dengan memanfaatkan kompilasi JIT dan koneksi ke kode C++ yang sudah ada, sambil menjaga perbedaan performa tetap kecil
  • Antarmuka CuTile adalah model yang memudahkan developer Python memahami dan men-debug pekerjaan GPU dalam satuan array dan tile alih-alih thread

Python native hadir di CUDA

  • Menurut survei open source GitHub 2024, Python telah melampaui JavaScript dan menjadi bahasa pemrograman paling populer di dunia
  • Toolkit perangkat lunak CUDA milik NVIDIA selama bertahun-tahun tidak memiliki dukungan Python native, tetapi di GTC diumumkan dukungan native dan integrasi penuh
  • Developer kini dapat langsung menulis komputasi algoritmik yang berjalan di GPU NVIDIA dengan Python
  • Arsitek CUDA Stephen Jones mengatakan bahwa ia telah bekerja untuk menghadirkan “accelerated Python” sebagai dukungan kelas satu di stack CUDA
  • Arah baru ini bukan memindahkan C ke sintaks Python, melainkan membuat CUDA Python yang terasa alami bagi developer Python

Memperluas basis developer Python

  • Sebelumnya CUDA membutuhkan pengetahuan C++ atau Fortran, dan meskipun ada beberapa alat Python, itu bukan dukungan native
  • Dukungan Python native membuka alat pengembangan CUDA bagi jutaan developer Python
  • Menurut The Futurum Group, jumlah pengguna CUDA meningkat dari 2 juta pada 2020 menjadi 4 juta pada 2023
  • Python adalah bahasa yang tumbuh cepat, dan NVIDIA kini juga bisa menjangkau developer Python di negara berkembang seperti India dan Brasil
  • Sebagian besar GPU NVIDIA berada di AS dan Eropa, tetapi perusahaan telekomunikasi dan infrastruktur di India sedang membangun instalasi GPU besar yang akan dioperasikan ke depan
  • NVIDIA terus berupaya merekrut programmer dan ingin mendukung lebih banyak bahasa pemrograman termasuk Rust dan Julia

Susunan stack CUDA yang Pythonic

  • CUDA mencakup library, SDK, kompiler, host runtime, alat, serta perangkat lunak dan algoritme yang sudah dipaketkan sebelumnya
  • NVIDIA menambahkan komponen di seluruh Pythonic CUDA stack
  • Tujuan utamanya adalah menghadirkan akselerasi GPU tanpa harus keluar dari Python
  • Menurut Jones, CUDA Python tidak boleh berhenti pada penyediaan kernel saja, melainkan memerlukan seluruh stack dan alur eksekusi yang mulus
    • Harus bisa menulis kernel lalu memasukkannya ke PyTorch
    • Juga harus bisa memanggil library Pythonic dan komponen lainnya
  • Lapisan kompiler pada dasarnya dibangun dengan fokus pada kompilasi JIT, sehingga sangat mengurangi dependency tree pada stack GPU
  • Interoperabilitas antar lapisan penting untuk peningkatan produktivitas saat menggunakan Python secara end-to-end

CUDA Core, cuPyNumeric, NVMath Python

  • Pada tahap awal, NVIDIA membangun binding Python dasar dan library Python termasuk kompiler runtime
  • cuPyNumeric adalah pengganti drop-in untuk NumPy, library komputasi yang banyak digunakan di Python
    • Cukup ubah satu pernyataan import, dan kode NumPy akan berjalan di GPU alih-alih CPU
  • Dalam setahun terakhir, NVIDIA membuat CUDA Core, yang menurut Jones merupakan hasil membayangkan ulang runtime CUDA sebagai Python yang alami dan native
  • CUDA Core mengikuti alur eksekusi Python, berjalan sepenuhnya di dalam proses, dan sangat bergantung pada kompilasi JIT
  • NVIDIA juga membuat NVMath Python, yang menyediakan antarmuka terpadu untuk pemanggilan library di sisi host maupun sisi device
  • Menurut Jones, kemampuan untuk menggabungkan pemanggilan library dapat menghasilkan peningkatan performa yang besar
  • NVIDIA juga membangun library yang memungkinkan akses langsung dari kode Python ke library C++ yang dipercepat
    • Bukan mengimplementasikannya ulang di Python, tetapi menghubungkan kode C++ yang sudah disetel dengan sangat rinci
    • Jones menilai pendekatan ini membuat perbedaan performa menjadi bisa diabaikan
  • Alat untuk profiler dan penganalisis kode juga ditambahkan

Model pemrograman CuTile

  • Python memudahkan penulisan kode tanpa terlalu memikirkan detail perangkat keras, dan NVIDIA sedang menambahkan lapisan pemrograman yang cocok dengan abstraksi tingkat lebih tinggi untuk eksekusi GPU
  • Model pemrograman baru, antarmuka CuTile, pertama kali dikembangkan untuk CUDA Pythonic, lalu ekstensi C++ CUDA akan menyusul
  • CuTile dirancang berdasarkan fakta bahwa developer Python, tidak seperti developer C++, cenderung berpikir berpusat pada array daripada thread
  • Kode Python tidak bisa secara ajaib diekspor begitu saja untuk akselerasi GPU
    • CUDA umumnya membagi masalah menjadi ribuan blok kecil
    • Blok dibagi lagi menjadi tile yang lebih kecil
    • Di dalam tile, ribuan thread memproses elemen tunggal
    • Thread-thread itu bergabung untuk menjalankan satu operasi
  • Kemampuan komputasi besar GPU berasal dari kemampuannya memproses paralel hingga level thread untuk elemen tunggal
  • NVIDIA menilai eksekusi GPU tidak harus selalu turun sampai level thread, dan bisa ditangani juga pada tahap menengah level tile
  • CuTile memetakan array ke GPU secara efisien pada tingkat yang kurang rinci, sehingga lebih mudah memahami dan men-debug kode
  • Menurut Jones, pendekatan ini pada dasarnya menghasilkan performa yang sama
  • Data dalam tile bisa berupa vektor, tensor, atau array
  • Kompiler dapat lebih baik dalam memetakan operasi seluruh array ke GPU dalam thread block, dan Jones menilai kompiler sering kali lebih baik daripada dirinya sendiri karena memahami detail eksekusi GPU secara mendalam
  • Tidak seperti C++, Python sejak desainnya bukan bahasa yang bersifat rinci, dan Jones menyebut Triton dari OpenAI sebagai contoh yang cocok secara alami untuk program Python

2 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.

 
iwi19 2025-04-06

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