Driver GPU Nvidia 4090 yang Dimodifikasi, Mengaktifkan P2P
(github.com/tinygrad)Menambahkan dukungan P2P ke driver NVIDIA Linux Open GPU
Proyek ini melakukan fork pada driver NVIDIA untuk menambahkan dukungan P2P ke GPU 4090.
- Instalasi mudah dengan menjalankan
./install.sh - Mungkin perlu menghapus driver yang ada terlebih dahulu dari DKMS
- Sistem memerlukan dukungan Large BAR dan IOMMU harus dimatikan
- Belum ada kepastian semua flush cache sudah benar, jadi mohon laporkan jika menemukan isu
- Ini bukan peretasan, melainkan implementasi sesuai spesifikasi PCIe, dan jika dirapikan dengan baik ada kemungkinan bisa diupstream
Cara kerjanya
Masalah pada P2P NVIDIA yang ada saat ini
- Sebelumnya, transfer memori antar-GPU dilakukan menggunakan antarmuka perangkat keras bernama MAILBOXP2P
- Pada 4090, perangkat keras ini tidak ada atau dinonaktifkan, sehingga P2P tidak berfungsi
- Pada driver awal dilaporkan bekerja dengan salah, tetapi sebenarnya data ditransfer melalui bus PCIe
- Namun karena tidak ada perangkat keras mailbox, hasil salinan tidak menuju lokasi yang benar dan dapat menyebabkan sistem crash
Menambahkan dukungan Large BAR
- NVIDIA menambahkan dukungan Large BAR pada sebagian 3090 dan semua 4090
- Pada H100, ditambahkan mode PCIe bernama BAR1P2P yang menggunakan BAR secara langsung alih-alih mailbox
- Untuk mengaktifkan ini pada 4090, HAL harus dilewati dan metode GH100 dipanggil secara langsung
- Memetakan seluruh VRAM ke BAR1 dengan metode seperti
kbusEnableStaticBar1Mapping_GH100 - Pada fungsi
MapAperture, penggunaan area tersebut juga harus dinonaktifkan
- Memetakan seluruh VRAM ke BAR1 dengan metode seperti
Kesulitan dalam mengaktifkan P2P
- Bahkan setelah VRAM dipetakan, terjadi galat MMU saat menjalankan
cuda-samples./simpleP2PGMMU_APERTURE_PEERdigunakan sebagai tipe pemetaan, tetapi tidak didukung pada 4090- Tipe yang didukung pada 4090 hanya
GMMU_APERTURE_VIDEO,GMMU_APERTURE_SYS_NONCOH,GMMU_APERTURE_SYS_COH
GMMU_APERTURE_PEERdiubah menjadiGMMU_APERTURE_SYS_NONCOH- Karena konsistensi dengan cache L2 CPU tidak diperlukan, tetapi data tetap harus keluar melalui bus PCIe
- Field alamat peer
fldAddrPeerdiubah menjadifldAddrSysmem - Alamat berbasis
BAR1ditetapkan pada fieldfabricBaseAddress
Verifikasi operasi
./simpleP2Pdipastikan berjalan normal- P2P beroperasi pada kecepatan 24GB/s antara GPU0 dan GPU1
- Bandwidth dua arah diperiksa dengan
p2pBandwidthLatencyTest- Terukur bandwidth lokal 920GB/s dan bandwidth P2P 51GB/s
- Kompatibilitas diverifikasi dengan pengujian NCCL
- Dengan 6 GPU 4090, tercapai rata-rata bandwidth bus 24.5GB/s
Opini GN⁺
- Karena sebagian besar driver NVIDIA telah dirilis sebagai open source, komunitas pengembang tampaknya bisa melakukan eksperimen seperti ini. Semoga lebih banyak bagiannya dibuka sebagai open source ke depannya.
- Jika performa kuat 4090 bisa dimanfaatkan dengan menghubungkan banyak unit sekaligus, maka pengembang individu atau lab kecil pun akan dapat melatih model AI berskala sangat besar.
- Namun fakta bahwa pengembang masih harus menyentuh bagian yang sangat bergantung pada perangkat keras dan rumit seperti ini juga menjadi bukti bahwa NVIDIA belum benar-benar menuntaskan dukungan untuk 4090.
- Selain itu, ini terbatas pada driver Linux, dan pemanfaatan komersial di Windows tampaknya masih jauh. Dukungan resmi dari NVIDIA diharapkan bisa segera hadir.
- Karena 4090 memang perangkat keras yang sangat baru, tampaknya sulit mengharapkan kompatibilitas sempurna dari library atau framework ML seperti CUDA, PyTorch, dan Tensorflow. Sepertinya perlu menunggu hingga lebih stabil.
Belum ada komentar.