Mengapa orang menggunakan GPU untuk perhitungan kinerja tinggi dan bukan chip yang lebih khusus?


105

Dari pemahaman saya, orang-orang mulai menggunakan GPU untuk komputasi umum karena mereka adalah sumber daya komputasi tambahan. Dan meskipun mereka tidak secepat CPU untuk setiap operasi, mereka memiliki banyak core, sehingga mereka bisa lebih baik diadaptasi untuk pemrosesan paralel daripada CPU. Ini masuk akal jika Anda sudah memiliki komputer yang kebetulan memiliki GPU untuk pemrosesan grafis, tetapi Anda tidak memerlukan grafik, dan ingin lebih banyak daya komputasi. Tetapi saya juga mengerti bahwa orang membeli GPU secara khusus untuk menambah daya komputasi, tanpa niat untuk menggunakannya untuk memproses grafik. Bagi saya, ini mirip dengan analogi berikut:

Saya perlu memotong rumput saya, tetapi mesin pemotong rumput saya lemah. Jadi saya lepaskan sangkar dari kipas kotak yang saya simpan di kamar saya dan pertajam bilahnya. Saya menempelkannya ke mesin pemotong rumput saya, dan saya menemukan itu berfungsi dengan cukup baik. Bertahun-tahun kemudian, saya adalah petugas pembelian untuk bisnis perawatan rumput yang besar. Saya memiliki anggaran yang cukup besar untuk dibelanjakan pada alat pemotong rumput. Alih-alih membeli mesin pemotong rumput, saya membeli banyak penggemar kotak. Sekali lagi, mereka bekerja dengan baik, tetapi saya harus membayar untuk suku cadang tambahan (seperti kandang) yang akhirnya tidak akan saya gunakan. (untuk keperluan analogi ini, kita harus mengasumsikan bahwa mesin pemotong rumput dan penggemar kotak harganya hampir sama)

Jadi mengapa tidak ada pasar untuk chip atau perangkat yang memiliki kekuatan pemrosesan GPU, tetapi tidak ada overhead grafis? Saya bisa memikirkan beberapa penjelasan yang mungkin. Yang mana dari mereka, jika ada, yang benar?

  • Alternatif seperti itu akan terlalu mahal untuk dikembangkan ketika GPU sudah merupakan pilihan yang bagus (mesin pemotong rumput tidak ada, mengapa tidak menggunakan kipas kotak yang sangat bagus ini?).
  • Fakta bahwa 'G' singkatan dari grafis hanya menunjukkan penggunaan yang dimaksudkan, dan tidak benar-benar berarti bahwa segala upaya yang dilakukan untuk membuat chip lebih baik diadaptasi ke pemrosesan grafis daripada jenis pekerjaan lain (mesin pemotong rumput dan penggemar kotak adalah hal yang sama ketika Anda langsung sampai ke sana; tidak ada modifikasi yang diperlukan untuk mendapatkan satu berfungsi seperti yang lain).
  • GPU modern memiliki nama yang sama dengan pendahulunya, tetapi belakangan ini yang canggih tidak dirancang untuk secara khusus memproses grafik (kipas kotak modern dirancang untuk berfungsi sebagian besar sebagai mesin pemotong rumput, bahkan jika yang lebih tua tidak).
  • Sangat mudah untuk menerjemahkan hampir semua masalah ke dalam bahasa pemrosesan grafis (rumput dapat dipotong dengan menghembuskan udara di atasnya dengan sangat cepat).

SUNTING:

Pertanyaan saya telah dijawab, tetapi berdasarkan beberapa komentar dan jawaban, saya merasa harus mengklarifikasi pertanyaan saya. Saya tidak bertanya mengapa semua orang tidak membeli perhitungan mereka sendiri. Jelas itu akan terlalu mahal sebagian besar waktu.

Saya hanya mengamati bahwa tampaknya ada permintaan untuk perangkat yang dapat dengan cepat melakukan komputasi paralel. Saya bertanya-tanya mengapa tampaknya perangkat yang optimal adalah Unit Pemrosesan Grafik, dibandingkan dengan perangkat yang dirancang untuk tujuan ini.


66
Karena mereka adalah khusus untuk hal semacam ini; pada dasarnya jenis matematika yang sama. Dan nVidia telah membangun dan menjual papan GPU-only untuk orang-orang untuk melakukan penggerusan angka paralel secara masif ini.
Heptite

