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.
Konsep Paralel
Konsep paralel adalah bentuk dari komputasi
yanng dapat melakukan tugas secara paralel. paralel sendiri diartikan secara
banyak dan serentak (waktu yang bersamaan). Biasanya konsep paralelisme ini
digunakan untuk memecahkan masalah besar dengan dengan mudah
Parallel computing dalam konsep penggunaan
komputer masa kini adalah penggunakan lebih dari satu CPU untukmenjalankan
sebuah program secara simultan. Parallel processing membuat program berjalan
lebih cepat karena semakin banyak CPU yang digunakan semakin ringan pemecahan
masalah masing-masing CPU. Seringkali sulit membagi program sehingga dapat
dieksekusi oleh CPU yang berbeda-beda tanpa berkaitan satu sama lainnya,
artinya program dijalankan dengan banyak CPU secara bersamaan dengan tujuan
untuk membuat program yang lebih baik dan dapat diproses dengan cepat.
Kesimpulannya, bahwa pada parallel processing berbeda dengan istilah
multitasking, yaitu satu CPU mengangani atau mengeksekusi beberapa program
sekaligus, parallel processing dapat disebut juga dengan istilah parallel
computing.
Distributed Processing
Distributed Processing adalah kemampuan
menjalankan semua proses pengolahan data secara bersama antara komputer yang
berfungsi sebagai pusat dengan beberapa komputer yang lebih kecil dan saling
dihubungkan melalui jalur komunikasi. Setiap komputer tersebut memiliki
prosesor mandiri sehingga mampu mengolah sebagian data secara terpisah,
kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total.
Jika salah satu prosesor mengalami kegagalan atau masalah maka prosesor yang
lain akan mengambil alih tugasnya. Dalam proses distribusi sudah mutlak
diperlukan perpaduan yang mendalam antara teknologi komputer dan
telekomunikasi, karena selain proses yang harus didistribusikan, semua host
komputer wajib melayani terminal-terminalnya dalam satu perintah dari komputer
pusat.
Arsitektur Komputer Paralel
Berdasarkan jumlah dan prinsip kerja prosesor
pada komputer paralel, A.J. Van der Steen dan J. Donggara menyebutkan terdapat
empat arsitektur utama komputer paralel menurut Flynn (1972) yaitu :
1) Komputer SISD (Single Instruction stream-Single Data stream)
Pada komputer jenis ini semua instruksi
dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping
dalam eksekusi setiap bagian instruksi (pipelining). Pada umumnya komputer SISD
berupa komputer yang terdiri atas satu buah pemroses (single processor). Namun
komputer SISD juga mungkin memiliki lebih dari satu unit fungsional (modul
memori, unit pemroses, dan lain-lain), selama seluruh unit fungsional tersebut
berada dalam kendali sebuah unit pengendali. Skema arsitektur global komputer
SISD.
2) Komputer SIMD (Single Instruction stream-Multiple Data stream)
Pada komputer SIMD terdapat lebih dari satu
elemen pemrosesan yang dikendalikan oleh sebuah unit pengendali yang sama.
Seluruh elemen pemrosesan menerima dan menjalankan instruksi yang sama yang
dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan data yang
berbeda yang berasal dari aliran data yang berbeda pula.
3) Komputer MISD (Multiple Instruction stream-Single Data stream)
Komputer jenis ini memiliki n unit pemroses
yang masingmasing menerima dan mengoperasikan instruksi yang berbeda terhadap
aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit
pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi
pemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis ini kecuali
dalam bentuk prototipe untuk penelitian.
4) Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat
interaksi di antara pemroses. Hal ini disebabkan seluruh aliran dari dan ke
memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD
bersifat tightly coupled jika tingkat interaksi antara pemroses tinggi dan
disebut loosely coupled jika tingkat interaksi antara pemroses rendah.
Pengantar Thread Programing
Threading / Thread adalah sebuah alur kontrol
dari sebuah proses. Konsep threading adalah menjalankan 2 proses ( proses yang
sama atau proses yang berbeda ) dalam satu waktu. Contohnya sebuah web browser mempunyai
thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain
berfungsi sebagai penerima data dari network. Threading dibagi menjadi 2 :
Static Threading
Teknik ini biasa digunakan untuk komputer
dengan chip multiprocessors dan jenis komputer shared-memory lainnya. Teknik
ini memungkinkan thread berbagi memori yang tersedia, menggunakan program
counter dan mengeksekusi program secara independen. Sistem operasi menempatkan
satu thread pada prosesor dan menukarnya dengan thread lain yang hendak
menggunakan prosesor itu.
Dynamic Multithreading
Teknik ini merupakan pengembangan dari teknik
sebelumnya yang bertujuan untuk kemudahan karena dengannya programmer tidak
harus pusing dengan protokol komunikasi, load balancing, dan kerumitan lain
yang ada pada static threading. Concurrency platform ini menyediakan scheduler
yang melakukan load balacing secara otomatis. Walaupun platformnya masih dalam
pengembangan namun secara umum mendukung dua fitur : nested parallelism dan
parallel loops.
Pengantar Massage Passing dan OpenMP
MPI adalah sebuah standard pemrograman yang
memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan
secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk
dikirimkan ke masing-masing compute node yang kemudian masing-masing compute
node tersebut mengolah dan mengembalikan hasilnya ke komputer head node.Untuk merancang
aplikasi paralel tentu membutuhkan banyak pertimbangan-pertimbangan diantaranya
adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor.
MPI ini merupakan standard yang dikembangkan untuk membuat aplikasi
pengirim pesan secara portable. Sebuah komputasi paralel terdiri dari sejumlah
proses, dimana masing-masing bekerja pada beberapa data lokal. Setiap proses
mempunyai variabel lokal, dan tidak ada mekanismesuatu proses yang bisa
mengakses secara langsung memori yang lain. Pembagian data antar proses
dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan
antar proses. MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan.
Kegunaan MPI yang lain :
1. menulis kode paralel secara portable
2. mendapatkan performa yang tinggi dalam
pemrograman paralel
3. menghadapi permasalahan yang melibatkan
hubungan data irregular atau dinamis yang tidak begitu cocok dengan model
data paralel.
OpenMP
OpenMP merupakan API yang mendukung
multi-platform berbagi memori multiprocessing pemrograman C , C + + , dan
Fortran , pada kebanyakan arsitektur prosesor dan system operasi , termasuk
Solaris , AIX , HP-UX , GNU / Linux , Mac OS X , dan Windows platform. Ini
terdiri dari satu set perintah kompiler, rutinitas library, dan variable
lingkungan yang mempengaruhi perilaku run-time. OpenMP dikelola oleh nirlaba
teknologi konsorsium OpenMP Arsitektur Review Board (ARB atau OpenMP),
bersama-sama didefinisikan oleh sekelompok perangkat keras komputer utama dan
vendor perangkat lunak, termasuk AMD , IBM , Intel , Cray , HP , Fujitsu ,
Nvidia , NEC , Microsoft , Texas Instruments , Oracle Corporation , dan banyak
lagi.
Pengantar Pemrograman CUDA GPU
GPU ( Graphical Processing Unit ) awalnya
adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering pada
kartu grafik saja, tetapi seiring dengan semakin meningkatnya kebutuhan
rendering, terutama untuk mendekati waktu proses yang realtime, maka meningkat
pula kemampuan prosesor grafik tersebut. akselerasi peningkatan teknologi GPU
ini lebih cepat daripada peningkatan teknologi prosesor sesungguhnya ( CPU ),
dan pada akhirnya GPU menjadi General Purpose, yang artinya tidak lagi hanya
untuk melakukan rendering saja melainkan bisa untuk proses komputasi secara
umum.
Penggunaan Multi GPU dapat mempercepat waktu proses dalam mengeksekusi
program karena arsitekturnya yang natively parallel. Selain itu Peningkatan
performa yang terjadi tidak hanya berdasarkan kecepatan hardware GPU saja,
tetapi faktor yang lebih penting adalah cara membuat kode program yang
benarbenar bisa efektif berjalan pada Multi GPU.
CUDA merupakan teknologi anyar dari produsen kartu grafis Nvidia, dan
mungkin belum banyak digunakan orang secara umum. Kartu grafis lebih banyak
digunakan untuk menjalankan aplikasi game, namun dengan teknologi CUDA ini
kartu grafis dapat digunakan lebih optimal ketika menjalankan sebuah software
aplikasi. Fungsi kartu grafis Nvidia digunakan untuk membantu Processor (CPU)
dalam melakukan kalkulasi dalam proses data.
CUDA merupakan singkatan dari Compute Unified Device Architecture,
didefinisikan sebagai sebuah arsitektur komputer parallel, dikembangkan oleh
Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan
gambar, video, rendering 3D, dan lain sebagainya. VGA – VGA dari Nvidia yang
sudah menggunakan teknologi CUDA antara lain : Nvidia GeForce GTX 280, GTX
260,9800 GX2, 9800 GTX+,9800 GTX,9800 GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400
mGPU,9300 mGPU,8800 Ultra,8800 GTX,8800 GTS,8800 GT,8800 GS,8600 GTS,8600
GT,8500 GT,8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri sejenis untuk
kelas mobile ( VGA notebook ).
Singkatnya, CUDA dapat memberikan proses dengan pendekatan bahasa C, sehingga
programmer atau pengembang software dapat lebih cepat menyelesaikan perhitungan
yang komplek. Bukan hanya aplikasi seperti teknologi ilmu pengetahuan yang
spesifik. CUDA sekarang bisa dimanfaatkan untuk aplikasi multimedia. Misalnya
meng-edit film dan melakukan filter gambar. Sebagai contoh dengan aplikasi
multimedia, sudah mengunakan teknologi CUDA. Software TMPGenc 4.0 misalnya
membuat aplikasi editing dengan mengambil sebagian proces dari GPU dan CPU. VGA
yang dapat memanfaatkan CUDA hanya versi 8000 atau lebih tinggi.
Referensi :
http://wildanwilly.blogspot.com/2017/04/paralel-computer-architecture.html
http://arifbudimanhsb.blogspot.com/2016/06/distributed-processing-adalah.html
http://naturaladli.blogspot.com/2016/06/konsep-komputasi-paralel.html