Hacklenmiş Nvidia 4090 GPU sürücüsü, P2P'yi etkinleştiriyor
(github.com/tinygrad)NVIDIA Linux Open GPU sürücüsüne P2P desteği eklendi
Bu proje, NVIDIA sürücüsünü fork ederek 4090 GPU'ya P2P desteği ekliyor.
./install.shçalıştırılarak kolayca kurulabiliyor- DKMS'te mevcut sürücüyü önce kaldırmanız gerekebilir
- Sistemde Large BAR desteği gerekli ve IOMMU kapalı olmalı
- Tüm önbellek temizlemelerinin doğru olduğundan emin olunamadığı için, bir sorun bulunursa bildirilmesi isteniyor
- Bunun bir hack değil, PCIe spesifikasyonuna uygun bir uygulama olduğu ve iyi toparlanırsa upstream'e alınabileceği belirtiliyor
Nasıl çalışıyor
Mevcut NVIDIA P2P'nin sorunları
- Daha önce GPU'lar arası bellek aktarımı için MAILBOXP2P adlı bir donanım arayüzü kullanılıyordu
- 4090'da bu donanım yok ya da devre dışı olduğu için P2P çalışmıyor
- İlk sürücüler bunun hatalı çalıştığını raporlasa da, gerçekte aktarım PCIe veri yolu üzerinden yapılıyordu
- Ancak mailbox donanımı olmadığı için kopyalanan içerik doğru yere gitmiyor ve sistem çökmesine yol açabiliyordu
Large BAR desteğinin eklenmesi
- NVIDIA, bazı 3090 modellerine ve tüm 4090'lara Large BAR desteği ekledi
- H100'de mailbox yerine BAR'ı doğrudan kullanan BAR1P2P adlı bir PCIe modu eklendi
- Bunu 4090'da etkinleştirmek için HAL atlanıp GH100 metotlarının doğrudan çağrılması gerekiyor
kbusEnableStaticBar1Mapping_GH100gibi metotlarla tüm VRAM, BAR1'e eşleniyorMapAperturefonksiyonunda ilgili alanın kullanımını devre dışı bırakmak gerekti
P2P'yi etkinleştirmenin zorlukları
- VRAM eşlemesinden sonra bile
cuda-samplesiçindeki./simpleP2Pçalıştırıldığında MMU hatası oluştu- Eşleme türü olarak
GMMU_APERTURE_PEERkullanılıyor, ancak bu 4090'da desteklenmiyor - 4090'da desteklenen türler yalnızca
GMMU_APERTURE_VIDEO,GMMU_APERTURE_SYS_NONCOH,GMMU_APERTURE_SYS_COH
- Eşleme türü olarak
GMMU_APERTURE_PEER,GMMU_APERTURE_SYS_NONCOHolarak değiştirildi- Çünkü CPU L2 önbelleğiyle tutarlılık gerekmiyor, ama verinin PCIe veri yoluna çıkması gerekiyor
- Eş adres alanı olan
fldAddrPeer,fldAddrSysmemolarak değiştirildi fabricBaseAddressalanınaBAR1tabanlı adres ayarlandı
Doğrulanan çalışma durumu
./simpleP2P'nin düzgün çalıştığı doğrulandı- GPU0 ile GPU1 arasında 24GB/s hızında P2P çalışıyor
p2pBandwidthLatencyTestile çift yönlü bant genişliği doğrulandı- 920GB/s yerel bant genişliği ve 51GB/s P2P bant genişliği ölçüldü
- NCCL testleriyle uyumluluk doğrulandı
- 6 adet 4090 GPU ile ortalama 24.5GB/s veri yolu bant genişliği elde edildi
GN⁺ görüşü
- NVIDIA sürücüsünün büyük kısmının açık kaynak olarak yayımlanmış olması, geliştirici topluluğunun bu tür denemeler yapabilmesini sağlamış görünüyor. Gelecekte daha fazla bölümün açık kaynak olmasını umuyoruz.
- 4090'ın güçlü performansını birden fazla kartı bağlayarak kullanmak mümkün olursa, bireysel geliştiriciler ya da küçük laboratuvarlar da çok büyük yapay zeka modellerini eğitebilir hale gelebilir.
- Ancak geliştiricilerin bu kadar donanıma bağımlı ve hassas alanlara doğrudan müdahale etmek zorunda kalması, NVIDIA'nın 4090 desteğini hâlâ tam olarak tamamlamadığının da bir göstergesi.
- Ayrıca bu durum Linux sürücüsüyle sınırlı; Windows'ta ticari kullanım hâlâ uzak görünüyor. NVIDIA'nın resmî desteğinin bir an önce gelmesi umuluyor.
- 4090 çok yeni bir donanım olduğu için CUDA, PyTorch, Tensorflow gibi kütüphanelerde ve ML framework'lerinde tam uyumluluk beklemek zor olabilir. Kararlılık için biraz daha beklemek gerekecek gibi görünüyor.
Henüz yorum yok.