7
Perlu diingat bahwa kami memiliki "unit" khusus yang ditambahkan ke chip. AES dilakukan dalam perangkat keras (saya pikir) pada CPU. AVX juga diimplementasikan dalam perangkat keras. Namun, di mana Anda berhenti? Pembuat chip tidak tahu apa yang Anda butuhkan dan kebanyakan orang tidak memiliki kemampuan (teknologi atau keuangan) untuk memiliki chip sendiri yang dirancang untuk tugas yang sangat spesifik. Kartu grafis adalah - seperti yang dikatakan lainnya - salah satu jenis arsitektur khusus, yang cocok untuk tugas-tugas tertentu. Mereka tidak baik untuk semuanya - tetapi untuk tugas-tugas khusus tertentu dan dengan demikian digunakan di sana.
DetlevCM

4
Analogi yang lebih akurat akan menggantikan kipas kotak dengan kombinasi pertanian selebar 100 meter.
MooseBoys

6
PC saya sudah memiliki GPU yang siap pakai, mendesain dan memproduksi chip khusus akan membuat saya kembali jutaan.
PlasmaHH

19
Coba analogi lainnya. Misalkan kita memiliki kipas kotak, dan kita memiliki rotor helikopter. Dalam dunia hipotetis kami, aplikasi untuk penggemar kotak membutuhkan penggemar yang semakin besar berjalan dengan kecepatan lebih tinggi, sampai kami berakhir dengan penggemar kotak serat karbon 20 m, dan produksi massal membuatnya murah. Kemudian seseorang menyadari bahwa kipas kotak 20m pada dasarnya hanyalah rotor helikopter dengan sangkar di sekitarnya. Itu sangat mirip.
Graham

Jawaban:


109

Ini benar-benar kombinasi dari semua penjelasan Anda. Lebih murah dan lebih mudah, sudah ada, dan desain telah bergeser dari grafik murni.


GPU modern dapat dilihat sebagai stream prosesor utama dengan beberapa perangkat keras grafis tambahan (dan beberapa akselerator fungsi tetap, misalnya untuk encoding dan decoding video). Pemrograman GPGPU hari ini menggunakan API yang dirancang khusus untuk tujuan ini (OpenCL, Nvidia CUDA, AMD APP).

Selama satu atau dua dekade terakhir, GPU telah berevolusi dari pipeline fungsi-tetap (cukup banyak grafis saja) menjadi pipeline yang dapat diprogram ( shader membiarkan Anda menulis instruksi khusus) ke API yang lebih modern seperti OpenCL yang menyediakan akses langsung ke core shader tanpa menyertai pipa grafis.

Bit grafis yang tersisa kecil. Mereka adalah bagian kecil dari biaya kartu sehingga tidak jauh lebih murah untuk mengeluarkannya, dan Anda dikenakan biaya desain tambahan. Jadi ini biasanya tidak dilakukan - tidak ada yang setara dengan komputasi pada kebanyakan GPU - kecuali pada tingkatan tertinggi, dan itu cukup mahal.

GPU "permainan" normal sangat umum digunakan karena skala ekonomis dan kesederhanaan relatif membuatnya menjadi murah dan mudah untuk memulai. Ini jalur yang cukup mudah dari pemrograman grafis ke mempercepat program lain dengan GPGPU. Juga mudah untuk memutakhirkan perangkat keras karena produk yang lebih baru dan lebih cepat tersedia, tidak seperti opsi lainnya.


Pada dasarnya, pilihannya adalah:

  • CPU tujuan umum, bagus untuk percabangan dan kode berurutan
  • GPU "gaming" yang normal
  • GPU berorientasi komputasi, misalnya Nvidia Tesla dan Radeon Instinct Ini sering tidak mendukung output grafis sama sekali, sehingga GPU sedikit keliru. Namun, mereka memang menggunakan core GPU yang mirip dengan GPU normal dan kode OpenCL / CUDA / APP lebih atau kurang langsung portabel.
  • FPGA, yang menggunakan model pemrograman yang sangat berbeda dan cenderung sangat mahal. Di sinilah hambatan signifikan untuk masuk. Mereka juga belum tentu lebih cepat dari GPU, tergantung pada beban kerjanya.
  • ASIC, sirkuit yang dirancang khusus (perangkat keras). Ini sangat mahal dan hanya sepadan dengan skala ekstrem (setidaknya kita berbicara ribuan unit), dan di mana Anda yakin program tidak akan pernah perlu berubah. Mereka jarang layak di dunia nyata. Anda juga harus mendesain ulang dan menguji seluruh hal setiap kali teknologi maju - Anda tidak bisa hanya menukar prosesor baru seperti yang Anda bisa dengan CPU dan GPU.

16
ASICs juga masuk akal ketika komputasi benar-benar membayar untuk dirinya sendiri (crypto mining)
ratchet freak

