NVIDIA vs AMD: Kinerja GPGPU

105

Saya ingin mendengar dari orang-orang yang memiliki pengalaman coding untuk keduanya. Saya sendiri, saya hanya memiliki pengalaman dengan NVIDIA.

NVIDIA CUDA tampaknya jauh lebih populer daripada kompetitornya. (Hanya menghitung tag pertanyaan di forum ini, 'cuda' outperforms 'opencl' 3: 1, dan 'nvidia' outperforms 'ati' 15: 1, dan tidak ada tag untuk 'ati-stream' sama sekali).

Di sisi lain, menurut Wikipedia, kartu ATI / AMD seharusnya memiliki lebih banyak potensi, terutama per dolar. Kartu NVIDIA tercepat di pasaran saat ini, GeForce 580 ($ 500), memiliki rating 1,6 TFlops presisi tunggal. AMD Radeon 6970 dapat diperoleh dengan harga $ 370 dan memiliki rating 2,7 TFlops. 580 memiliki 512 unit eksekusi pada 772 MHz. 6970 memiliki 1536 unit eksekusi pada 880 MHz.

Seberapa realistiskah keunggulan kertas dari AMD dibandingkan NVIDIA, dan kemungkinan besar akan direalisasikan dalam sebagian besar tugas GPGPU? Apa yang terjadi dengan tugas integer?

Eugene Smith
sumber
1
Pertanyaan menarik, tapi saya tidak yakin itu benar-benar terkait dengan pemrograman ?
Paul R
25
Ini pada dasarnya adalah pertanyaan tentang dua bahasa pemrograman dan aspek praktis penerapannya. Jadi saya akan mengatakan ya.
Eugene Smith
2
Saya ingin tahu seberapa relevan jawaban atas pertanyaan ini sehubungan dengan C ++ AMP.
Dmitri Nesteruk
2
Pada satu titik, saya melihat mengapa penambangan Bitcoin sangat lambat pada perangkat keras NVIDIA dibandingkan dengan AMD. Utas yang dihasilkan, "AMD Radeon 3x lebih cepat pada penambangan bitcoin (kinerja hashing SHA-256)", berisi informasi yang mungkin menarik bagi Anda. pertanyaanmu. forums.nvidia.com/…
Roger Dahl
1
Menurut saya pertanyaan ini akan menghasilkan kumpulan opini, tergantung pada area aplikasi apa yang dikenal responden, perangkat keras dan perangkat lunak apa yang mereka gunakan, dll; atau jawaban yang komprehensif akan terlalu luas untuk disesuaikan dengan format SO. Voting untuk ditutup.
njuffa

Jawaban:

79

Secara metaforis ati memiliki mesin yang bagus dibandingkan dengan nvidia. Tapi nvidia punya mobil yang lebih bagus: D

Ini terutama karena nvidia telah menginvestasikan sejumlah besar sumber dayanya (dalam bentuk uang dan manusia) untuk mengembangkan perpustakaan penting yang diperlukan untuk komputasi ilmiah (BLAS, FFT), dan kemudian melakukan pekerjaan yang baik lagi dalam mempromosikannya. Ini mungkin alasan CUDA mendominasi tag di sini dibandingkan dengan ati (atau OpenCL)

Adapun keuntungan yang direalisasikan dalam tugas-tugas GPGPU secara umum, itu akan berakhir tergantung pada masalah lain (tergantung pada aplikasinya) seperti, bandwidth transfer memori, kompiler yang baik dan mungkin bahkan driver. nvidia memiliki kompiler yang lebih matang, driver yang lebih stabil di linux (linux karena penggunaannya tersebar luas dalam komputasi ilmiah), memiringkan keseimbangan untuk mendukung CUDA (setidaknya untuk saat ini).


EDIT 12 Jan 2013

