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
Posting Komentar