4
Sebenarnya, FPGA seringkali lebih buruk daripada GPU. Masalahnya adalah FPGA sangat fleksibel; mereka dapat mengimplementasikan berbagai operasi. Namun, perhitungan pada umumnya adalah bentuk matematika, dan pada kenyataannya sebagian besar hanya dua operasi: penambahan dan perkalian (pengurangan dan pembagian adalah varian di atas). GPU sangat, sangat bagus di kedua operasi itu, lebih dari FPGA.
MSalters

19
Anda perlu mengklarifikasi lebih lanjut tentang FPGA. Gagasan bahwa ada "peningkatan" agak menyesatkan. Mereka lebih dari satu langkah ke samping.
Yakk

6
Sebagai contoh dari yang terakhir, Google memiliki "unit pemrosesan Tensor" sendiri untuk pembelajaran mesin. Sejauh mana mereka dikustomisasi tidak jelas, tetapi digambarkan sebagai ASIC.
mbrig

4
@MSalters Salah satu nilai jual utama FPGA atas GPU adalah kinerja / Watt, yang semakin penting karena pusat data mulai menabrak dinding daya (FPGA umumnya lebih hemat daya). Sejauh matematika, FPGA sebanding dengan GPU dalam fixed-point dan integer aritmatika, dan hanya tertinggal dalam floating-point matematika.
wilcroft

32

Analogi favorit saya:

  • CPU : Seorang jenius Polymath. Dapat melakukan satu atau dua hal sekaligus, tetapi hal itu bisa sangat kompleks.
  • GPU : Satu ton pekerja berketerampilan rendah. Masing-masing tidak dapat melakukan masalah yang sangat besar, tetapi secara massal Anda bisa menyelesaikan banyak hal. Untuk pertanyaan Anda, ya ada beberapa overhead grafis tetapi saya yakin itu marjinal.
  • ASIC / FPGA : Sebuah perusahaan. Anda dapat menyewa satu ton pekerja berketerampilan rendah atau beberapa orang jenius, atau kombinasi dari pekerja berketerampilan rendah dan genius.

Apa yang Anda gunakan tergantung pada sensitivitas biaya, sejauh mana tugas dapat diparalelkan, dan faktor lainnya. Karena bagaimana pasar bermain, GPU adalah pilihan terbaik untuk sebagian besar aplikasi paralel dan CPU adalah pilihan terbaik ketika daya dan biaya unit menjadi perhatian utama.

Langsung ke pertanyaan Anda: mengapa GPU lebih dari ASIC / FPGA? Umumnya biaya. Bahkan dengan harga GPU yang dinaikkan saat ini, masih (secara umum) lebih murah menggunakan GPU daripada merancang ASIC untuk memenuhi kebutuhan Anda. Seperti yang ditunjukkan oleh @ user912264, ada tugas khusus yang dapat berguna untuk ASIC / FPGA. Jika Anda memiliki tugas yang unik dan Anda akan mendapat manfaat dari skala maka layak untuk merancang ASIC / FPGA. Bahkan, Anda dapat mendesain / membeli / melisensikan desain FPGA khusus untuk tujuan ini. Ini dilakukan untuk memberi daya piksel pada TV definisi tinggi misalnya.


7
Komentar bukan untuk menjawab, dan ini sepertinya jawaban yang masuk akal bagi saya.
Raimund Krämer

1
@BobtheMogicMoose Tapi mungkin perintah besarnya lebih cepat untuk menggunakan FPGA khusus yang dirancang untuk analisis genom daripada memiliki kode yang setara dalam GPU. Ketika Anda membayar ilmuwan untuk duduk menunggu hasil, FPGA lebih cepat membayar untuk dirinya sendiri dengan sangat cepat.
selesai24

FPGA juga semakin mudah diakses oleh pengembang umum - Microsoft misalnya memiliki solusi cloud AI menggunakan FPGA (Project BrainWave). AWS memiliki beberapa penawaran juga. Siapa pun dapat menyewakan beberapa FPGA khusus untuk tugas khusus tanpa harus membuatnya sendiri, tidak layak untuk banyak kasus penggunaan bahkan beberapa tahun yang lalu.
brichins

Ya, saya pikir bahkan ada kit hobi FPGA yang sebanding dengan arduino raspberry-pi. Saya masih berpikir pemrograman FPGA jauh lebih mahal daripada arsitektur yang lebih maju.
BobtheMagicMoose

10

Analogi Anda buruk. Dalam analoginya, ketika Anda membeli peralatan untuk bisnis perawatan kebun besar, Anda menganggap ada mesin pemotong rumput yang baik tersedia. Ini tidak terjadi di dunia komputasi - GPU adalah alat terbaik yang tersedia.

