1 poin oleh GN⁺ 2023-07-03 | 1 komentar | Bagikan ke WhatsApp
  • 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.hpp dan menggunakan namespace vuda::, sementara vuda_runtime.hpp membungkus 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 dengan vuda::launchKernel("add.spv", "main", ...)
  • Item dokumentasi mencakup Change List, Setup and Compilation, Deviations from CUDA, dan Implementation Details

1 komentar

 
GN⁺ 2023-07-03
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

    • Tadinya sempat berharap ini berarti kode CUDA bisa dijalankan di GPU AMD, tapi setelah membaca penjelasannya ternyata bukan begitu
    • Kalau begitu, saya jadi penasaran ini berguna untuk apa
    • Kalau ingin mengklaim diri sebagai pengganti CUDA, perlu dukungan PTX dan dukungan pengembangan untuk berbagai bahasa
      Kalau tidak, untuk banyak beban kerja bahkan tidak bisa mulai
    1. Ini adalah implementasi API gaya C yang kasar
      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
    2. Mengimplementasikan Runtime API bukan pilihan yang tepat
      Untuk hal-hal seperti isolasi konteks atau penambahan dinamis kernel JIT yang baru dikompilasi sebagai modul, yang penting justru implementasi Driver API
    3. Proyek ini bahkan tidak sampai 3000 baris
      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

    • Hotz bukan hanya membicarakan library user-space, tetapi juga driver

      The software is terrible! There’s kernel panics in the driver. You have to run a newer kernel than the Ubuntu default to make it remotely stable. I’m still not sure if the driver supports putting two cards in one machine, or if there’s some poorly written global state. When I put the second card in and run an OpenCL program, half the time it kernel panics and you have to reboot.
      Ia memang juga membahas sisi user-space, tetapi jelas ia melihat ada banyak hal yang perlu dibenahi di seluruh stack di atas dan di bawah library seperti ini

    • Saya menemukan https://www.youtube.com/watch?v=Mr0rWJhv9jU dan https://geohot.github.io/blog/jekyll/update/2023/06/07/a-div...
      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

    • Saya tidak yakin apakah DirectML lebih masuk akal dibanding AMD mengejar kompatibilitas CUDA lewat ROCm/MiOpen/HIP
      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
    • Saya penasaran bagaimana ini benar-benar bekerja
      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
    • Apakah itu benar-benar bisa?
      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

    • Bahkan commit itu pun hanya menambahkan satu baris
      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?

  • 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?