1 puan yazan GN⁺ 2023-07-03 | 1 yorum | WhatsApp'ta paylaş
  • VUDA, GPU hızlandırmalı uygulamalar yazmak için CUDA Runtime API arayüzü sağlayan, Vulkan tabanlı yalnızca başlık dosyasından oluşan bir kütüphanedir
  • Özellikler, mümkün olan kapsamda CUDA runtime spesifikasyonunu izler; genel kullanım için NVIDIA CUDA Runtime API başvuru belgeleri kullanılabilir
  • Tüm özelliklere vuda.hpp eklenip vuda:: ad alanı kullanılarak erişilebilir; vuda_runtime.hpp, CUDA işlevlerini sarar ve yeniden yönlendirir
  • Örnek iş akışı, cudaSetDevice, cudaMalloc, cudaMemcpy, cudaFree gibi CUDA Runtime API çağrılarını kullanır ve NVCC olmadığında vuda::launchKernel("add.spv", "main", ...) ile Vulkan shader module çalıştırılır
  • Belge başlıkları olarak Change List, Setup and Compilation, Deviations from CUDA, Implementation Details sunulur

1 yorum

 
GN⁺ 2023-07-03
Hacker News yorumları
  • Bu, CUDA implementasyonu değil, CUDA runtime API implementasyonu.
    Bu API kart yapılandırması, bellek ayırma/kopyalama ve kernel çalıştırma için kullanılır.
    Önemli nokta, bununla GPU üzerinde gerçekten çalışan kernel kodu yazılamaması.

    • AMD GPU'da CUDA kodu çalıştırabildiği anlamına mı geliyor diye biraz umutlanmıştım ama açıklamaya bakınca öyle değilmiş.
    • O halde bunun nerede işe yaradığı merak konusu.
    • Kendini CUDA alternatifi olarak konumlandıracaksa PTX desteği ve çeşitli dillerde geliştirme desteği gerekir.
      Aksi halde birçok iş yükünde daha başlayamaz bile.
    1. Bu, kaba bir C tarzı API'nin implementasyonu.
      Otomatik hata denetimi, RAII kaynak kontrolü vb. sunan modern bir C++ API sarmalayıcısı da var: https://github.com/eyalroz/cuda-api-wrappers
      Bu arada yazarı benim.
    2. Runtime API'yi implement etmek doğru tercih değil.
      Context izolasyonu ya da yeni derlenmiş JIT kernel'lerini modül olarak dinamik ekleme gibi işler için driver API implementasyonu önemli.
    3. Bu proje 3000 satırı bile bulmuyor.
      Temel CUDA API'nin tamamını, yani driver, runtime, NVTX, CUDA-C++ ve PTX JIT derlemeyi sarmalamak 14.000'den fazla satır gerektirdi.
  • George Hotz'un sözünü ettiği, AMD çiplerinde makine öğrenimini mümkün kılma ve Nvidia hakimiyetini kırma hedefiyle bunun nasıl bir ilişkisi olduğunu merak ediyorum.
    Uzman değilim ama bu yaklaşım güçlü ve önemli görünüyor.
    Yalnız sistem o kadar karmaşık ki bir kişinin bunu yapıp yapamayacağı şüpheli; başlamak için kurumsal destek gerekiyor gibi.
    AMD'nin doğrudan mühendislik maliyetini üstlenip bunu yinelemeli olarak geliştirmeye ilgi duyması mümkün değil mi?

    • Hotz sadece user-space kütüphanelerden değil, driver'dan da söz ediyor.

      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.
      User-space tarafını da ele alıyor ama bu tür kütüphanelerin üstünde ve altında yer alan tüm stack'te düzeltilecek çok yer olduğunu düşündüğü açık.

    • https://www.youtube.com/watch?v=Mr0rWJhv9jU ve https://geohot.github.io/blog/jekyll/update/2023/06/07/a-div... bağlantılarını buldum.
      AMD kullanırken yaşadığım yolculuk konusunda şimdi biraz daha rahatım.
      GPU driver'larında büyük sorunlar var gibi görünüyordu; sadece benim yaşamadığımı öğrenmiş oldum.
  • Windows'ta AMD GPU kullanıp makine öğrenimi modellerini eğitmek veya çalıştırmak isteyenler torch-directml ve tensorflow-directml'e bakabilir.

    • AMD'nin ROCm/MiOpen/HIP ile CUDA uyumluluğunu kovalamaktansa DirectML'in daha mantıklı olup olmadığından emin değilim.
      CUDA ve DirectX çok farklı donanımların, yani AMD ve Nvidia'nın üzerinde performanstan fazla ödün vermeden ortak bir API olarak kullanılmak için fazla düşük seviyeli görünüyor.
      cuDNN daha yüksek seviyeli, bu yüzden AMD ve Nvidia donanımı için ayrı kernel implementasyonları bulundururken performans kaybı olmadan uyumluluk sağlama şansı daha yüksek.
      Ama PyTorch gibi framework'lerin yaptığı işin önemli bir kısmı yalnızca cuDNN'e değil, özel kernel'lere dayanıyor.
      AMD için en iyi seçenek, sarsılmaz derecede sağlam bir düşük seviyeli API ile bunun üzerinde PyTorch, TensorFlow ve JAX gibi framework üreticilerinin destek inşa etmesini kolaylaştıracak yüksek seviyeli optimize makine öğrenimi derleyicisi desteği gibi görünüyor.
      Sonuçta bundan fayda sağlayan taraf framework üreticileri olacağından, AMD'nin onlarla çok yakın çalışması gerekiyor.
      AMD'nin yıllardır makine öğrenimi desteğini ikinci plana atmış gibi davranması tuhaf.
      Tüketici makine öğrenimi pazarını grafik/oyun pazarına kıyasla küçük görüp çabaya değmez saymış olabilirler, ama Nvidia'nın gösterdiği gibi bu, çok daha kârlı veri merkezi anlaşmalarına açılan bir yol.
    • Pratikte bunun nasıl çalıştığını merak ediyorum.
      DirectML'i en son denediğimde destek zayıftı ve bunu destekleyen yazılım azdı.
      Performans da pek iyi görünmüyordu.
      Şimdi Linux kurulumunu kullanıyorum; ROCm sayesinde Automatic111 webui ve oobabooga gibi popüler araçları kullanabiliyorum.
    • Bu gerçekten çalışıyor mu?
      AMD, makul fiyata makine öğreniminde Nvidia'yı geçen GPU'lar çıkarırsa yeni bir GPU alabilirim.
      Düzgün bir Nvidia GPU çok pahalı; satın almayı haklı çıkarmak zor.
  • Ölü bir proje gibi görünüyor.
    Son commit Şubat 2022'de.

    • Üstelik o commit de yalnızca tek satırlık bir eklemeymiş.
      Kodun büyük kısmı 3 ila 5 yıl öncesine ait.
  • GPU'yu doğrudan hiç programlamadım, o yüzden soruyorum: Bu, HIP ile kıyaslandığında nasıl?
    Nvidia ve AMD GPU'ları üzerinde verimli bir soyutlama katmanı olabilir mi?

  • AMD'den umutlu değilim.
    Uyumluluk araçlarını çoktan yapmış olmaları gerekirdi.

  • Bu tür projeler epey sık çıkıyor ama ivme kazanamıyor; ben de hâlâ Nvidia GPU kullanıyorum.
    Bunun da çok farklı olacağını sanmıyorum.

  • Oldukça ilginç.
    O zaman bu, CUDA hızlandırmalı programımı AMD ve Intel cihazlarda da çalıştırabilmem gerektiği anlamına mı geliyor?