Biaya Litbang dan kemungkinan peningkatan kinerja untuk chip khusus cenderung terlalu tinggi untuk dibenarkan membuatnya.

Yang mengatakan, saya sadar Nvidia mengeluarkan beberapa GPU khusus untuk komputasi tujuan umum - mereka tidak memiliki output video - sedikit seperti menjual kipas kotak dengan kandang sudah dihapus.


9

Tentu saja, Anda dapat menggunakan chip khusus, baik untuk efisiensi energi atau kecepatan perhitungan. Biarkan saya memberi tahu Anda sejarah penambangan Bitcoin:

  • Bitcoin baru, Geeks menambang dengan CPU mereka.
  • Bitcoin agak baru, geeks yang pintar menambang dengan GPU mereka.
  • Bitcoin sekarang (agak) terkenal, orang membeli FPGA.
  • Bitcoin sekarang terkenal (2013), bahkan pemula membeli ASIC ("Application Integrated Integrated Circuits") untuk menambang secara efisien.
  • Blokir tetes hadiah (secara berkala), bahkan ASIC lama tidak lagi menguntungkan.

Jadi tidak, tidak ada alasan untuk menggunakan GPU alih-alih "kalkulator raksasa" khusus. Semakin besar insentif ekonomis, semakin banyak perangkat keras yang terspesialisasi. Namun, mereka cukup sulit untuk dirancang dan tidak layak untuk diproduksi jika Anda tidak memproduksi ribuan sekaligus. Jika tidak dapat merancang chip, Anda dapat membeli salah satunya dari Walmart terdekat.

TL; DR Tentu saja Anda dapat menggunakan chip yang lebih khusus.


1
"Tentu saja Anda dapat menggunakan lebih banyak chip khusus" - tetapi ada chip khusus untuk bitcoin (SHA-256), kemudian untuk litecoin (scrypt) dan itu cukup banyak. Perangkat keras komputasi berkinerja tinggi untuk masalah lain tidak ada. (Yaitu, dengan kinerja yang lebih tinggi dari GPU kelas atas saat ini)
Agent_L

8

Apa yang Anda gambarkan dalam analogi Anda adalah persis apa yang terjadi. Sama seperti Anda mengambil kipas Anda dan mengasah bilah untuk mencoba menggunakannya sebagai mesin pemotong rumput, sekelompok peneliti menyadari "Hei, kami memiliki beberapa unit pemrosesan multi-core yang cukup bagus di sini, mari kita coba menggunakannya untuk perhitungan keperluan umum! ".

Hasilnya bagus dan bola mulai bergulir. GPU beralih dari perangkat grafis saja untuk mendukung perhitungan tujuan umum untuk membantu dalam situasi yang paling menuntut.

Karena bagaimanapun operasi yang paling menuntut komputasi yang kita harapkan dari komputer adalah grafik. Cukup untuk melihat kemajuan menakjubkan dari bagaimana game terlihat hari ini dibandingkan dengan yang mereka lakukan beberapa tahun yang lalu. Ini berarti bahwa banyak usaha dan uang telah masuk ke dalam pengembangan GPU, dan fakta bahwa mereka juga dapat digunakan untuk mempercepat kelas perhitungan tujuan umum tertentu (yaitu sangat paralel) hanya menambah popularitas mereka.

Jadi sebagai kesimpulan, penjelasan pertama yang Anda tawarkan adalah yang paling akurat:

  • Alternatif seperti itu akan terlalu mahal untuk dikembangkan ketika GPU sudah merupakan opsi yang bagus.

GPU yang sudah ada di sana, sudah tersedia untuk semua orang dan mereka bekerja.


5
Saya harus tidak setuju tentang "operasi yang paling menuntut komputasi" menjadi grafis, tentu saja tergantung pada siapa "kita" sebenarnya. Untuk pengguna umum, ya, tetapi di komunitas sains & teknik, ada banyak hal yang lebih menuntut daripada grafis. Bagaimanapun, grafik yang dapat diterima (seperti untuk game) dapat dilakukan dengan satu PC mid-range dan GPU combo. Masalah yang signifikan sering menggabungkan ratusan atau ribuan unit tersebut untuk mendapatkan kinerja dalam kisaran petaflop - dan kemudian masalah masih dapat memakan waktu berhari-hari atau berminggu-minggu.
jamesqf

Operasi yang paling menuntut secara komputasional yang saya harapkan dari komputer saya adalah secara teknis grafis, tetapi perhitungan struktur-dari-gerak bukanlah apa yang dipikirkan kebanyakan orang (atau perancang GPU) ketika mereka mendengar kata "grafis".
Tandai