Sudah dua tahun sejak saya membuat postingan ini dan terkadang masih menarik perhatian. Jadi saya telah memutuskan untuk mengklarifikasi beberapa hal

  • AMD telah meningkatkan permainan mereka. Mereka sekarang memiliki pustaka BLAS dan FFT. Banyak pustaka pihak ketiga juga muncul di sekitar OpenCL.
  • Intel telah memperkenalkan Xeon Phi ke alam liar mendukung OpenMP dan OpenCL. Ia juga memiliki kemampuan menggunakan kode x86 yang ada. seperti yang tercantum di komentar, x86 terbatas tanpa SSE untuk saat ini
  • NVIDIA dan CUDA masih memiliki keunggulan dalam jangkauan pustaka yang tersedia. Namun mereka mungkin tidak fokus pada OpenCL sebanyak yang mereka lakukan sebelumnya.

Singkatnya OpenCL telah menutup kesenjangan dalam dua tahun terakhir. Ada pemain baru di lapangan. Tapi CUDA masih sedikit di depan pak.

Pavan Yalamanchili
sumber
4
Xeon Phi hanya memiliki kemampuan terbatas pada eksekusi kode x86. Tidak ada MMX / SSE / SSE *.
osgx
@osgx Terima kasih. Saya seharusnya menyebutkan itu.
Pavan Yalamanchili
1
@osgx Tapi kinerjanya bagus di DP FP
Csaba Toth
4
Xeon Phi memiliki register dan instruksi lebar 512-bit yang merupakan 4x dari apa yang didukung SSE.
zr.
59

Saya tidak memiliki perasaan yang kuat tentang CUDA vs. OpenCL; mungkin OpenCL adalah masa depan jangka panjang, hanya dengan menjadi standar terbuka.

Tetapi kartu NVIDIA vs ATI saat ini untuk GPGPU (bukan kinerja grafis, tetapi GPGPU), yang menurut saya sangat bagus. Dan untuk mengarahkannya, saya akan menunjukkan bahwa pada daftar 500 cluster besar saat ini , NVIDIA memimpin sistem AMD 4 ke 1, dan di gpgpu.org , hasil pencarian (makalah, tautan ke sumber daya online, dll) untuk NVIDIA melebihi hasil untuk AMD 6: 1.

Sebagian besar dari perbedaan ini adalah jumlah informasi online yang tersedia. Lihat Zona CUDA NVIDIA versus Pusat Pengembang GPGPU AMD . Jumlah hal-hal yang ada untuk para pengembang yang memulai bahkan tidak bisa dibandingkan. Di situs NVIDIA, Anda akan menemukan banyak sekali makalah - dan kode kontribusi - dari orang-orang yang mungkin mengerjakan masalah seperti milik Anda. Anda akan menemukan banyak sekali kelas online, dari NVIDIA dan tempat lain, dan dokumen yang sangat berguna seperti panduan praktik terbaik pengembang, dll. Ketersediaan alat pengembangan gratis - profiler, cuda-gdb, dll - sangat memiringkan cara NVIDIA.

(Editor: informasi dalam paragraf ini sudah tidak akurat lagi.) Dan beberapa perbedaan juga ada pada perangkat keras. Kartu AMD memiliki spesifikasi yang lebih baik dalam hal peak flop, tetapi untuk bisa mendapatkan bagian yang signifikan dari itu, Anda tidak hanya harus memecah masalah Anda ke banyak stream processor yang benar-benar independen, setiap item pekerjaan juga perlu di-vektorisasi. Mengingat bahwa kode GPGPUing cukup sulit, kompleksitas arsitektur ekstra itu cukup untuk membuat atau menghancurkan beberapa proyek.

Dan hasil dari semua ini adalah komunitas pengguna NVIDIA terus berkembang. Dari tiga atau empat grup yang saya tahu berpikir untuk membangun cluster GPU, tidak ada yang secara serius mempertimbangkan kartu AMD. Dan itu berarti lebih banyak lagi kelompok yang menulis makalah, menyumbangkan kode, dll di sisi NVIDIA.

