Komputasi asinkron, AMD, Nvidia, dan DX12: Apa yang kami ketahui sejauh ini

AMD-vs-NV

Sejak DirectX 12 diumumkan, AMD dan Nvidia telah berebut posisi mengenai mana yang akan mereka tawarkan dukungan yang lebih baik untuk API baru dan berbagai fiturnya. Salah satu kemampuan yang banyak dibicarakan AMD adalah dukungan GCN komputasi asinkron. Komputasi asinkron memungkinkan semua GPU yang didasarkan pada arsitektur GCN AMD untuk melakukan grafik dan menghitung beban kerja secara bersamaan. Minggu lalu, seorang karyawan Oxide Games melaporkan bahwa bertentangan dengan kepercayaan umum, perangkat keras Nvidia tidak dapat melakukan komputasi asinkron dan bahwa dampak kinerja dari upaya melakukannya adalah bencana pada perangkat keras perusahaan.

Pengumuman ini memulai kesibukan penelitian tentang apa yang perangkat keras Nvidia lakukan dan tidak dukung, serta klaim anekdot bahwa orang akan (atau sudah melakukannya) mengembalikan GTX 980 Ti mereka berdasarkan Ashes of the Singularity kinerja. Kami telah menghabiskan beberapa hari terakhir dalam percakapan dengan berbagai sumber yang menangani masalah tersebut, termasuk Mahigan dan CrazyElf di Overclock.net, serta mengurai melalui berbagai kumpulan data dan laporan kinerja. Nvidia belum menanggapi permintaan klarifikasi kami, tetapi inilah situasi yang saat ini kami pahami.

Nvidia, AMD, dan komputasi asinkron

Ketika AMD dan Nvidia berbicara tentang mendukung komputasi asinkron, mereka tidak membicarakan tentang kemampuan perangkat keras yang sama. Mesin Perintah Asinkron di GPU AMD (antara 2-8 bergantung pada kartu mana yang Anda miliki) mampu menjalankan beban kerja baru pada latensi serendah satu siklus. Kartu AMD kelas atas memiliki delapan ACE dan setiap ACE memiliki delapan antrian. Maxwell, sebaliknya, memiliki dua pipeline, salah satunya adalah pipeline grafis prioritas tinggi. Yang lain memiliki kedalaman antrian 31 - tetapi Nvidia tidak dapat beralih konteks secepat yang bisa dilakukan AMD.



NV-Preemption

Menurut ceramah yang diberikan di GDC 2015, ada batasan pada kemampuan sebelum penebusan Nvidia. Teks tambahan di bawah slide menjelaskan bahwa 'GPU hanya dapat mengganti konteks pada batas draw call' dan 'Pada GPU mendatang, kami sedang bekerja untuk mengaktifkan preemption yang lebih terperinci, tetapi itu masih jauh.' Untuk menjelajahi berbagai kapabilitas Maxwell dan GCN, pengguna di Beyond3D dan Overclock.net telah menggunakan tes komputasi asinkron yang mengevaluasi kapabilitas pada perangkat keras AMD dan Nvidia. Tolok ukur telah direvisi beberapa kali selama seminggu, jadi hasil awal tidak dapat dibandingkan dengan data yang kami lihat di sesi selanjutnya.

Perhatikan bahwa ini adalah pengujian komputasi asinkron latensi, bukan kinerja. Ini tidak menguji throughput keseluruhan - dengan kata lain, hanya berapa lama waktu yang dibutuhkan untuk mengeksekusinya - dan pengujian dirancang untuk menunjukkan apakah komputasi asinkron terjadi atau tidak. Karena ini adalah uji latensi, angka yang lebih rendah (mendekati garis kuning “1”) berarti hasilnya mendekati ideal.

Radeon R9 290

Inilah kinerja R9 290. Garis kuning adalah kesempurnaan - itulah yang akan kita dapatkan jika GPU diaktifkan dan dijalankan secara instan. Sumbu y dari grafik menunjukkan kinerja yang dinormalisasi ke 1x, yang mana kami mengharapkan latensi asinkron yang sempurna. Garis merah adalah hal yang paling kami minati. Ini menunjukkan kinerja GCN hampir ideal di sebagian besar kasus, menjaga kinerja tetap stabil bahkan saat jumlah utas meningkat. Sekarang, bandingkan ini dengan GTX 980 Ti Nvidia.

vevF50L

Mencoba mengeksekusi grafik dan menghitung secara bersamaan pada GTX 980 Ti menyebabkan penurunan dan lonjakan kinerja dan sedikit keuntungan yang didapat. Saat ini, hanya ada beberapa thread count yang Nvidia cocok dengan performa ideal (latensi, dalam kasus ini) dan banyak kasus yang tidak cocok. Penyelidikan lebih lanjut menunjukkan bahwa pipa asinkron Nvidia tampaknya bersandar pada CPU untuk beberapa langkah awalnya, sedangkan GCN AMD menangani pekerjaan di perangkat keras.

Saat ini, bukti terbaik yang tersedia menunjukkan bahwa ketika AMD dan Nvidia berbicara tentang komputasi asinkron, mereka berbicara tentang dua kemampuan yang sangat berbeda. Faktanya, 'Asynchronous compute' belum tentu menjadi nama terbaik untuk apa yang terjadi di sini. Pertanyaannya adalah apakah GPU Nvidia dapat menjalankan grafik dan menghitung beban kerja atau tidak secara bersamaan. AMD bisa, berkat unit ACE-nya.