5

Secara khusus, GPU bukan "inti" dalam arti "paralelisme tugas". Sebagian besar, itu dalam bentuk "paralelisme data". SIMD adalah "instruksi tunggal beberapa data". Artinya, Anda tidak akan melakukan ini:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

Ini berarti bahwa Anda memiliki 1024 petunjuk petunjuk yang semuanya melakukan tugas terpisah yang berjalan dengan laju yang berbeda. SIMD, atau "komputasi vektor" akan melakukan instruksi di seluruh array secara bersamaan, lebih seperti ini:

c = a * b

"Loop" ada di instruksi "*" dan "=", bukan di luar instruksi. Di atas akan melakukan ini untuk semua elemen 1024 pada saat yang sama, pada penunjuk instruksi SAMA untuk mereka semua. Ini seperti memiliki tiga register besar untuk a, b, dan c. Kode SIMD sangat terbatas, dan hanya berfungsi dengan baik untuk masalah yang tidak terlalu "bercabang".

Dalam kasus realistis, nilai SIMD ini tidak cukup besar 1024 item. Bayangkan sebuah variabel yang merupakan geng int32 yang terikat bersama. Anda dapat menganggap perkalian dan menetapkan sebagai instruksi mesin nyata.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

GPU nyata lebih rumit daripada SIMD, tetapi itulah intinya. Itu sebabnya Anda tidak bisa begitu saja melempar algoritma CPU acak ke GPU dan mengharapkan speedup. Semakin banyak instruksi yang dilakukan oleh percabangan algoritma, semakin tidak cocok untuk sebuah GPU.


5

Jawaban lain di sini cukup bagus. Saya akan membuang 2 sen saya juga.

Salah satu alasan mengapa CPU menjadi begitu meresap adalah karena mereka fleksibel. Anda dapat memprogram ulang untuk berbagai tugas yang tak terbatas. Dewasa ini lebih murah dan lebih cepat bagi perusahaan yang menghasilkan produk untuk tetap menggunakan CPU atau mikrokontroler kecil dalam sesuatu dan memprogram fungsionalitasnya daripada mengembangkan sirkuit khusus untuk melakukan tugas yang sama.

Dengan menggunakan perangkat yang sama dengan yang lain, Anda dapat memanfaatkan solusi yang diketahui untuk masalah menggunakan perangkat yang sama (atau serupa). Dan saat platform semakin matang, solusi Anda berkembang dan menjadi sangat matang dan dioptimalkan. Orang-orang yang mengkode pada perangkat ini juga mendapatkan keahlian dan menjadi sangat pandai dalam keahlian mereka.

Jika Anda membuat jenis perangkat baru dari awal, beberapa alternatif untuk GPU, akan butuh bertahun-tahun bahkan bagi pengguna awal untuk benar-benar pandai mengetahui cara menggunakannya. Jika Anda memasang ASIC ke CPU Anda, bagaimana Anda mengoptimalkan perhitungan pembongkaran ke perangkat itu?

Komunitas arsitektur komputer telah beramai-ramai dengan ide ini selama beberapa tahun (jelas itu sudah populer sebelumnya, tetapi baru-baru ini melihat kebangkitan). 'Akselerator' ini (istilahnya) memiliki berbagai tingkat pemrograman ulang. Masalahnya adalah, seberapa sempit Anda mendefinisikan ruang lingkup masalah yang bisa ditangani oleh akselerator Anda? Saya bahkan telah berbicara dengan beberapa orang yang sedang bekerja membuat akselerator menggunakan sirkuit analog dengan op-amp untuk menghitung persamaan diferensial. Ide bagus, tapi cakupannya sangat sempit.

Setelah Anda memiliki akselerator yang berfungsi, kekuatan ekonomi akan memutuskan nasib Anda. Kelambanan pasar adalah kekuatan yang luar biasa. Sekalipun sesuatu adalah ide yang hebat, apakah layak secara ekonomi untuk memperbaiki solusi kerja Anda untuk menggunakan perangkat baru ini? Mungkin tidak.

GPU sebenarnya mengerikan untuk jenis masalah tertentu, sehingga banyak orang / perusahaan bekerja pada jenis perangkat lain. Tetapi GPU sudah sangat mengakar, apakah perangkat mereka akan menjadi layak secara ekonomi? Saya kira kita akan melihat.

Sunting: Memperluas jawaban saya sedikit, sekarang saya keluar dari bus.