Saya bukan seorang NVIDIA shill; Saya berharap tidak seperti ini, dan ada dua (atau lebih!) Platform GPGPU yang sama-sama menarik. Persaingan itu bagus. Mungkin AMD akan segera meningkatkan permainannya - dan produk fusi yang akan datang terlihat sangat menarik. Tetapi dalam memberi seseorang nasihat tentang kartu mana yang akan dibeli hari ini, dan di mana menghabiskan waktu mereka untuk berusaha sekarang, saya tidak dapat dengan hati nurani yang baik mengatakan bahwa kedua lingkungan pengembangan itu sama baiknya.

Diedit untuk menambahkan : Saya kira pertanyaan di atas sedikit elips dalam menjawab pertanyaan asli, jadi izinkan saya membuatnya sedikit lebih eksplisit. Kinerja yang dapat Anda peroleh dari sebuah perangkat keras adalah, dalam dunia yang ideal dengan waktu yang tersedia tak terbatas, hanya bergantung pada perangkat keras yang mendasari dan kemampuan bahasa pemrograman; tetapi pada kenyataannya, jumlah kinerja yang bisa Anda peroleh dalam jumlah waktu tetap yang diinvestasikan juga sangat bergantung pada alat pengembangan, basis kode komunitas yang ada (misalnya, perpustakaan yang tersedia untuk umum, dll). Semua pertimbangan tersebut mengarah pada NVIDIA.

(Editor: informasi dalam paragraf ini tidak lagi akurat.) Dalam hal perangkat keras, persyaratan vektorisasi dalam unit SIMD di kartu AMD juga membuat pencapaian kinerja kertas lebih sulit daripada dengan perangkat keras NVIDIA.

