GNU/Linux >> Belajar Linux >  >> Linux

Penalti kinerja CUDA saat berjalan di Windows

Ada cukup banyak overhead dalam mengirimkan perintah perangkat keras GPU melalui tumpukan WDDM.

Seperti yang Anda temukan, ini berarti bahwa di bawah WDDM (hanya) perintah GPU dapat "dikumpulkan" untuk mengamortisasi overhead ini. Proses pengelompokan mungkin (mungkin akan) memperkenalkan beberapa latensi, yang dapat bervariasi, bergantung pada apa lagi yang terjadi.

Solusi terbaik di bawah windows adalah mengganti mode operasi GPU dari WDDM ke TCC, yang dapat dilakukan melalui nvidia-smi perintah, tetapi hanya didukung pada GPU Tesla dan anggota tertentu dari keluarga GPU Quadro -- yaitu bukan GeForce. (Ini juga memiliki efek samping mencegah perangkat digunakan sebagai adaptor tampilan yang dipercepat windows, yang mungkin relevan untuk perangkat Quadro atau beberapa GPU Fermi Tesla lama tertentu.)

AFAIK tidak ada metode yang didokumentasikan secara resmi untuk menghindari atau mempengaruhi proses batching WDDM pada driver, tetapi secara tidak resmi saya pernah mendengar, menurut [email protected] di tautan ini perintah untuk mengeluarkan setelah panggilan kernel cuda adalah cudaEventQuery(0); yang mungkin/seharusnya menyebabkan antrean kumpulan WDDM "menyiram" ke GPU.

Seperti yang ditunjukkan Greg, penggunaan mekanisme ini secara ekstensif akan menghapus manfaat amortisasi, dan mungkin lebih merugikan daripada menguntungkan.

EDIT: bergerak maju ke 2016, rekomendasi yang lebih baru untuk flush "berdampak rendah" dari antrian perintah WDDM adalah cudaStreamQuery(stream);

EDIT2: Menggunakan driver terbaru di windows, Anda harus dapat menempatkan GPU keluarga Titan dalam mode TCC, dengan asumsi Anda memiliki beberapa GPU lain yang disiapkan untuk tampilan utama. nvidia-smi alat akan memungkinkan Anda untuk beralih mode (menggunakan nvidia-smi --help untuk info lebih lanjut).

Info tambahan tentang model driver TCC dapat ditemukan di panduan penginstalan windows, termasuk bahwa ini dapat mengurangi latensi peluncuran kernel.

Pernyataan tentang dukungan TCC adalah pernyataan umum. Tidak semua GPU Quadro didukung. Penentu terakhir dukungan untuk TCC (atau tidak) pada GPU tertentu adalah nvidia-smi alat. Tidak ada apa pun di sini yang dapat ditafsirkan sebagai jaminan dukungan untuk TCC pada GPU khusus Anda.


Linux
  1. .bash_profile Tidak Bersumber Saat Menjalankan Su?

  2. Kekurangan Saat Menggunakan Chroot Dalam Komputasi Kinerja Tinggi?

  3. Tidak Dapat Menghapus File, Bahkan Saat Menjalankan Sebagai Root?

  1. Menggunakan Windows Performance Analyzer untuk memecahkan masalah kinerja

  2. Skrip PHP - mendeteksi apakah berjalan di bawah linux atau Windows?

  3. Bagaimana cara melihat pekerjaan cron yang sedang berjalan?

  1. Mengapa saya mendapatkan Izin Ditolak saat menjalankan ssh-add?

  2. Meminta pengguna untuk login sebagai root saat menjalankan skrip shell

  3. Perilaku riwayat bash yang aneh saat menjalankan beberapa sesi