A.
Parallelism Concept
Komputasi paralel merupakan salah satu teknik
komputasi, dimana proses komputasinya dilakukan oleh beberapa resources (
komputer ) yang independen, secara bersamaan. Komputasi paralel biasanya
diperlukan pada saat terjadinya pengolahan data dalam jumlah besar ( di
industri keuangan, bioinformatika, dll ) atau dalam memenuhi proses komputasi
yang sangat banyak. Selanjutnya, komputasi paralel ini juga dapat ditemui dalam
kasus kalkulasi numerik dalam penyelesaian persamaan matematis di bidang fisika
( fisika komputasi ), kimia ( kimia komputasi ), dll. Dalam menyelesaikan suatu
masalah, komputasi paralel memerlukan infrastruktur mesin paralel yang terdiri
dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara
paralel.
Untuk itu diperlukan aneka perangkat lunak
pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur
distribusi pekerjaan antar node dalam 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 paralel. Pemrograman paralel adalah teknik pemrograman komputer
yang memungkinkan eksekusi perintah / operasi secara bersamaan ( komputasi
paralel ), baik dalam komputer dengan satu ( prosesor tunggal ) ataupun banyak
( prosesor ganda dengan mesin paralel ) CPU. Bila komputer yang digunakan
secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang
terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan
adalah sistem terdistribusi ( distributed computing ). 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 yang anda butuhkan memotong
bawang akan lebih sedikit jika anda kerjakan berdua. Performa dalam pemrograman
paralel diukur dari berapa banyak peningkatan kecepatan ( speed up ) yang
diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong
bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa
melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak
2 kali.
B.
Distributed Processing
Distributed Processing adalah aktivitas
memproses informasi dalam suatu organisasi yang dijalankan oleh jaringan
komputer yang tersambung oleh saluran telekomunikasi yang terpusat pada
fasilitas induk komputer.
Proses ini menggunakan pemrosesan paralel
pada beberapa mesin. Misalnya proses transaksi yang terjadi pada beberapa mesin
ATM sebuah bank. Ketika ribuan nasabah menggunakan mesin ATM pada saat yang
bersamaan, bayangkan berapa banyak proses yang harus dikerjakan jika hanya
terdapat 1 komputer server. Oleh karena itu dengan menggunakan Distributed
Processing, beban pemrosesan yang besar dapat di kerjakan oleh beberapa
komputer yang terhubung oleh jaringan dalam waktu yang bersamaan secara
simultan. Beban pemrosesan yang besar itu dipecah menjadi beberapa beban kecil
guna mempercepat proses.
C.
Architectural Parallel Computer
Arsitektur paralel komputer menurut
Klasifikasi Flynn’s :
·
SISD
Single Instruction – Single Data. Komputer
jenis ini hanya memiliki satu prosesor ( single processor ). Dimana semua
instruksi di eksekusi secara serial ( terurut satu demi satu ) dan memungkinkan
adanya overlapping di setiap bagian instruksi dalam pelaksanaan eksekusi.
Komputer ini adalah tipe komputer konvensional. Beberapa contoh komputer yang
menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
·
SIMD
Single Instruction – Multiple Data. Komputer
jenis ini hanya dapat mengeksekusi satu instruksi dan memiliki lebih dari satu
prosesor. Satu eksekusi dilakukan secara paralel pada data yang berbeda pada
level lock-step. Komputer vektor adalah salah satu komputer paralel yang
menggunakan arsitektur ini. Beberapa contoh komputer yang menggunakan model
SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan
Cell Processor ( GPU ).
·
MISD
Multiple Instructions – Single Data. Belum
ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk
prototipe untuk penelitian. Teorinya komputer ini memiliki satu
prosesor dan mengeksekusi beberapa instruksi secara paralel tetapi praktiknya
tidak ada komputer yang dibangun dengan arsitektur ini karena sistemnya tidak
mudah dipahami.
·
MIMD
Multiple Instructions – Multiple Data.
Komputer jenis ini dapat mengeksekusi lebih dari satu instruksi secara paralel
dengan lebih dari satu prosesor. Tipe komputer ini yang paling banyak digunakan
untuk membangun komputer paralel, bahkan banyak supercomputer yang menerapkan
arsitektur ini. Beberapa komputer yang menggunakan model MIMD adalah IBM
POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
D.
Pengantar Thread Programming
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.
E.
Pengantar Massage Passing dan OpenMP
Message Passing Interface (MPI)
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 :
·
menulis kode paralel secara portable
·
mendapatkan performa yang tinggi dalam
pemrograman paralel
·
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.
F.
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.
Sumber:
1.http://www.slideshare.net/terminalpurba/rancang-bangun-penjadwalan-tugas-task-pada-komputasi-paralel-dengan-menggunakan-algoritma-cost-time-optimization
2.http://seto.citravision.com/berita-47-parallel-computation--distributed-processing.html
3.http://seto.citravision.com/berita-48-parallel-computation--architectural-parallel-computer.html
4.http://seto.citravision.com/berita-49-parallel-computation---pengantar-thread-programming.html
5.http://seto.citravision.com/berita-50-parallel-computation--pengantar-message-passing-openmp.html
6. https://www.scribd.com/doc/32982265/Parallel-Processing
7. http://dimasdisini.wordpress.com/2011/04/03/multicore-gpu-cuda/
Posted by:
Published: 2018-07-01T08:45:00+07:00
1 Komentar untuk "Parallel Computation"
apaan nih gua sebagai bocah pb terhina !!
"You must log in G+ to access the comment area".