Arsitektur GPU
Unit pemroses grafis (GPU) adalah prosesor paralel masif yang berorientasi pada throughput, dibangun dari banyak inti sederhana yang mengeksekusi ribuan thread untuk menyembunyikan latensi memori, awalnya untuk grafis dan kini banyak digunakan untuk komputasi tujuan umum dan pembelajaran mesin.
Definition
Arsitektur GPU adalah desain prosesor yang sangat paralel yang terdiri dari banyak inti ringan yang dikelompokkan ke dalam multiprosesor yang mengeksekusi sejumlah besar thread dalam kelompok yang sinkron, dioptimalkan untuk throughput aritmatika tinggi dan penyembunyian latensi daripada kecepatan single-thread.
Scope
Topik ini mencakup organisasi perangkat keras GPU: multiprosesor streaming, model eksekusi single-instruction multiple-thread (SIMT), warp dan blok thread, hierarki memori register, memori bersama, dan memori global, serta bagaimana GPU menyembunyikan latensi melalui multithreading masif. Ini memperlakukan GPU sebagai arsitektur paralel. Ini tidak termasuk ekstensi SIMD CPU (prosesor SIMD dan vektor) dan kerangka kerja perangkat lunak untuk pemrograman GPU di luar implikasi arsitektur.
Core questions
- Bagaimana GPU mencapai throughput tinggi dengan banyak inti sederhana alih-alih beberapa inti kompleks?
- Apa itu model eksekusi single-instruction multiple-thread, dan bagaimana warp bekerja?
- Bagaimana multithreading masif menyembunyikan latensi memori?
- Bagaimana hierarki memori GPU diatur untuk beban kerja paralel?
Key concepts
- multiprocessor streaming
- single-instruction multiple-thread (SIMT)
- warp dan blok thread
- multithreading masif
- penyembunyian latensi
- memori bersama, global, dan register
- penggabungan memori
- desain berorientasi throughput
Key theories
- Penyembunyian latensi melalui multithreading masif
- Alih-alih meminimalkan latensi untuk satu thread, GPU menjaga ribuan thread tetap berjalan dan beralih di antara kelompok yang siap setiap kali ada yang terhenti karena memori, sehingga paralelisme yang melimpah menjaga banyak unit aritmatika tetap sibuk dan menyembunyikan penundaan memori yang panjang.
Mechanisms
GPU terdiri dari banyak multiprosesor streaming, masing-masing mengeksekusi kelompok thread (warp) secara sinkron di bawah model SIMT. Thread diatur ke dalam blok yang berbagi memori on-chip yang cepat dan melakukan sinkronisasi secara lokal. Perangkat keras menjadwalkan banyak warp dan beralih di antara mereka dengan overhead mendekati nol, sehingga ketika satu warp menunggu memori, warp lain berjalan, menjaga unit aritmatika tetap sibuk; pola akses memori yang digabungkan memaksimalkan pemanfaatan bandwidth.
Clinical relevance
GPU telah menjadi pusat komputasi berkinerja tinggi dan kecerdasan buatan: desainnya yang berorientasi pada throughput menjadikannya platform dominan untuk melatih dan menjalankan jaringan saraf dalam, serta untuk simulasi ilmiah dan analitik data. Arsitekturnya menghargai algoritma paralel data dan akses memori yang digabungkan, membentuk cara perangkat lunak yang kritis kinerja ditulis.
History
GPU berevolusi dari pipeline grafis fungsi tetap pada tahun 1990-an menjadi shader yang dapat diprogram dan kemudian prosesor multi-inti yang sepenuhnya dapat diprogram. Pengenalan kerangka kerja komputasi GPU tujuan umum pada akhir 2000-an membukanya untuk beban kerja ilmiah dan data, dan throughput-nya menjadikannya mesin era pembelajaran mendalam dari tahun 2010-an dan seterusnya.
Debates
- Generalitas GPU versus akselerator khusus
- GPU adalah mesin throughput yang fleksibel, tetapi akselerator yang semakin terspesialisasi (seperti unit tensor dan matriks) menawarkan efisiensi yang lebih tinggi untuk beban kerja tertentu; perancang mempertimbangkan kemampuan program GPU dan penerapan luas terhadap efisiensi perangkat keras khusus.
Key figures
- David B. Kirk
- Wen-mei Hwu
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- kirk2016
Frequently asked questions
- Mengapa GPU sangat baik untuk pembelajaran mendalam?
- Melatih dan menjalankan jaringan saraf sebagian besar terdiri dari operasi matriks dan tensor padat dengan paralelisme data yang melimpah. Banyak inti GPU dan bandwidth memori yang tinggi mengeksekusi operasi ini dengan throughput yang sangat tinggi, jauh melebihi CPU tujuan umum pada beban kerja yang teratur dan paralel tersebut.
- Apa itu warp dalam eksekusi GPU?
- Warp adalah kelompok thread (umumnya 32) yang mengeksekusi instruksi yang sama secara sinkron di bawah model SIMT. Mengelompokkan thread ke dalam warp memungkinkan perangkat keras mengamortisasi kontrol instruksi di banyak elemen data, meskipun cabang yang berbeda dalam warp mengurangi efisiensi.