Proyek Rust CUDA Dimulai Kembali Setelah Bertahun-tahun Tidak Aktif, Menghadapi Persaingan dari Cudarc

BigGo Editorial Team
Proyek Rust CUDA Dimulai Kembali Setelah Bertahun-tahun Tidak Aktif, Menghadapi Persaingan dari Cudarc

Proyek Rust CUDA, sebuah inisiatif ambisius yang bertujuan menjadikan Rust sebagai bahasa tier-1 untuk komputasi GPU menggunakan toolkit CUDA dari NVIDIA, telah dimulai kembali setelah bertahun-tahun tidak aktif. Perkembangan ini terjadi di saat komunitas Rust sedang mencari solusi yang dapat diandalkan untuk pemrograman GPU, dengan hasil yang beragam di berbagai proyek.

Proyek ini bertujuan menyediakan alat untuk mengompilasi Rust ke kode PTX dan pustaka untuk menggunakan pustaka CUDA yang sudah ada. Namun, diskusi komunitas mengungkapkan tantangan signifikan dan solusi pesaing yang telah muncul selama periode tidak aktifnya.

Sejarah Proyek dan Status Saat Ini

Proyek Rust CUDA memiliki sejarah yang tidak mulus menurut komentar pengguna. Selama bertahun-tahun, proyek ini berada dalam kondisi yang digambarkan pengguna sebagai tidak dapat digunakan dan tidak terawat, membutuhkan varian spesifik berusia beberapa tahun dari kompiler Rust (rustc) dan CUDA untuk berfungsi dengan baik. Pengumuman dimulainya kembali proyek ini menandakan upaya untuk menghidupkan kembali proyek tersebut, meskipun tampaknya belum ada rilis resmi yang berfungsi dengan versi Rust dan CUDA saat ini.

Periode tidak aktif ini menciptakan kesenjangan dalam ekosistem yang coba diisi oleh proyek-proyek lain. Struktur proyek ini cukup luas, mencakup beberapa crate termasuk rustc_codegen_nvvm (backend rustc yang menargetkan NVVM IR), cuda_std (untuk fungsi sisi GPU), cudnn (untuk jaringan saraf dalam), dan cust (untuk fitur CUDA sisi CPU), di antara yang lainnya.

Persaingan dari Cudarc

Sementara Proyek Rust CUDA tidak aktif, pustaka lain bernama Cudarc telah mendapatkan daya tarik yang signifikan dalam komunitas. Beberapa pengguna melaporkan berhasil menggunakan Cudarc dalam lingkungan profesional, memuji kompatibilitasnya dengan versi Rust dan CUDA terbaru.

Ringkasnya, dari seseorang yang menggunakan CUDA pada rust dalam beberapa proyek: Pustaka Cudarc dikelola secara aktif, dan berfungsi dengan baik. Namun, pustaka ini tidak memungkinkan Anda berbagi struktur data host dan device; Anda akan [de]serialisasi sebagai aliran byte, menggunakan fungsi yang disediakan lib. Berfungsi pada versi CUDA dan GPU apa pun (setidaknya dalam beberapa tahun terakhir).

Perbedaan utama tampaknya adalah bahwa Cudarc memerlukan serialisasi antara struktur data host dan device, sementara Proyek Rust CUDA bertujuan untuk memungkinkan berbagi tipe antara host dan GPU. Perbedaan ini mewakili pertukaran mendasar antara kegunaan langsung dan pengalaman pemrograman yang lebih mulus.

Kekhawatiran Independensi Platform

Perdebatan signifikan dalam komunitas berpusat pada fokus eksklusif proyek pada CUDA dari NVIDIA. Beberapa pengguna berpendapat bahwa mengikat pemrograman GPU Rust ke teknologi vendor tunggal menciptakan jalan buntu yang membatasi adopsi yang lebih luas di berbagai platform perangkat keras.

Pendukung CUDA menunjuk pada ekosistem alat yang superior, termasuk integrasi IDE, debugging grafis, dan pustaka yang luas. Mereka berpendapat bahwa alternatif seperti OpenCL, shader komputasi Vulkan, dan SYCL kurang mendukung polyglot dan pengalaman pengembang yang disediakan CUDA.

Yang lain mengadvokasi pendekatan independen platform yang akan berfungsi di perangkat keras NVIDIA, AMD, Intel, dan Apple, menyarankan bahwa Rust harus menargetkan representasi perantara yang kemudian dapat dikompilasi ke berbagai arsitektur GPU. Pendekatan ini akan memprioritaskan kompatibilitas lintas platform daripada optimasi khusus yang ditawarkan CUDA.

Pilihan Utama Komputasi GPU Rust

  • Rust CUDA Project

    • Status: Baru-baru ini dihidupkan kembali setelah bertahun-tahun tidak aktif
    • Tujuan: Memungkinkan struktur data bersama antara host dan GPU
    • Komponen: rustc_codegen_nvvm, cuda_std, cudnn, cust, gpu_rand, optix
    • Lisensi: Berlisensi ganda di bawah Apache 2.0 dan MIT
  • Cudarc

    • Status: Aktif dipertahankan
    • Kompatibilitas: Bekerja dengan versi Rust dan CUDA terbaru
    • Keterbatasan: Memerlukan serialisasi antara data host dan perangkat
    • GitHub: https://github.com/coreylowman/cudarc
  • Proyek Terkait Lainnya

    • rust-gpu: Backend kompiler untuk mengkompilasi Rust ke SPIR-V untuk shader
    • glassful (2016): Subset dari Rust yang mengkompilasi ke GLSL
    • inspirv-rust (2017): Kompiler eksperimental Rust MIR -> SPIR-V
    • nvptx (2018): Menggunakan backend LLVM PTX
    • accel (2020): Pustaka tingkat lebih tinggi menggunakan mekanisme nvptx
    • risl (2020): Kompiler eksperimental Rust -> SPIR-V

Adopsi Industri dan Prospek Masa Depan

Diskusi komunitas mengungkapkan wawasan menarik tentang potensi minat NVIDIA pada Rust. Seorang pengguna menyebutkan percakapan dengan seseorang dari tim CUDA Core Compute Libraries yang mengisyaratkan bahwa dalam 5 tahun ke depan, NVIDIA bisa mendukung Rust sebagai bahasa untuk memprogram GPU CUDA. Pengguna lain mencatat bahwa NVIDIA sudah menggunakan Rust di Dynamo, kerangka inferensi throughput tinggi latensi rendah mereka, meskipun API publiknya berbasis Python.

Pertanyaan mengapa NVIDIA belum berinvestasi lebih banyak dalam ekosistem Rust tetap terbuka, dengan beberapa menyarankan bahwa perusahaan mungkin menunggu untuk melihat nilai bisnis yang cukup sebelum mengalokasikan sumber daya.

Saat proyek dimulai kembali, para pengelolanya secara aktif mencari kontributor, mengakui bahwa ada banyak pekerjaan di depan dan bahwa mereka semua memiliki pekerjaan sehari-hari. Keberhasilan kebangkitan ini kemungkinan akan bergantung pada membangun momentum komunitas yang cukup untuk mengatasi tantangan teknis yang sebelumnya menghambat proyek.

Bagi pengembang yang membutuhkan kemampuan komputasi GPU di Rust saat ini, konsensus komunitas tampaknya mendukung Cudarc untuk aplikasi praktis, sambil tetap memperhatikan kemajuan Proyek Rust CUDA menuju tujuan yang lebih ambisius yaitu integrasi host-device yang mulus.

Referensi: The Rust CUDA Project