Studi kasus peringatan adalah proyek Intel Larrabee. Ini dimulai sebagai perangkat pengolah paralel yang dapat melakukan grafik dalam perangkat lunak; itu tidak memiliki perangkat keras grafis khusus. Saya berbicara dengan seseorang yang bekerja di proyek, dan alasan utama mereka mengatakan itu gagal dan dibatalkan (selain politik internal yang mengerikan) adalah bahwa mereka tidak bisa membuat kompiler membuat kode yang baik untuk itu. Tentu saja itu menghasilkan kode kerja, tetapi jika seluruh titik produk Anda adalah kinerja maksimum, Anda lebih baik memiliki kompiler yang menghasilkan kode yang cukup optimal. Ini kembali ke komentar saya sebelumnya tentang kurangnya keahlian yang mendalam dalam perangkat keras dan perangkat lunak untuk perangkat baru Anda menjadi masalah besar.

Beberapa elemen desain Larrabee membuatnya menjadi Xeon Phi / Intel MIC. Produk ini benar-benar berhasil dipasarkan. Itu sepenuhnya terfokus pada paralelisasi perhitungan ilmiah dan tipe HPC lainnya. Sepertinya itu adalah kegagalan komersial sekarang. Orang lain yang saya ajak bicara di Intel menyiratkan bahwa mereka tidak bersaing dengan GPU.

Orang-orang telah mencoba untuk mengintegrasikan sintesis logika untuk FPGA ke dalam kompiler, sehingga Anda dapat secara otomatis menghasilkan kode untuk akselerator FPGA Anda. Mereka tidak bekerja dengan baik.

Satu tempat yang tampaknya menjadi tanah subur bagi akselerator, atau alternatif lain untuk GPU, adalah cloud. Skala ekonomi yang ada di perusahaan-perusahaan besar ini seperti Google, Amazon, dan Microsoft menjadikan investasi dalam skema komputasi alternatif bermanfaat. Seseorang telah menyebutkan unit pemrosesan tensor Google. Microsoft memiliki FPGA dan hal-hal lain di seluruh infrastruktur Bing dan Azure-nya. Kisah yang sama dengan Amazon. Sangat masuk akal jika skala dapat mengimbangi investasi Anda dalam waktu, uang, dan air mata insinyur.

Singkatnya, spesialisasi bertentangan dengan banyak hal lain (ekonomi, kematangan platform, keahlian teknik, dll). Spesialisasi dapat secara signifikan meningkatkan kinerja Anda, tetapi mempersempit ruang lingkup yang digunakan perangkat Anda. Jawaban saya terfokus pada banyak hal negatif, tetapi spesialisasi juga memiliki banyak manfaat. Ini benar-benar harus dikejar dan diselidiki, dan seperti yang saya sebutkan banyak kelompok mengejar itu cukup agresif.

Maaf, edit lagi: Saya pikir premis awal Anda salah. Saya percaya itu bukan kasus mencari sumber daya komputasi tambahan, dan lebih banyak kasus orang mengakui peluang. Pemrograman grafik sangat aljabar linier berat, dan GPU dirancang untuk secara efisien melakukan operasi umum seperti matrix-multiply, operasi vektor, dll. Operasi yang juga sangat umum untuk komputasi ilmiah.

Ketertarikan pada GPU dimulai ketika orang mulai menyadari bahwa janji-janji yang diberikan oleh proyek Intel / HP EPIC sangat dilebih-lebihkan (akhir 90-an awal 2000-an). Tidak ada solusi umum untuk paralelisasi kompiler. Jadi daripada mengatakan "di mana kita menemukan lebih banyak kekuatan pemrosesan, oh kita bisa mencoba GPU", saya pikir itu lebih "kita punya sesuatu yang bagus dalam perhitungan paralel, dapatkah kita membuat ini lebih umum diprogram". Banyak orang yang terlibat berada dalam komunitas komputasi ilmiah, yang sudah memiliki kode paralel Fortran yang dapat mereka jalankan pada mesin Cray atau Tera (Tera MTA memiliki 128 utas perangkat keras). Mungkin ada pergerakan dari kedua arah, tetapi saya hanya mendengar menyebutkan tentang asal-usul GPGPU dari arah ini.


Dengan "akselerator" yang Anda maksudkan dengan perangkat keras yang dibuat khusus atau kelompok super node komputasi berdaya rendah? Bisakah Anda menguraikan dengan memberikan referensi ke beberapa contoh perangkat keras akselerator.
manav mn

