General-Purpose Graphics Processing Unit (GPGPU) atau Unit Pemroses Grafik Serbaguna adalah unit grafik (GPU) yang diprogram untuk tujuan di luar kegunaan grafik semata, tapi juga bisa melakukan perhitungan yang biasanya dilakukan oleh Central Processing Unit (CPU).
Apa itu GPGPU?

GPGPU juga dikenal sebagai komputasi GPGPU, mengacu pada tren modern yang semakin umum dalam menggunakan GPU untuk komputasi non-khusus di samping tujuan komputasi tradisional mereka untuk mengolah grafik komputer. Memasukkan GPU untuk tujuan umum meningkatkan membantu arsitektur CPU dengan mempercepat bagian aplikasi sementara sisanya terus berjalan di CPU, yang pada akhirnya akan menciptakan aplikasi berperforma tinggi yang lebih cepat secara keseluruhan dengan menggabungkan daya CPU dan GPU.
Pemanfaatan GPU untuk tujuan umum dapat dilakukan melalui platform komputasi paralel, yang memungkinkan pengembang perangkat lunak dan mengakses kartu grafis dan menulis program yang memungkinkan GPU untuk menjalankan tugas apa pun yang dapat diparalelkan.
Sejarah GPU Multifungsi

Nvidia GeForce 3 adalah GPU pertama yang menampilkan shader yang dapat diprogram. Pada saat itu, tujuannya adalah membuat grafik 3D raster lebih realistis; kapabilitas GPU baru memungkinkan transformasi 3D, pemetaan specular, pemetaan bump, dan komputasi pencahayaan. GPU ATI Raddeon 9700, kartu berkemampuan DirectX 9 pertama mendekati fleksibilitas pemrograman CPU, meskipun beberapa penghitungan untuk tujuan umum dilakukan pada saat itu. Dengan diperkenalkannya Windows Vista, dibundel dengan DirectX 10, inti shader terpadu dan ditetapkan sebagai bagian dari standar. Potensi baru yang ditemukan dari GPU menunjukkan peningkatan kinerja beberapa kali lipat dari perhitungan berbasis CPU.
GPU vs GPGPU
Pada kenyataannya, semua GPU modern adalah GPGPU. GPU adalah prosesor yang dapat diprogram di mana kelompok inti dijalankan secara bersamaan dalam paralelisme secara masif, di mana setiap inti difokuskan pada pembuatan penghitungan yang efisien, menghitung waktu nyata dan analisis kumpulan data yang sangat besar. Sementara GPU pada awalnya dirancang terutama untuk tujuan rendering gambar atau pengolahan grafis, GPGPU sekarang dapat diprogram untuk mengarahkan kekuatan tersebut untuk memenuhi kebutuhan komputasi ilmiah juga.
Jika kartu grafis kompatibel dengan kerangka kerja tertentu yang menyediakan akses ke komputasi tujuan umum, itu adalah GPGPU. Perbedaan utama adalah di mana komputasi GPU merupakan komponen perangkat keras, GPGPU pada kenyataan adalah konsep perangkat lunak di mana pemograman khusus dan desain yang bertanggung jawab atas paralel besar-besaran dari kalkulasi non-khusus.
Apa itu Percepatan GPGPU?

Akselerasi GPGPU mengacu pada metode komputasi yang dipercepat, di mana bagian komputasi intensif dari suatu aplikasi ditetapkan ke GPU dan komputasi tujuan umum diturunkan ke CPU, hal ini memberikan tingkat paralelisme superkomputer. Sementara itu, penghitungan yang sangat kompleks dihitung di GPU, penghitungan sekuensial dapat dilakukan secara paralel di CPU.
Kerangka kerja untuk komputasi GPGPU yang dipercepat dapat dibuat dengan bahasa apa pun yang memungkinkan kode yang berjalan di CPU melakukan polling shader GPU untuk mendapatkan nilai yang dikembalikan. Akselerasi GPGPU menciptakan aplikasi yang lebih cepat secara keseluruhan dengan memigrasi data ke dalam bentuk grafis untuk diproses dan dianalisis oleh GPU, yang mengarah ke Analisis Akselerasi GPU yang berwawasan luas.
Cara Menggunakan GPGPU
Penulisan aplikasi yang mendukung GPU memerlukan platform komputasi paralel dan Application Programming Interface (API) yang memungkinkan pengembang perangkat lunak dan insinyur perangkat lunak membangun algoritme untuk memodifikasi aplikasi mereka dan memetakan kernel intensif komputasi ke GPU. GPGPU mendukung beberapa jenis memori dalam hierarki memori bagi desainer untuk mengoptimalkan program mereka.
Memori GPGPU digunakan untuk mentransfer data antara perangkat dan host – memori bersama adalah cara yang efisien bagi utas (thread) di blok yang sama untuk berbagi waktu proses dan datanya. Database GPU menggunakan daya komputasi GPU untuk menganalisis informasi dalam jumlah besar dan menampilkan hasil dalam milidetik.
GPGPU-Sim, yang dikembangkan di University of British Columbia, menyediakan model simulasi terperinci dari GPU kontemporer yang menjalankan beban kerja CUDA dan / atau OpenCL. Beberapa tolok ukur GPGPU open source yang berisi kode CUDA mencakup tolok ukur Rodinia, SHOC, modul Tensor di library template C ++ open source Eigen 3.0 untuk aljabar linier, dan tolok ukur SAXPY. Metal GPGPU, Apple Inc. API, adalah API pemrograman grafis tingkat rendah untuk iOS dan macOS tetapi juga dapat digunakan untuk komputasi tujuan umum pada perangkat ini.
NVIDIA merevolusi GPGPU dan komputasi yang dipercepat pada tahun 2007 dengan pembuatan Compute Unified Device Architecture (CUDA), bahasa komputasi de facto untuk pemrosesan gambar dan algoritme.
GPGPU di CUDA
Platform CUDA adalah lapisan perangkat lunak yang memberikan akses langsung ke set instruksi virtual GPU dan elemen komputasi paralel yang bertujuan untuk eksekusi kernel komputasi. Dirancang untuk bekerja dengan bahasa pemrograman seperti C, C ++, dan Fortran, CUDA adalah platform yang dengan mudah dapat diakses, tidak memerlukan keterampilan tingkat lanjut dalam pemrograman grafis, dan tersedia untuk pengembang perangkat lunak melalui pustaka CUDA yang dipercepat dan arahan kompiler. Perangkat berkemampuan CUDA biasanya terhubung dengan CPU host dan CPU host digunakan untuk transmisi data dan pemanggilan kernel untuk perangkat CUDA.
Model CUDA untuk GPGPU mempercepat berbagai macam aplikasi, termasuk GPGPU AI, analitik numerik, ilmu komputasi, pemrosesan gambar, dan pembelajaran mendalam. CUDA Toolkit mencakup pustaka yang dipercepat GPU, panduan pemrograman, kompiler, referensi API, dan runtime CUDA.
GPGPU dan masa depan grafik komputer
GPU yang pada awalnya dikembangkan untuk mempercepat 3D raster karena raytracing terlalu mahal dalam perhitungan telah melampaui kinerja CPU untuk grafik pra-render yang dilacak dengan sinar. Meskipun raytracing belum digunakan dalam game, namun telah ada demonstrasi atau ujicoba di dunia nyata. Kemajuan GPGPU berarti bahwa dalam waktu yang tidak terlalu lama, grafik komputer harus mampu memiliki geometri dan pencahayaan intensif yang sama seperti film 3D.