This page needs JavaScript activated to work correctly !

This page will be redirect in 3 second !

Pengenalan GPU Programming - Programming | IDRaya.com

Pengenalan GPU Programming

Triawan PROGRAMMING 11/06/2021 0 Discuss 311 Views

Salah satu tujuan dari pemrograman paralel adalah memungkinkan eksekusi instruction/task (pekerjaan) secara bersamaan, baik menggunakan dua atau lebih komputer yang utamanya dikerjakan oleh CPU, sehingga inilah alasan mengapa dahulu CPU sering disebut sepenuhnya sebagai otak dari komputer. Namun seiring perkembangan teknologi khusnya untuk mempercepat pemrosesan grafis, dibuatlah Chip khusus atau yang lebih spesifik untuk mengelolahnya yang disebut dengan GPU (graphics processing unit). Pada taksonomi Flynn, GPU menggunakan pedekatan SIMD untuk menangani instruksi, namun dikenal dengan SIMT (Single Instruction, Multiple Threads).

Pemrosesan CPU dan GPU

Mudahnya CPU dirancang untuk dapat mengerjakan pekerjaan yang beragam, serta dioptimalkan untuk pemrosesan serial secara terurut, namun karena CPU juga dapat memiliki banyak Core sehingga memungkinkan untuk mengerjakan instruksi secara paralel. Sedangkan GPU merupakan processor yang memiliki ratusan atau bahkan ribuan Core (hukum Moore) yang dirancang secara paralel dan utamanya untuk mengelolah grafik. Didalam CPU modern sekarang ini juga telah tertanam GPU atau sering dikenal dengan Internal GPU, tetapi tidak secepat GPU External (Graphic Card) dan tentunya dibandingkan berdasarkan tahun keluaran yang sama.

Abstraksi Arsitekur CPU Vs GPU Gambar Abstraksi Arsitekur CPU Vs GPU.

Karena GPU memiliki jumlah Core yang sangat banyak, serta dapat melakukan dasar operasi matriks, maka teknologi penggunaan GPU tidak hanya untuk pemrosesan grafik saja. Misal GPU dapat digunakan terutama pada bidang ilmu pengetahuan (sains), penelitian, kriptografi dan bahkan dibidang energi (utamanya untuk menerapkan machine learning atau artificial inteligent).

Platform Parallel Programming

Untuk memahami komputasi paralel mengguakan GPU, dapat dilakukan menggunakan berbagai platform komputasi paralel yang umumnya dikembangan oleh vendor GPU itu sendiri. Beberapa yang sering digunakan seperti CUDA, OpenCL, OpenACC, dll. Platform disini dapat diartikan disediakannya API (Advanced Programming Interface) agar developer/programmer dapat memanfaatkan sumber daya GPU tanpa memelukan pengetahuan yang mendalam mengenai pemrograman grafis, sehingga GPU dapat digunakan untuk tujuan yang lebih umum.

a. Compute Unite Device Architecture (CUDA)

CUDA adalah platform komputasi paralel yang dikembangkan oleh NVIDA (sebagai salah satu vendor GPU) dirilis pertama kali tahun 2007, dan sekarang dapat dikatakan platform komputasi GPU paling dominan.

Sebagai Developer, CUDA dapat dipanggil melalui berbagai bahasa pemrograman seperti C, C++, Python, serta disediakannya CUDA Toolkit yang bersisikan hampir seluruh fitur untuk membuat aplikasi yang dapat diakselerasi GPU.

Software Development Kit (SDK) CUDA dapat dijalankan diberbagai sistem operasi, seperti Microsoft Windows, Linux, dan MacOS. Platfom CUDA juga mendukung berbagai antarmuka komputasi (Computational Interface) sperti OpenCL, DirectCompute dari Microsoft, OpenGL, dan C++ AMP (Accelerated Massive Parallelism).

b. Open Computing Language (OpenCL)

Platform atau Framework untuk menuliskan program yang dapat dieksekusi melalui berbagai heterogen processing unit (CPU, GPU, DSP, FPGA), dan diberbagai hardware akselerator lainnnya. OpenCL diinisialisasi oleh Khronos Group pada tahun 2009, bersifat open source serta bebas biaya, sehingga paling populer digunakan sebagai standar paralel programming yang bersifat cross-platform (tanpa tergantung vendor tertentu).

OpenCL sejahu ini telah banyak digunakan oleh berbagai Vendor GPU, seperti AMD, ARM, IBM, NVIDIA, Qualcomm, serta mendukung hampir di semua sistem operasi modern.

c. Open Accelerators (OpenACC)

Dirilis pada tahun 2015 oleh berbagai Vendor GPU seperti Cray, CAPS, NVIDA, dan PGI. Meskipun dapat dikatakan platform termuda, namun OpenACC dijadikan sebagai standar Platform paralel komputasi paralel yang dirancang untuk menyederhanakan pemrograman paralel sistem CPU/GPU yang heterogen. Sehingga OpenACC menjadi lebih portable dan banyak diimplementasikan pada HPC (High Performance Computing).

Developer yang tertarik membangun aplikasi menggunaakan OpenACC, dapat menspesifikasikan GPU untuk meningkatkan blok program mana yang harus diakselerasi, dan hal inilah yang dimaksud dengan portabilitas.

Referensi

  1. https://yosefk.com/blog/simd-simt-smt-parallelism-in-nvidia-gpus.html
  2. https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html

Agus Triawan/Triawan

 matriawan@gmail.com

Triawan is just an ordinary person, founder idraya[dot]com who just a little bit knows also likes try and error about devices, networks and programming/applications to solve challenges related to information technology.

If there is question, please discuss below. Very welcome and expected to provide corrections, criticisms, and suggestions.


We'll not share/display your email.
Example: Say <b>Hello</b> &lt;?php echo 'World'; ?&gt;
Output: Say Hello <?php echo 'World'; ?>
Words can come true for you, so be wise in speaking.

Be the first :D