Disarankan bahwa pendekatan AMD lebih seperti Hyper-Threading, yang memungkinkan GPU untuk bekerja pada beban kerja komputasi dan grafis yang berbeda secara bersamaan tanpa kehilangan kinerja, sedangkan Nvidia mungkin bersandar pada CPU untuk beberapa langkah penyiapan awal dan mencoba untuk jadwalkan beban kerja komputasi + grafis simultan untuk eksekusi yang ideal. Jelas proses itu belum berjalan dengan baik. Sejak artikel awal kami, Oksida telah menyatakan hal berikut:

“Kami sebenarnya baru saja mengobrol dengan Nvidia tentang Async Compute, memang drivernya belum sepenuhnya mengimplementasikannya, tapi sepertinya begitu. Kami bekerja sama dengan mereka saat mereka menerapkan Async Compute sepenuhnya. ”

Berikut ini artinya, mengingat presentasi Nvidia sendiri di GDC dan berbagai tolok ukur pengujian yang telah dikumpulkan selama seminggu terakhir. Maxwell tidak memiliki konfigurasi mesin komputasi asinkron bergaya GCN dan tidak dapat beralih antara grafik dan beban kerja komputasi secepat GCN. Menurut pengguna Beyond3D Ext3h:

“Awalnya ada klaim, bahwa GPU Nvidia bahkan tidak akan dapat menjalankan shader komputasi asinkron dengan cara asinkron sama sekali, mitos ini dengan cepat dibantah. Yang menjadi jelas, bagaimanapun, adalah bahwa GPU Nvidia lebih menyukai beban yang jauh lebih ringan daripada kartu AMD. Pada beban kecil, GPU Nvidia akan berputar di sekitar kartu AMD. Pada beban tinggi, justru sebaliknya, hingga GPU Nvidia membutuhkan waktu lama untuk memproses beban kerja sehingga memicu pengamanan di Windows. Yang menyebabkan Windows menarik pelatuk dan mematikan driver, dengan asumsi itu macet.

“Hasil akhir (untuk saat ini): GPU AMD mampu menangani beban yang jauh lebih tinggi. Sekitar 10x kali lipat dari apa yang dapat ditangani oleh GPU Nvidia. Tapi mereka juga membutuhkan sekitar 4x tekanan yang diterapkan sebelum mereka bisa memainkan kemampuan yang ada. ”

Ext3h selanjutnya mengatakan bahwa preemption dalam kasus Nvidia hanya digunakan saat beralih antara konteks grafis (1x grafis + 31 mode komputasi) dan 'konteks komputasi murni', tetapi mengklaim bahwa fungsi ini adalah 'benar-benar rusakDi kartu Nvidia saat ini. Dia juga menyatakan bahwa sementara Maxwell 2 (kelompok GTX 900) mampu melakukan eksekusi paralel, “Namun perangkat keras tidak mendapatkan banyak keuntungan darinya, karena hanya memiliki sedikit 'celah' dalam pemanfaatan shader. Jadi pada akhirnya, ini masih hanya eksekusi berurutan untuk sebagian besar beban kerja, meskipun jika Anda berhasil menghentikan pipeline dengan cara membuat beban kerja yang tidak menguntungkan, Anda masih bisa mendapatkan keuntungan darinya. ”

Nvidia, sementara itu, telah mewakili Oksida itu bisa menerapkan komputasi asinkron, bagaimanapun, dan kemampuan ini tidak sepenuhnya diaktifkan di driver. Seperti Oksida, kami akan menunggu dan melihat bagaimana situasinya berkembang. Rangkaian analisis di Beyond3D memperjelas bahwa ini adalah pertanyaan yang sangat kompleks, dan banyak hal yang mungkin atau mungkin tidak dilakukan oleh Nvidia dan Maxwell masih belum jelas.

Sebelumnya, kami menyebutkan bahwa pendekatan AMD untuk komputasi asinkron secara dangkal mirip dengan Hyper-Threading. Ada cara lain di mana analogi tersebut dapat terbukti akurat: Ketika Hyper-Threading memulai debutnya, banyak penggemar AMD bertanya mengapa Team Red tidak menyalin fitur tersebut untuk meningkatkan kinerja pada K7 dan K8. Tanggapan AMD pada saat itu adalah bahwa prosesor K7 dan K8 memiliki jaringan pipa yang jauh lebih pendek dan arsitektur yang sangat berbeda, dan sebagai hasilnya, secara intrinsik cenderung kurang mendapatkan keuntungan dari Hyper-Threading. P4, sebaliknya, memiliki jaringan pipa yang panjang dan tingkat penghentian yang relatif tinggi. Jika satu thread terhenti, HT mengizinkan thread lain untuk terus berjalan, yang meningkatkan kinerja chip secara keseluruhan.

Komputasi asinkron model GCN kemungkinan tidak akan meningkatkan kinerja Maxwell, dengan kata lain, karena Maxwell tidak benar-benar dirancang untuk jenis beban kerja ini. Apakah Nvidia dapat mengatasi batasan itu (atau menerapkan sesuatu yang lebih cepat) masih harus dilihat.

Copyright © Seluruh Hak Cipta | 2007es.com