PengantarPemrograman CUDA GPU
CUDA, Compute Unified Device Architecture merupakan suatu
framework dari bahasa pemrograman yang mendukung bahas C language, dimana mampu
berkomunikasi langsung dengan GPU dan sangat mudah bekerjasama untuk segala
multi-threading parallel execution hampir diseluruh prosesor pada GPU.
CUDA menggukan konsep nvcc sebagai ORM dalam object programmingnya. CUDA
merupakan produk dari NVIDIA sebagai produsen graphic komputer ternama.
Platform CUDA dapat diakses oleh pengembang perangkat lunak
melalui library CUDA-accelerated , perintah kompiler (seperti OpenACC ), dan
ekstensi untuk bahasa pemrograman standar industri, termasuk C, C++ dan Fortran
. C / C++ programmer menggunakan CUDA C / C + +, yang disusun dengan
"nvcc", NVIDIA LLVM berbasis C / C++ compiler, dan Fortran programmer
dapat menggunakan 'CUDA Fortran', yang disusun dengan PGI CUDA Fortran compiler
dari The Portland Grup. Selain library, arahan compiler, CUDA C / C++ dan CUDA
Fortran, platform CUDA mendukung interface komputasi lainnya, termasuk Khronos
Grup 's OpenCL , Microsoft DirectCompute , dan C++ AMP . Pemrograman pihak
ketiga juga tersedia untuk Python , Perl , Fortran , Java , Ruby , Lua ,
Haskell, Matlab , IDL , dan dukungan asli di Mathematica.
Dalam permainan komputer industri, GPU yang digunakan tidak
hanya untuk rendering grafis tetapi juga dalam perhitungan fisika permainan
(efek fisik seperti puing-puing, asap, api, cairan), contoh termasuk PhysX dan
Bullet . CUDA juga telah digunakan untuk mempercepat aplikasi non-grafis dalam
biologi komputasi , kriptografi dan bidang lainnya oleh urutan besarnya atau
lebih.
§ GPU can't directly access main memory
§ CPU can't directly access GPU memory
§ Need to explicitly copy data
§ No printf
CUDA memiliki beberapa keunggulan dibandingkan tradisional
perhitungan tujuan umum pada GPU (GPGPU) menggunakan API grafis:
§ Tersebar membaca - kode dapat membaca dari alamat
sewenang-wenang dalam memori.
§ Memori bersama - CUDA memperlihatkan cepat memori
bersama wilayah (sampai 48KB per Multi-Processor) yang dapat dibagi di antara
benang. Ini dapat digunakan sebagai cache dikelola pengguna, memungkinkan
bandwidth yang lebih tinggi daripada yang mungkin menggunakan pencarian
tekstur.
§ Download lebih cepat dan readbacks ke dan dari
GPU.
Dukungan penuh untuk integer dan bitwise operasi,
termasuk pencarian tekstur bulat.
sumber: