Pemrograman Prosesor Paralel Secara Massal: Pendekatan Praktik
Kursus ini menyediakan pengantar komprehensif tentang pemrograman GPU dan pemrograman paralel menggunakan lingkungan CUDA C. Kursus ini mencakup arsitektur GPU, paralelisme data, manajemen thread, optimasi memori, serta pertimbangan kinerja lanjutan, yang diilustrasikan melalui studi kasus dunia nyata seperti rekonstruksi MRI dan visualisasi molekuler.
Gambaran Umum Kursus
Ringkasan Konten
Kursus ini menyediakan pengantar komprehensif tentang komputasi GPU dan pemrograman paralel menggunakan lingkungan CUDA C. Materi mencakup arsitektur GPU, paralelisme data, manajemen thread, optimasi memori, serta pertimbangan kinerja tingkat lanjut, dilustrasikan melalui studi kasus dunia nyata seperti rekonstruksi MRI dan visualisasi molekuler.
Menguasai seni komputasi paralel berkinerja tinggi dengan panduan praktis dan langsung mengenai CUDA serta arsitektur GPU.
Penulis: David B. Kirk, Wen-mei W. Hwu
Ucapan Terima Kasih: Ian Buck, John Nickolls, tim NVIDIA DevTech, Jensen Huang, David Luebke, Bill Bean, Simon Green, Mark Harris, Manju Hedge, Nadeem Mohammad, Brent Oster, Peter Shirley, Eric Young, dan Cyril Zeller.
Tujuan Pembelajaran
- Membedakan filosofi desain dan tren kinerja antara CPU multikonek dan GPU many-core.
- Mengidentifikasi komponen utama dari arsitektur GPU modern, termasuk Streaming Multiprocessors (SMs) dan struktur memori.
- Menerapkan Hukum Amdahl untuk menghitung kecepatan teoretis dan mengidentifikasi dampak bottleneck sekuensial.
- Membandingkan perbedaan arsitektural antara pipeline tetap dan array prosesor terprogram seragam.
- Menjelaskan peran "GPGPU" sebagai langkah perantara dan keterbatasan model pemrograman shader awal.
- Menganalisis bagaimana fitur perangkat keras seperti operasi atomik, sinkronisasi barier, dan dukungan presisi ganda mendorong transisi ke komputasi umum berskala besar.
- Mengidentifikasi dan memanfaatkan paralelisme data dalam algoritma perkalian matriks-matriks.
- Melaksanakan manajemen memori perangkat termasuk alokasi, transfer data antara host dan perangkat, serta dealokasi.
- Membangun dan menjalankan kernel CUDA menggunakan indeks thread dan konfigurasi grid/block yang sesuai.
- Merancang hierarki thread multidimensi (Grid dan Block) untuk memetakan struktur data kompleks ke perangkat keras GPU.