VUDA: CUDA'nın Vulkan Uygulaması
(github.com/jgbit)- 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.hppeklenipvuda::ad alanı kullanılarak erişilebilir;vuda_runtime.hpp, CUDA işlevlerini sarar ve yeniden yönlendirir - Örnek iş akışı,
cudaSetDevice,cudaMalloc,cudaMemcpy,cudaFreegibi CUDA Runtime API çağrılarını kullanır ve NVCC olmadığındavuda::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
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ı.
Aksi halde birçok iş yükünde daha başlayamaz bile.
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.
Context izolasyonu ya da yeni derlenmiş JIT kernel'lerini modül olarak dinamik ekleme gibi işler için driver API implementasyonu önemli.
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?
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.
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.
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.
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.
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?
CUDA kaynağını bir soyut sözdizim ağacına dönüştürüyor, ardından dönüşüm eşleştiricisi bunu dolaşıp HIP kaynağını üretiyor.
Ayrıca hipify-clang'ın desteklediği CUDA API listesi burada: https://rocm.docs.amd.com/projects/HIPIFY/en/latest/supporte...
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?