12 puan yazan GN⁺ 2024-07-16 | 1 yorum | WhatsApp'ta paylaş
  • SCALE, CUDA uygulamalarını AMD GPU'lar için yerel olarak derlemeyi mümkün kılan bir GPGPU programlama araç takımıdır
  • CUDA programlarını veya build sistemini değiştirmek gerekmez; ayrıca daha fazla GPU üreticisi ve CUDA API desteği geliştirilmektedir

Nasıl çalışıyor?

  • SCALE, diğer çapraz platform GPGPU çözümleriyle karşılaştırıldığında birkaç önemli yenilik sunar
    • CUDA programlarını olduğu gibi kabul eder. Başka bir dile port etmeye gerek yoktur. Bu, program inline PTX asm kullansa bile geçerlidir
    • SCALE derleyicisi, nvcc ile aynı komut satırı seçeneklerini ve CUDA lehçesini kabul ederek drop-in replacement olarak çalışır
    • NVIDIA CUDA Toolkit kurulumunu "taklit ederek" mevcut build araçları ve script'lerin aynen çalışmasını sağlar

Hangi projeler test edildi?

  • SCALE, açık kaynak CUDA projeleri derlenip testler çalıştırılarak doğrulandı
  • Şu anda aşağıdaki açık kaynak projeler gece otomatik testlerine dahildir ve tamamı başarıyla geçmektedir
    • NVIDIA Thrust, Blender Cycles, AMGX, llama-cpp, faiss, xgboost, GOMC, stdgpu, hashcat

Hangi GPU'lar destekleniyor?

  • Aşağıdaki GPU hedefleri desteklenmektedir ve Nightly testlerine dahildir
    • AMD gfx1030 (Navi 21, RDNA 2.0)
    • AMD gfx1100 (Navi 31, RDNA 3.0)
  • Aşağıdaki GPU hedefleri ara sıra manuel testlerden geçmiştir ve "çalışıyor gibi görünmektedir"
    • AMD gfx1010
    • AMD gfx1101
  • Aşağıdaki GPU desteği üzerinde çalışılmaktadır
    • AMD gfx900 (Vega 10, GCN 5.0)
  • Belirli bir AMD GPU mimarisi desteğini hızlıca istiyorsanız iletişime geçin

SCALE'in bileşenleri

  • AMD GPU'lar için nvcc lehçesi CUDA'yı, PTX asm dahil, derleyebilen nvcc uyumlu bir derleyici
  • AMD GPU'lar için CUDA runtime ve driver API implementasyonu
  • ROCm kütüphanelerine devrederek "CUDA-X" API sağlayan açık kaynak wrapper kütüphaneleri. cuBLAS ve cuSOLVER gibi kütüphaneler bu şekilde ele alınır

SCALE ile diğer çözümler arasındaki farklar

  • SCALE, yeni bir GPGPU yazılımı yazma yöntemi sunmak yerine, yaygın olarak kullanılan CUDA diliyle yazılmış programların doğrudan AMD GPU'lar için derlenmesini sağlar
  • SCALE, NVIDIA CUDA ile tam uyumluluğu hedefler. Kullanıcıların birden fazla kod tabanını sürdürmeden veya performanstan ödün vermeden birden fazla GPU üreticisini destekleyebilmesi gerektiğini savunur
  • SCALE'in dili, NVIDIA CUDA'nın bir süper kümesi olup nvcc'den uzaklaşmak isteyen kullanıcılar için GPU kodu yazmayı daha kolay ve verimli hale getiren isteğe bağlı dil genişletmeleri sunar
  • SCALE hâlâ geliştirilmekte olan bir çalışmadır. Kullanımınızı engelleyen eksik bir API varsa iletişime geçin; geliştirme öncelikleri buna göre ayarlanacaktır

GN⁺ Özeti

  • SCALE, CUDA uygulamalarını AMD GPU'lar için yerel olarak derlemeyi mümkün kılan önemli bir araç takımıdır
  • Mevcut CUDA programlarını değiştirmeden AMD GPU'larda çalıştırabilmesi, geliştiriciler için büyük bir avantaj sağlar
  • NVIDIA CUDA ile tam uyumluluğu hedeflemesi, birden fazla GPU üreticisini destekleme açısından avantaj sağlar
  • Devam eden bir proje olduğu için, ihtiyaç duyulan API'ler eksikse geliştirme ekibiyle iletişime geçilip öncelikler ayarlanabilir
  • Benzer işlevlere sahip projeler arasında ROCm ve HIP bulunur