Maaf, saya pikir saya membuatnya jelas dari konteks. Accelerator hanyalah istilah umum untuk kartu coprocessor atau offload. Floating point pada awalnya di coprocessor dan bukan CPU utama, dan itu akan dianggap akselerator. GPU, DSP, Xeon Phi, FPGA ketika mereka menggunakan kartu PCIe atau yang serupa, persamaan persamaan diferensial analog yang saya sebutkan, ada perangkat yang membantu dalam virtualisasi, ada penelitian saat ini dalam akselerator jaringan saraf. Itu semua adalah contoh akselerator.
NerdPirate

4

masukkan deskripsi gambar di sini

ASIC (silikon khusus) sangat cepat, tetapi sangat mahal untuk desain dan pembuatan. ASIC digunakan untuk tujuan khusus, dan CPU adalah salah satu pendekatan yang memungkinkan komputer untuk "diprogram" sehingga tugas komputasi dapat dilakukan oleh perangkat lunak. Awal CPU memberi orang kemampuan untuk mengambil keuntungan dari kekuatan ASIC tanpa biaya besar dengan memprogram chip di lapangan. Pendekatan ini menjadi sangat sukses sehingga memunculkan komputer yang sangat cepat Anda gunakan saat ini.

Jadi mengapa GPU?

Pada pertengahan 90-an, 3DFX menyadari bahwa tugas rendering 3D sangat spesifik sehingga ASIC khusus akan melakukan JAUH lebih baik daripada CPU. Mereka menciptakan co-prosesor komputer yang mengeluarkan tugas rendering 3D dari CPU ke co-prosesor ini, yang mereka juluki "GPU". Persaingan dan permintaan pasar mendorong inovasi dalam ruang ini ke titik di mana GPU melakukan perhitungan jauh lebih cepat daripada CPU, jadi timbul pertanyaan, "Mengapa saya tidak bisa menggunakan GPU untuk menghitung angka-angka saya alih-alih CPU?" Pabrikan GPU melihat permintaan dan cara untuk menghasilkan lebih banyak uang, jadi mereka mulai mengubah platform mereka untuk memungkinkan pengembang menggunakan perangkat keras mereka. Tetapi perangkat keras perangkat keras itu begitu spesifik-tujuan sehingga ada, dan masih ada, batasan dalam apa yang dapat Anda minta GPU lakukan. Saya tidak akan membahas secara spesifik mengapa di sini.

Jadi mengapa tidak ada silikon yang lebih spesifik? Mengapa HANYA grafis?

Dua alasan: 1) Harga. GPU memiliki pasar yang bagus, dan dapat membenarkannya, tetapi bahkan saat itu, itu adalah risiko yang sangat besar. Tidak ada yang benar-benar tahu jika 3DFX bisa mendapat untung (ternyata, mereka tidak bisa benar-benar, dan mati). Bahkan sekarang, dengan ukuran pasar GPU, sebenarnya hanya ada 3 pesaing. 2) CPU benar-benar memenuhi kebutuhan "silikon kustom" dengan ekstensi instruksi. Pikirkan kembali ke MMX - ini sebenarnya adalah upaya Intel untuk mempercepat grafik di CPU tepat saat 3DFX mendapatkan kecepatan. Sejak itu, set instruksi x86 telah berkembang menjadi sangat masif dengan semua ekstensi khusus ini. Banyak dari ekstensi ini masuk akal pada saat itu (seperti MMX), tetapi sebagian besar hanya bobot mati di prosesor sekarang. Anda tidak dapat menghapusnya, karena itu merusak perangkat lunak yang ada. Saya t' sebenarnya salah satu nilai jual untuk ARM - ARM adalah set instruksi yang dipreteli. Tidak banyak ekstensi instruksi, tetapi ini membuat silikon lebih kecil dan lebih murah untuk diproduksi.

Sepertinya saya bisa menghasilkan banyak uang jika Anda bisa mengurangi biaya silikon kustom. Tidak adakah yang mengerjakan ini?

Ada teknologi yang disebut FPGA - bidang gerbang array yang dapat diprogram, yang sudah ada sejak awal komputasi. Ini pada dasarnya sebuah microchip yang dapat Anda desain "di lapangan" menggunakan perangkat lunak. Ini teknologi yang sangat keren, tetapi semua struktur yang diperlukan untuk membuat chip yang dapat diprogram membutuhkan BANYAK silikon dan menyebabkan chip berjalan pada kecepatan clock yang jauh lebih rendah. FPGA BISA lebih cepat daripada CPU, jika Anda memiliki cukup silikon pada chip DAN secara efektif dapat memparalelkan tugas. Tapi mereka terbatas pada seberapa banyak logika yang bisa kamu pakai pada mereka Semua kecuali FPGA termahal lebih lambat daripada GPU untuk penambangan bitcoin awal, tetapi rekan ASIC mereka secara efektif mengakhiri profitabilitas penambangan GPU. Cryptocurrency lain telah menggunakan algoritma spesifik yang tidak dapat diparalelkan, jadi FPGA dan ASIC '

