PARALLEL COMPUTING (CUDA)

Nama: Bogie Akbar
Kelas: 4IA21
Mata Kuliah: Pengantar Komputasi Modern
Dosen: Indra Adi Permana

A.    Pengertian dan Perkembangan awal dari Parallel Computing (Komputasi Paralel)
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dll.
Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar nodedalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara parallel. Salah satu middleware orisinal yang dikembangkan di Indonesia adalah openPC[1] yang digawangi oleh GFTK LIPI dan telah diimplementasikan dengan di LIPI Public Cluster.

Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.

Bahasa populer dalam Pemrograman Paralel :
MPI (Message Passing Interface) = bahasa pemrograman dengan basis pertukaran pesan.
Open MP = cara kerja nya sama dengan MPI tetapi lebih mudah untuk digunakan.

Pada awalnya pemrograman paralel dilakukan pada CPU (Central Processing Unit) yang memiliki lebih dari 1 Core (Inti), dan pada saat itu hanya super computer saja yang memiliiki CPU dengan lebih dari 1 inti, dan paralelisasi dilakukan dengan melalui jaring komputer.


B.     Perkembangan Komputasi Paralel Pada Masa Kini
Komputasi paralel pada masa kini dapat diimplementasikan pada komputer-komputer rumah (Home User). Karena saat ini komputer-komputer sudah memiliki lebih dari 1 core, sehingga dapat diimplementasikan dengan mudah. Akan tetapi penggunaan CPU pada komputasi paralel dirasa kurang memiliki performance yang optimal, sehingga para developer dari NVIDIA mengembangkan hardware yang diberi nama GPU (Graphical Processing Unit) pada tahun 1999, GPU memiliki performance yang jauh lebih baik daripada CPU karena memiliki Core (Inti) yang lebih banyak daripada CPU, 1 inti dapat memiliki banyak thread (Benang), sehingga program dapat berjalan dengan optimal.

NVIDIA juga mengembangkan sebuah software yang dapat digunakan bersamaan dengan GPU NVIDIA, software tersebut diberi nama CUDA (Compute Unified Device Architecture). CUDA digunakan untuk mengendalikan GPU sehingga dapat berjalan dengan optimal dan dikendalikan dengan mudah. NVIDIA memiliki 3 arsitektur GPU yang dapat digunakan untuk komputasi paralel, arsitektur tersebut adalah :
·         NVIDIA Tesla Architecture
·         NVIDIA Fermi Architecture
·         NVIDIA Kepler Architecture
Arsitektur yang pertama kali diproduksi secara massal oleh NVIDIA adalah Tesla. Lalu selanjutnya dioptimalkan dengan Fermi, dan yang saat ini paling banyak digunakan adalah Kepler.


C.    Pararel Computing CUDA
1.      Penjelasan singkat CUDA
CUDA adalah platform komputasi paralel dan antarmuka pemrograman aplikasi (API) yang dibuat oleh Nvidia. Hal ini memungkinkan pengembang perangkat lunak dan insinyur perangkat lunak untuk menggunakan unit pemrosesan grafis (GPU) berkemampuan CUDA untuk pemrosesan tujuan umum - sebuah pendekatan yang diistilahkan GPGPU (komputasi General-Purpose pada Unit Pemrosesan Grafik). Platform CUDA adalah lapisan perangkat lunak yang memberikan akses langsung ke set instruksi virtual GPU dan elemen komputasi paralel, untuk eksekusi kernel komputasi.

Platform CUDA dirancang untuk bekerja dengan bahasa pemrograman seperti C, C ++, dan Fortran. Aksesibilitas ini memudahkan para ahli dalam pemrograman paralel untuk menggunakan sumber daya GPU, berbeda dengan API sebelumnya seperti Direct3D dan OpenGL, yang membutuhkan keterampilan tingkat lanjut dalam pemrograman grafis. Selain itu, CUDA mendukung kerangka kerja pemrograman seperti OpenACC dan OpenCL. Ketika pertama kali diperkenalkan oleh Nvidia, nama CUDA adalah akronim untuk Compute Unified Device Architecture, tetapi Nvidia kemudian menjatuhkan penggunaan akronim.
2.      Kemampuan Program
Platform CUDA dapat diakses oleh pengembang perangkat lunak melalui perpustakaan yang dipercepat CUDA, arahan kompilator seperti OpenACC, dan ekstensi untuk bahasa pemrograman standar industri termasuk C, C ++ dan Fortran. Programmer C / C ++ menggunakan 'CUDA C / C ++', dikompilasi dengan nvcc, kompiler C / C ++ berbasis LLVM dari Nvidia. Programmer Fortran dapat menggunakan 'CUDA Fortran', yang dikompilasi dengan compiler PGI CUDA Fortran dari The Portland Group.Selain pustaka, arahan kompilator, CUDA C / C ++ dan CUDA Fortran, platform CUDA mendukung antarmuka komputasi lainnya, termasuk OpenCL Khronos Group, Microsoft DirectCompute, OpenGL Compute Shaders, dan C ++ AMP. Pembungkus pihak ketiga juga tersedia untuk Python, Perl, Fortran, Java, Ruby, Lua, Common Lisp, Haskell, R, MATLAB, IDL, dan dukungan asli di Mathematica.

Dalam industri permainan komputer, GPU digunakan untuk perenderan grafis, dan untuk perhitungan fisika permainan (efek fisik seperti 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 dengan urutan besarnya atau lebih.
CUDA menyediakan API tingkat rendah dan API tingkat yang lebih tinggi. CUDA SDK awal dibuat publik pada 15 Februari 2007, untuk Microsoft Windows dan Linux. Dukungan Mac OS X kemudian ditambahkan dalam versi 2.0,yang menggantikan versi beta yang dirilis 14 Februari 2008. CUDA bekerja dengan semua GPU Nvidia dari seri G8x dan seterusnya, termasuk GeForce, Quadro dan garis Tesla. CUDA kompatibel dengan sebagian besar sistem operasi standar. Nvidia menyatakan bahwa program yang dikembangkan untuk seri G8x juga akan bekerja tanpa modifikasi pada semua kartu video Nvidia masa depan, karena kompatibilitas biner.

CUDA 8.0 dilengkapi dengan pustaka berikut (untuk kompilasi & waktu proses, dalam urutan abjad):
·         CUBLAS - CUDA Basic Linear Aljabar subrutin perpustakaan
·         CUDART - CUDA RunTime library
·         CUFFT - CUDA Transformasi Fourier Cepat
·         CURAND - CUDA Random Number Generation library
·         CUSOLVER - Koleksi berbasis CUDA dari pemecah langsung padat dan jarang
·         CUSPARSE - CUDA Sparse Matrix library
·         NPP - pustaka Kinerja NVIDIA Primitif
·         NVGRAPH - pustaka Analisis Grafik NVIDIA
·         NVML - Pustaka Manajemen NVIDIA
·         NVRTC - NVIDIA RunTime Compilation library untuk CUDA C ++

CUDA 8.0 dilengkapi dengan komponen perangkat lunak lain ini:

·         nView - NVIDIA nView Desktop Management Software
·         NVWMI - Toolkit Manajemen Perusahaan NVIDIA(chm)
·         PhysX - GameWorks PhysX adalah mesin permainan fisika multi-platform,
Sumber:

                                                         

Komentar