1 yorum

 
GN⁺ 2024-07-16
Hacker News yorumları
  • Birçok kişi AMD'nin bir çeviri katmanını desteklemesi gerektiğini düşünüyor, ancak bunun kötü bir fikir olduğu yönünde bir görüş var

    • CUDA, üretici bağımsız olacak şekilde tasarlanmadı ve Nvidia teknik ve hukuki olarak zorluk çıkarabilir
    • Örneğin cuDNN veya cuBLAS'ı bunun üzerinde çalıştırmak lisans sözleşmesini ihlal edebilir
    • Bu Nvidia kütüphaneleri, AMD'nin yeniden uygulayıp desteklemesi gereken API sınırının bir parçası olacaktır
  • Hata uyumluluğunu hedeflemenin aptalca olduğu yönünde bir görüş var

    • Önemli CUDA kullanıcıları açık kaynaklı
    • AMD, pytorch veya llama.cpp gibi upstream projelere doğrudan destek ekleyebilir
    • Destek olursa topluluk bunun bakımını üstlenebilir
  • Donanıma büyük ölçüde bağımlı kodun AMD'de "öylece çalışabilmesini" anlamadığını söyleyen bir görüş var

    • Ciddi CUDA kodlarının çoğu register dosyasının ve paylaşılan belleğin boyutunu, wgmma komutlarını, optimal tensor core bellek ve register yerleşimini, tensor memory accelerator komutlarını vb. dikkate alır
  • Doğruysa etkileyici, ancak açık kaynak olmadığı ve nasıl çalıştığına dair net ayrıntılar bulunmadığı yönünde bir görüş var

    • Bugünlerde projelerin açık kaynak ya da en azından source-available olmasını neden beklediğimden pek emin değilim
  • Nvidia'nın yüksek değerlemesinin başlıca nedeni, AMD'nin GPU'ları ML için kullanışlı hale getirmeye yatırım yapmaması olduğu yönünde bir görüş var

    • AMD antitröst önlemlerinden çekiniyor olabilir ya da donanıma yaklaşımında rekabet gücünü sınırlayan bir şey olabilir
    • Şirket, kripto madenciliği GPU talep patlaması ve mevcut yapay zeka patlaması sırasında milyarlarca doları kaçırmış gibi görünüyor
  • AMD bunu o kadar kötü yaptı ki bu tür projeleri kutlamak istediğini söyleyen bir görüş var

    • Özellikle Linux'ta, bir dizüstü bilgisayarın fiziksel olarak var olan özelliklerinin kullanılamaması çok sinir bozucu
  • Birkaç yıl önce Spectral Compute'ta çalıştığını söyleyen biri var

    • Çok zeki ve yetenekli bir teknik ekipti
    • O dönemde yalnızca AMD'yi hedeflemekle kalmıyor, temel LLVM ptx backend'i ve NVCC'yi de geride bırakıyordu
  • Biraz CUDA yazdığını söyleyen biri var

    • AMD kartlar için kod yazmaya yönelik temel kurulumun ne olduğunu merak ediyor
  • Bu projenin harika olduğu yönünde bir görüş var

    • AMD'nin Nvidia ile doğrudan rekabet etmesini dört gözle bekliyor
  • Mevcut kısıtlamalara dair bir sayfa olmasının iyi olduğu, ancak çoğu kişinin "CUDA" diye tanımladığı şeyin gerçek CUDA işlevlerinin yalnızca küçük bir bölümü olduğu yönünde bir görüş var

    • Warp shuffle, atomik işlemler, DPX, TMA, MMA gibi gelişmiş özellikler için bir karşılaştırma tablosu iyi olurdu
    • PTX komutlarını RDNA karşılıklarına veya bunları emüle eden komut listelerine eşleyen bir tablo ideal olurdu
  • Teknik olarak mümkün olduğu için gerçek olabilir diyen bir görüş var

    • Inline PTX'i parse edip AMDGPU'ya eşlemek büyük bir uğraş olurdu
    • Inline PTX kullanmayan CUDA kaynaklarında AMDGPU'yu hedefleyerek çalışmak, bunu HIP ile değiştirmeye benzer
    • Bazı ayrıntılar şüpheli olabilir; örneğin atomik model uyuşmayabilir veya Volta farklı bir instruction pointer modeline sahip olabilir
    • Ancak doğru yapılabilir
    • AMD bunu yapmayacaktır
    • CUDA genel olarak çok iyi bir şey değil ve hukuk ekibi sorun çıkaracaktır
    • Ancak başkaları bunu fazlasıyla yapabilir