GPU

Pengenalan Pemrograman GPU

Pengenalan Pemrograman GPU

Komputasi tujuan umum pada GPU (Graphics Processing Unit), lebih dikenal sebagai pemrograman GPU, adalah penggunaan GPU bersama dengan CPU (Central Processing Unit) untuk mempercepat komputasi dalam aplikasi yang secara tradisional hanya ditangani oleh CPU.Meskipun pemrograman GPU praktis hanya dapat dijalankan selama dua dekade terakhir, aplikasinya sekarang mencakup hampir semua industri. Misalnya, pemrograman GPU telah digunakan untuk mempercepat pemrosesan sinyal video, gambar digital, dan audio, fisika statistik, komputasi ilmiah, pencitraan medis, visi komputer, jaringan saraf dan pembelajaran mendalam, kriptografi, dan bahkan deteksi intrusi, di antara banyak bidang lainnya.

Artikel ini berfungsi sebagai pengantar teoretis yang ditujukan bagi mereka yang ingin mempelajari cara menulis program yang dipercepat GPU serta mereka yang hanya memiliki minat umum pada topik yang menarik ini.

Perbedaan Antara GPU dan CPU

Jauh sebelum resolusi tinggi, grafis 3D fidelitas tinggi menjadi norma, kebanyakan komputer tidak memiliki GPU. Sebagai gantinya, CPU menjalankan semua instruksi program komputer dengan melakukan operasi aritmatika, logika, kontrol, dan input/output (I/O) dasar yang ditentukan oleh instruksi. Untuk alasan ini, CPU sering digambarkan sebagai otak dari komputer.

Namun dalam beberapa tahun terakhir, GPU, yang dirancang untuk mempercepat pembuatan gambar untuk output ke perangkat tampilan, sering membantu CPU memecahkan masalah di area yang sebelumnya hanya ditangani oleh CPU.

Produsen kartu grafis Nvidia memberikan cara sederhana untuk memahami perbedaan mendasar antara GPU dan CPU: “CPU terdiri dari beberapa inti yang dioptimalkan untuk pemrosesan serial berurutan sementara GPU memiliki arsitektur paralel besar-besaran yang terdiri dari ribuan inti yang lebih kecil, lebih efisien. core yang dirancang untuk menangani banyak tugas secara bersamaan.”

Kemampuan untuk menangani banyak tugas pada saat yang sama membuat GPU sangat cocok untuk beberapa tugas, seperti mencari kata dalam dokumen, sementara tugas lain, seperti menghitung deret Fibonacci, sama sekali tidak mendapat manfaat dari pemrosesan paralel.

Namun, di antara tugas-tugas yang mendapat manfaat signifikan dari pemrosesan paralel adalah pembelajaran mendalam, salah satu keterampilan yang paling banyak dicari di bidang teknologi saat ini. Algoritme pembelajaran mendalam meniru aktivitas di lapisan neuron di neokorteks, memungkinkan mesin mempelajari cara memahami bahasa, mengenali pola, atau menyusun musik.

Sebagai hasil dari semakin pentingnya kecerdasan buatan, permintaan untuk pengembang yang memahami komputasi tujuan umum pada GPU telah melonjak.

CUDA Versus OpenCL Versus OpenACC

Karena GPU memahami masalah komputasi dalam hal primitif grafis, upaya awal untuk menggunakan GPU sebagai prosesor tujuan umum diperlukan merumuskan kembali masalah komputasi dalam bahasa kartu grafis.

Untungnya, sekarang jauh lebih mudah untuk melakukan komputasi yang dipercepat GPU berkat platform komputasi paralel seperti CUDA Nvidia, OpenCL, atau OpenACC. Platform ini memungkinkan pengembang untuk mengabaikan hambatan bahasa yang ada antara CPU dan GPU dan, sebagai gantinya, fokus pada konsep komputasi tingkat tinggi.

CUDA

Awalnya dirilis oleh Nvidia pada tahun 2007, CUDA (Compute Unified Device Architecture) adalah kerangka kerja berpemilik yang dominan saat ini. “Dengan CUDA, pengembang dapat secara dramatis mempercepat aplikasi komputasi dengan memanfaatkan kekuatan GPU,” menjelaskan kerangka kerja Nvidia.

Pengembang dapat memanggil CUDA dari bahasa pemrograman seperti C, C++, Fortran, atau Python tanpa keterampilan dalam pemrograman grafis. Terlebih lagi, CUDA Toolkit dari Nvidia berisi semua yang dibutuhkan pengembang untuk mulai membuat aplikasi berakselerasi GPU yang sangat mengungguli rekan-rekan mereka yang terikat CPU.