Pembatas utama dengan FPGA adalah ukuran silikon - seberapa banyak logika yang bisa Anda masukkan pada chip? Yang kedua adalah clock speed, karena sulit untuk mengoptimalkan hal-hal seperti hot spot, kebocoran, dan cross-talk dalam FPGA. Metode fabrikasi yang lebih baru telah meminimalkan masalah ini, dan Intel telah bekerja sama dengan Altera untuk menyediakan FPGA yang dapat digunakan oleh para insinyur untuk memanfaatkan manfaat "silikon kustom" sebagai co-prosesor di server. Jadi itu datang, dalam arti tertentu.

Apakah FPGA akan pernah menggantikan CPU dan GPU?

Mungkin tidak dalam waktu dekat. CPU dan GPU terbaru adalah MASSIVE dan silikon yang sangat sesuai untuk kinerja termal dan listrik. Anda tidak dapat mengoptimalkan FPGA dengan cara yang sama seperti ASIC khusus. Kecuali beberapa teknologi yang inovatif, CPU kemungkinan akan tetap menjadi inti dari komputer Anda dengan FPGA dan GPU prosesor.


1
Banyak dari ekstensi ini masuk akal pada saat itu (seperti MMX), tetapi sebagian besar hanya bobot mati di prosesor sekarang. Render 3D jauh dari satu-satunya case-use untuk SIMD. Sebagian besar "berat" MMX adalah unit eksekusi, dan itu dapat dibagi dengan vektor yang lebih luas seperti SSE2, AVX2, dan AVX512. Itu banyak digunakan untuk pengkodean video berkualitas tinggi pada CPU, dan banyak tugas lainnya, termasuk komputasi kinerja tinggi. Tetapi juga implementasi perpustakaan dari memchr, strlen, dan banyak hal lainnya. mis. memfilter array lebih dari 1 elemen pada satu waktu
Peter Cordes

3

Memang ada papan khusus untuk komputasi kecepatan tinggi, misalnya Xilinx memiliki daftar 178 papan PCI-e menggunakan FPGA mereka, dan sekitar sepertiga dari papan ini adalah "pengolah angka" dengan satu atau beberapa chip FPGA yang kuat dan banyak memori papan DDR. Ada juga papan DSP berkinerja tinggi ( contoh ) yang ditujukan untuk tugas komputasi berkinerja tinggi.

Saya kira popularitas papan GPU berasal dari tujuan mereka pada kelompok pelanggan yang lebih luas. Anda tidak perlu berinvestasi dalam perangkat keras khusus untuk bermain dengan Nvidia CUDA, jadi saat Anda memiliki tugas yang memerlukan perangkat keras khusus, GPU Nvidia akan memiliki keunggulan kompetitif karena Anda sudah tahu cara memprogramnya.


2

Saya pikir jawaban untuk pertanyaan Anda tergantung pada bagaimana mendefinisikan komputasi kinerja tinggi.

Secara umum, perhitungan kinerja tinggi terkait dengan waktu perhitungan. Dalam hal ini, saya ingin berbagi tautan kluster komputasi berkinerja tinggi .

Tautan tersebut menentukan alasan penggunaan GPU; Penggunaan kartu grafis (atau lebih tepatnya GPU mereka) untuk melakukan perhitungan untuk komputasi grid jauh lebih ekonomis daripada menggunakan CPU, meskipun kurang tepat.


2
GPGPU kelas atas memiliki throughput yang baik untuk-64-bit double, bukan hanya 32-bit tunggal presisi float. (Beberapa GPU biasa berhemat pada HW untuk double). Vendor utama semua mendukung IEEE FP matematika (saya pikir bahkan dengan denormals). Jadi tidak ada kehilangan presisi kecuali Anda ingin memperdagangkan presisi untuk kinerja, misalnya dengan FP 16-bit setengah-presisi yang memiliki throughput yang lebih baik pada beberapa perangkat keras (dan tentu saja setengah bandwidth memori). Kode kinerja tinggi pada CPU sering menggunakan 32-bit floatjuga, untuk mendapatkan elemen dua kali lebih banyak per vektor SIMD dan setengah dari bandwidth memori.
Peter Cordes

1
@PeterCordes Saya telah melihat beberapa pekerjaan dalam komputasi perkiraan yang bahkan turun ke floating point delapan-bit, meskipun saya tidak berpikir banyak GPU mendukung hal itu dalam perangkat keras.
JAB
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.