5 poin oleh GN⁺ 2023-10-22 | 1 komentar | Bagikan ke WhatsApp
  • Pemahaman dasar tentang GPU computing sangat penting bagi semua software engineer
  • Tulisan ini terutama berfokus pada GPU Nvidia dan menggunakan terminologi Nvidia
  • GPU dirancang untuk pemrosesan paralel skala besar dan throughput tinggi dalam grafis, komputasi numerik, deep learning, dan lainnya

Perbandingan CPU dan GPU

  • CPU dirancang untuk eksekusi instruksi secara berurutan, dan mencakup berbagai fitur untuk mengurangi latensi eksekusi instruksi.
  • GPU dirancang untuk pemrosesan paralel skala besar dan throughput tinggi, serta memiliki latensi eksekusi instruksi dari sedang hingga tinggi.
  • GPU dapat menangani jauh lebih banyak operasi dan melakukannya jauh lebih cepat dibanding CPU.

# Arsitektur GPU

Arsitektur komputasi GPU

  • GPU terdiri dari sekumpulan streaming multiprocessor (SM).
  • Setiap SM mencakup beberapa streaming processor (core atau thread).
  • SM memiliki jumlah memori on-chip yang terbatas (shared memory atau scratchpad), yang dibagikan oleh semua core.

Arsitektur memori GPU

  • GPU memiliki beberapa jenis memori dalam berbagai lapisan.
  • Setiap SM memiliki sejumlah besar register, yang dibagikan antar core.
  • Constant cache digunakan untuk menyimpan cache data konstan yang dipakai saat eksekusi kode.
  • Shared memory adalah memori SRAM on-chip yang cepat, berlatensi rendah, dan dapat diprogram.
  • Cache L1 menyimpan cache data yang sering diakses dari cache L2.
  • Cache L2 dibagikan oleh semua SM dan menyimpan cache data yang sering diakses dari global memory.
  • Global memory adalah DRAM berkapasitas besar dan bandwidth tinggi, tetapi berada jauh dari SM sehingga memiliki latensi tinggi.

# Memahami model eksekusi GPU

Pengantar singkat tentang kernel CUDA dan thread block

  • CUDA adalah antarmuka pemrograman untuk menulis program bagi GPU Nvidia.
  • Kernel adalah komputasi yang diekspresikan dalam bentuk mirip fungsi C/C++ yang dijalankan secara paralel di GPU.
  • Untuk menjalankan kernel, sejumlah thread yang disebut grid diluncurkan.

Tahapan eksekusi kernel di GPU

  1. Menyalin data dari host ke device
  2. Menjadwalkan thread block ke SM
  3. Single Instruction Multiple Thread (SIMT) dan warp
  4. Penjadwalan warp dan toleransi latensi
  5. Menyalin data hasil dari device ke memori host

# Konsep partisi sumber daya dan occupancy

  • Tingkat pemanfaatan sumber daya GPU diukur dengan metrik "occupancy", yang menunjukkan rasio jumlah warp yang dialokasikan terhadap jumlah maksimum warp yang dapat didukung SM.
  • Occupancy dibatasi oleh sumber daya eksekusi SM, register, shared memory, slot thread block, dan slot thread.
  • Penting untuk meminimalkan latensi sambil mempertahankan occupancy yang tinggi melalui optimisasi kode.

# Ringkasan

  • GPU terdiri dari banyak SM, dan setiap SM memiliki beberapa core pemrosesan.
  • Global memory berada jauh dari chip dan memiliki latensi tinggi.
  • Cache L1 dan L2 bekerja mirip dengan cache L1/L2 pada CPU.
  • Setiap SM memiliki shared memory, yang dibagikan antar core.
  • Untuk menjalankan kernel di GPU, grid thread diluncurkan.
  • GPU menetapkan block yang akan dijalankan pada SM, dan semua thread dijalankan pada SM yang sama.
  • Thread yang dialokasikan ke SM kemudian dikelompokkan lagi dalam unit berukuran 32 yang disebut warp.
  • GPU melakukan partisi sumber daya dinamis antar thread berdasarkan kebutuhan thread dan batasan SM.

# Penutup

  • GPU kini digunakan secara luas, dan arsitektur serta model eksekusinya secara mendasar berbeda dari CPU.
  • Tulisan ini membahas berbagai aspek GPU serta memberikan wawasan tentang alasan GPU digunakan secara luas dan cara kerjanya.

Opini GN⁺

  • GPU adalah teknologi esensial untuk deep learning dan komputasi numerik yang kompleks, dan tulisan ini membantu memahami arsitektur dasar serta model eksekusi GPU.
  • Isinya sangat penting terutama bagi software engineer pemula yang tertarik pada pemrosesan paralel dan high-performance computing.
  • Tulisan ini memberikan pengetahuan dasar tentang pemrograman GPU dan menjadi materi menarik yang dapat memicu rasa ingin tahu terhadap bidang ini.

1 komentar

 
GN⁺ 2023-10-22
Opini Hacker News
  • Artikel ini dikritik karena terlalu berfokus pada Nvidia dan mengabaikan alternatif valid lain seperti Sycl, Sapphire Rapids, dan MI300 dari AMD.
  • Ada kritik bahwa artikel ini kurang membahas penyalinan asinkron untuk mencegah GPU menganggur saat transfer data berlangsung.
  • Artikel ini dipuji sebagai pengantar yang baik untuk pemrograman GPU, tetapi ada saran agar juga mengeksplorasi teknik yang lebih lanjut.
  • Sejumlah pembaca meragukan keakuratan klaim artikel bahwa hukum Little dalam teori antrean dapat diterapkan pada GPU.
  • Penjelasan artikel tentang arsitektur memori dikritik karena tidak menyebutkan bahwa cache tidak memberikan jaminan koherensi antar-thread.
  • Ada usulan untuk mengganti nama GPU menjadi PPU (Parallel Processing Units) agar lebih mencerminkan kemampuannya.
  • Artikel ini dipuji sebagai salah satu penjelasan yang lebih baik tentang pemrograman GPU dan direkomendasikan untuk digunakan dalam mentoring.
  • Pemrograman SIMD digambarkan sebagai sesuatu yang "liar", dengan perhitungan mudah untuk semua piksel tetapi sulit untuk kondisi percabangan.
  • Muncul pertanyaan tentang efisiensi penggunaan GPU untuk tugas komputasi array tertentu, dengan mempertimbangkan kebutuhan untuk mengirim data ke GPU dan mengambilnya kembali dari GPU.