CUDA SDK tersedia untuk Microsoft Windows, Linux, dan macOS. platform CUDA juga mendukung antarmuka komputasi lainnya, termasuk OpenCL, DirectCompute Microsoft, OpenGL Compute Shaders, dan C++ AMP.

OpenCL

Awalnya dirilis oleh Khronos Group pada tahun 2009, OpenCL adalah standar bebas royalti terbuka yang paling populer untuk pemrograman paralel lintas platform. Menurut Khronos Group, “OpenCL sangat meningkatkan kecepatan dan daya tanggap dari spektrum aplikasi yang luas di berbagai kategori pasar termasuk game dan judul hiburan, perangkat lunak ilmiah dan medis, alat kreatif profesional, pemrosesan penglihatan, dan pelatihan jaringan saraf dan inferensi.”

OpenCL sejauh ini telah diimplementasikan oleh Altera, AMD, Apple, ARM, Creative, IBM, Imagination, Intel, Nvidia, Qualcomm, Samsung, Vivante, Xilinx, dan ZiiLABS, dan mendukung semua sistem operasi populer di semua platform utama, menjadikannya sangat serbaguna. OpenCL mendefinisikan bahasa seperti C untuk menulis program, tetapi API pihak ketiga ada untuk bahasa dan platform pemrograman lain seperti Python atau Java.

OpenACC

OpenACC adalah standar pemrograman termuda untuk komputasi paralel yang dijelaskan dalam artikel ini. Ini awalnya dirilis pada tahun 2015 oleh sekelompok perusahaan yang terdiri dari Cray, CAPS, Nvidia, dan PGI (Grup Portland) untuk menyederhanakan pemrograman paralel sistem CPU/GPU yang heterogen.

OpenACC adalah model pemrograman paralel portabel berbasis kinerja yang digerakkan oleh pengguna yang dirancang untuk para ilmuwan dan insinyur yang tertarik untuk mem-porting kode mereka ke berbagai platform dan arsitektur perangkat keras HPC yang heterogen dengan upaya pemrograman yang jauh lebih sedikit daripada yang diperlukan dengan tingkat rendah. model.,” menyatakan OpenACC di situs resminya.

Pengembang yang tertarik dengan OpenACC dapat memberi anotasi pada kode sumber C, C++, dan Fortran untuk memberi tahu GPU area mana yang harus dipercepat. Tujuannya adalah untuk menyediakan model untuk pemrograman akselerator yang portabel di seluruh sistem operasi dan berbagai jenis CPU dan akselerator host.

Yang Mana Yang Harus Saya Gunakan?

Pilihan antara ketiga platform komputasi paralel ini bergantung pada tujuan Anda dan lingkungan tempat Anda bekerja. Misalnya, CUDA banyak digunakan di dunia akademis, dan juga dianggap paling mudah dipelajari. OpenCL sejauh ini merupakan platform komputasi paralel yang paling portabel, meskipun program yang ditulis dalam OpenCL masih perlu dioptimalkan secara individual untuk setiap platform target.

Pelajari Pengkodean GPU di LinuxHint.com

Pemrograman GPU dengan Python

Pemrograman GPU dengan C++

Bacaan lebih lanjut

Untuk memahami CUDA, sebaiknya ikuti petunjuk di Panduan Memulai Cepat CUDA, yang menjelaskan cara mengaktifkan dan menjalankan CUDA di Linux, Windows, dan macOS. Panduan Pemrograman OpenCL AMD memberikan gambaran umum yang fantastis dan mendalam tentang OpenCL, tetapi mengasumsikan bahwa pembaca sudah familiar dengan tiga bab pertama dari Spesifikasi OpenCL. OpenACC menawarkan tutorial pengenalan tiga langkah yang dirancang untuk mendemonstrasikan cara memanfaatkan pemrograman GPU, dan informasi lebih lanjut dapat ditemukan di spesifikasi OpenACC.

Game Baris Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar Anda saat menggunakan Linux-ini juga dapat menjadi sumber hiburan karena Anda dapat menggunakannya untuk me...
Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Jika Anda suka bermain game di Linux dengan gamepad alih-alih sistem input keyboard dan mouse biasa, ada beberapa aplikasi yang berguna untuk Anda. Ba...
Alat Berguna untuk Gamer Linux
Jika Anda suka bermain game di Linux, kemungkinan besar Anda telah menggunakan aplikasi dan utilitas seperti Wine, Lutris, dan OBS Studio untuk mening...