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.