Jonathan Dursi
sumber
2
Saya belajar OpenCL menggunakan ATI Stream, menghargai catatan tentang vektorisasi :) Sementara saya menyadari manfaat NVIDIA adalah.. cukup besar, saya hanya mendukung AMD / ATI dan perusahaan itu sendiri dan saya punya waktu untuk membuat perpustakaan: Saya pikir kinerja OpenCL akan pasti meningkat di tahun-tahun mendatang dan saya ingin kode saya siap untuk itu juga.
Garet Claborn
Akan menarik untuk melihat apa pendapat Anda tentang AMD`s GCN dan OpenCL 1.2, sekarang (2013) bahwa simds adalah sesuatu dari masa lalu. Ada perbedaan bersih?
danno
3
@Jonathan, sekarang sudah 3 tahun sejak Anda menulis pos hebat ini. Saya ingin tahu apakah menurut Anda platform, komunitas, dan ekosistem AMD telah menutup celah tersebut.
basilikode
Tidak begitu banyak untuk video atau kartu GPGPU tetapi untuk prosesor itu sendiri, saya selalu menjadi penggemar Intel daripada AMD, namun dan baru-baru ini AMD akan merilis prosesor ZEN baru di mana tes tanda bakar mereka menunjukkan itu pada pengaturan default ini sebanding dengan prosesor i7 teratas Intel. Teknologi baru mereka seharusnya meningkatkan lebih banyak cara kerjanya karena mengenali pola instruksi. Jadi saya pikir sebagian besar waktu dan tenaga mereka dihabiskan untuk prosesor baru ini dibandingkan dengan teknologi GPU mereka. Namun begitu prosesor Zen mereka dirilis, saya yakin Intel akan memiliki sesuatu yang lebih baik.
Francis Cugler
17

Perbedaan utama antara arsitektur AMD dan NVIDIA adalah AMD dioptimalkan untuk masalah di mana perilaku algoritme dapat ditentukan pada waktu kompilasi sementara NVIDIA dioptimalkan untuk masalah di mana perilaku algoritme hanya dapat ditentukan pada waktu proses.

AMD memiliki arsitektur yang relatif sederhana yang memungkinkan mereka menghabiskan lebih banyak transistor pada ALU. Selama masalah dapat didefinisikan sepenuhnya pada waktu kompilasi dan berhasil dipetakan ke arsitektur dengan cara yang agak statis atau linier, ada kemungkinan besar bahwa AMD akan dapat menjalankan algoritme lebih cepat daripada NVIDIA.

Di sisi lain, kompiler NVIDIA melakukan lebih sedikit analisis pada waktu kompilasi. Sebaliknya, NVIDIA memiliki arsitektur yang lebih maju di mana mereka telah menghabiskan lebih banyak transistor pada logika yang mampu menangani perilaku dinamis dari algoritme yang hanya muncul pada waktu proses.

Saya percaya fakta bahwa sebagian besar superkomputer yang menggunakan GPU menggunakan NVIDIA adalah jenis masalah yang menarik minat para ilmuwan untuk menjalankan kalkulasi, secara umum memetakan lebih baik ke arsitektur NVIDIA daripada AMD.

Roger Dahl
sumber
2
Dengan GCN (Graphics Core Next), AMD telah beralih dari SIMD dan VLIW ke arsitektur yang lebih mirip dengan NVIDIA (SIMT dan penjadwalan instruksi yang lebih fleksibel).
Aleksandr Dubinsky
1
@AleksandrDubinsky: Dan dengan perangkat keras Kemampuan Hitung 3.0, NVIDIA telah mendekati AMD dengan menghapus penjadwalan dinamis. Saya pikir arsitektur mereka akan bertemu di suatu tempat di tengah.
Roger Dahl
1
Saya pernah mendengar ini di masa lalu, tetapi tidak dapat menemukan informasi konkret. Di mana saya dapat menemukan detail lebih lanjut tentang ini?
Yakov Galka
7

Saya telah melakukan beberapa pengkodean berulang di OpenCL. Dan hasil menjalankannya di NVIDIA dan ATI, hampir sama. Mendekati kecepatan yang sama dalam nilai yang sama ($) kartu.

Dalam kedua kasus tersebut, kecepatannya ~ 10x-30x dibandingkan dengan CPU.

Saya tidak menguji CUDA, tapi saya ragu itu bisa menyelesaikan masalah pengambilan memori acak saya secara ajaib. Saat ini, CUDA dan OpenCL kurang lebih sama, dan saya melihat lebih banyak masa depan di OpenCL daripada di CUDA. Alasan utamanya adalah Intel meluncurkan driver dengan OpenCL untuk prosesor mereka. Ini akan menjadi kemajuan besar di masa depan (menjalankan 16, 32 atau 64 utas OpenCL di CPU SANGAT cepat, dan sangat mudah untuk porting ke GPU).

DarkZeros
sumber
7

Setelah menghabiskan beberapa waktu dengan OpenCL untuk kartu GCN setelah beberapa tahun CUDA untuk Fermi dan Kepler, saya masih lebih suka CUDA sebagai bahasa pemrograman dan akan memilih perangkat keras AMD dengan CUDA jika saya punya pilihan.

Perbedaan utama NVIDIA dan AMD (OpenCL):

Untuk AMD:

  • Bahkan dengan Maxwell, NVidia masih memiliki latensi perintah yang lebih lama dan algoritme kompleks cenderung 10 lebih cepat pada AMD (dengan asumsi Tflops teoretis yang sama) setelah pengoptimalan yang mudah untuk keduanya. Selisihnya mencapai 60% untuk Kepler VS GCN. Lebih sulit untuk mengoptimalkan kernel kompleks untuk NVidia dalam hal ini.

  • Kartu murah.

  • OpenCL adalah standar terbuka dengan vendor lain yang tersedia.

Untuk Nvidia:

  • Memiliki rangkaian perangkat keras Tesla yang cocok untuk beban server tinggi yang andal.

  • Maxwell baru jauh lebih hemat daya.

  • Kompiler dan alat jauh lebih maju. AMD masih belum bisa mengimplementasikan maxregcoutparameter, sehingga Anda dapat dengan mudah mengontrol hunian pada berbagai perangkat keras dan kompilernya memiliki banyak ide acak tentang kode optimal yang berubah di setiap versi, jadi Anda mungkin perlu mengunjungi kembali kode lama setiap setengahnya setahun karena tiba-tiba menjadi 40% lebih lambat.

Pada titik ini, jika GPGPU adalah tujuan Anda, CUDA adalah satu-satunya pilihan, karena opencL dengan AMD belum siap untuk server farm dan jauh lebih sulit untuk menulis kode yang efisien untuk AMD karena fakta bahwa kompilernya selalu tampak "dalam versi beta" .

Vladimir Tankovich
sumber
Terima kasih atas jawaban barunya. Dapatkah Anda menjelaskan unit mana yang "kemungkinan besar 10 lebih cepat"? Persen?
Aleksandr Dubinsky
Pendapat pribadi: Pada suatu waktu Kartu ATI dalam arti lebih baik daripada Nvidia tetapi kurang dalam dukungan pembaruan driver dan seiring waktu AMD membeli ATI sepenuhnya di mana Nvidia masih perusahaan yang sama. Selain itu, Nvidia masih memiliki dukungan driver pembaruan yang lebih baik. Ini lebih terletak pada ujung pengguna kartu untuk kinerja dengan aplikasi. Jangan salah, kedua teknologi itu bagus dengan caranya sendiri dan keduanya memiliki kartu murah kelas bawah serta kartu kelas atas yang lebih mahal. Seiring waktu saya beralih dari ATI ke Nvidia. Adapun pengembangan Nvidia memiliki set fitur yang jauh lebih baik dan API atau perpustakaan yang dapat diprogram.
Francis Cugler
6

Saya baru mengenal GPGPU tetapi saya memiliki pengalaman dalam komputasi ilmiah (PhD dalam Fisika). Saya membentuk tim peneliti dan saya ingin menggunakan GPGPU untuk penghitungan saya. Saya harus memilih di antara platform yang tersedia. Saya memutuskan menggunakan Nvidia, karena beberapa alasan: sementara ATI mungkin lebih cepat di atas kertas, Nvidia memiliki platform yang lebih matang dan dokumentasi yang lebih banyak sehingga memungkinkan untuk mendekati kinerja puncak pada platform ini.

Nvidia juga memiliki program dukungan penelitian akademik, seseorang dapat mengajukan dukungan, saya baru saja menerima kartu TESLA 2075 yang sangat saya sukai. Saya tidak tahu apakah ATI atau Intel mendukung penelitian dengan cara ini.

Apa yang saya dengar tentang OpenCL adalah bahwa ia mencoba menjadi segalanya sekaligus, memang benar bahwa kode OpenCL Anda akan lebih portabel tetapi juga cenderung tidak mengeksploitasi kemampuan penuh dari kedua platform. Saya lebih suka belajar lebih banyak dan menulis program yang memanfaatkan sumber daya dengan lebih baik. Dengan TESLA K10 yang baru keluar tahun ini, Nvidia berada di kisaran 4,5 TeraFlops sehingga tidak jelas apakah Nvidia tertinggal ... namun Intel MIC bisa menjadi pesaing nyata, terutama jika mereka berhasil memindahkan unit GPGPU ke motherboard. Tapi untuk saat ini, saya memilih Nvidia.

Andras
sumber
Lihatlah jawaban @ AndrewCooke untuk pendapat tentang (kurangnya) dukungan NVidia.
Aleksandr Dubinsky
5

Pengalaman saya dalam mengevaluasi kinerja floating point OpenCL cenderung lebih menyukai kartu NVIDIA. Saya telah bekerja dengan beberapa benchmark floating point pada kartu NVIDIA mulai dari 8600M GT hingga GTX 460. Kartu NVIDIA secara konsisten mencapai sekitar setengah dari puncak precisino tunggal teoritis pada benchmark ini.
Kartu ATI yang pernah saya gunakan jarang mencapai lebih baik dari sepertiga puncak presisi tunggal. Perhatikan bahwa pengalaman saya dengan ATI miring; Saya hanya bisa bekerja dengan satu kartu seri 5000. Pengalaman saya sebagian besar dengan kartu seri HD 4000, yang tidak pernah didukung dengan baik. Dukungan untuk kartu seri HD 5000 jauh lebih baik.

virtuallinux
sumber
1

Saya ingin menambah perdebatan. Bagi kami dalam bisnis perangkat lunak, kami dapat mengkompromikan kinerja presisi tunggal mentah untuk produktivitas tetapi bahkan saya tidak perlu berkompromi karena, seperti yang telah ditunjukkan, Anda tidak dapat mencapai kinerja sebanyak yang dapat Anda capai pada perangkat keras ATI menggunakan OpenCL. jika Anda menulis dalam CUDA pada perangkat keras NVIDIA.

Dan ya, dengan pengumuman PGI tentang kompiler x86 untuk CUDA, tidak akan ada alasan yang baik untuk menghabiskan lebih banyak waktu dan sumber daya untuk menulis di OpenCL :)

PS: Argumen saya mungkin bias karena kita mengerjakan hampir semua pekerjaan GPGPU kita tentang CUDA. Kami memiliki perpustakaan Image Processing / Computer Vision CUVI (CUDA for Vision and Imaging) yang mempercepat beberapa fungsi inti IP / CV pada CUDA.

Salman Ul Haq
sumber
0

Cuda tentunya lebih populer daripada OpenCL pada hari ini, karena dirilis 3 atau 4 tahun sebelum OpenCL. Sejak OpenCL dirilis, Nvidia belum banyak berkontribusi untuk bahasa tersebut karena mereka banyak berkonsentrasi pada CUDA. Mereka bahkan belum merilis versi openCL 1.2 untuk driver manapun.

Sejauh komputasi heterogen serta perangkat genggam terkait OpenCl pasti akan mendapatkan lebih banyak popularitas dalam waktu dekat. Sampai saat ini, penyumbang OpenCL terbesar adalah AMD, Itu terlihat di situs mereka.

shunya
sumber
-2

menurut pengalaman saya:

  • jika Anda menginginkan kinerja absolut terbaik maka Anda perlu melihat siapa yang menggunakan iterasi perangkat keras terbaru, dan menggunakan tumpukan mereka (termasuk rilis terbaru / beta).

  • jika Anda menginginkan kinerja terbaik untuk uang Anda akan membidik kartu pemain daripada kartu "profesional" dan fleksibilitas menargetkan platform yang berbeda lebih disukai terbuka.

  • jika Anda memulai, khususnya, cuda cenderung lebih halus dan memiliki lebih banyak alat dan pustaka.

akhirnya, pendapat pribadi saya, setelah "dukungan" yang mengerikan dari nvidia (kami mendapat tesla mati dan tidak berubah selama berbulan-bulan, sementara klien menunggu): fleksibilitas untuk melompat kapal dengan pembukaan sepadan dengan risiko kinerja yang sedikit lebih rendah saat nvidia berada di depan dalam siklus rilis.

andrew cooke
sumber
Pengalaman serupa dengan "dukungan" dari nvidia: mogok libcuda.so(hanya dengan OpenCL, CUDA berfungsi) dan tidak ada tanggapan sama sekali dari mereka.
eudoxos
1
Dengan dealer kami, kami tidak memiliki masalah dalam mengganti tesla mati, biasanya kami menerima perangkat keras baru sebelum mengirim yang rusak, jadi saya kira ini bukan masalah NVidia tetapi masalah dealer Anda.
Gaetano Mendola
Saya pikir Tesla super-duper dapat diandalkan. Fud pemasaran apa.
Aleksandr Dubinsky
OpenCL bukanlah kinerja-portabel, jadi tidak mungkin untuk melakukan hop pengiriman setiap kali satu perusahaan merilis flagship baru (tanpa mempertahankan dua cabang kode yang dioptimalkan). Juga, dukungan OpenCL NVIDIA ada beberapa versi di belakang dan, saya kira, tidak terawat dengan baik.
Aleksandr Dubinsky