Parallel Computation
Pengertian
Parallel
computing atau dalam bahasa Indonesia disebut juga sebagai komputasi paralel merupakan
salah satu pemrograman komputer yang memungkinkan untuk melakukan eksekusi
perintah secara bersamaan dan berbarengan dalam satu ataupun banyak prosesor dalam
sebuah CPU. Komputasi paralel diperlukan saat mengolah data dalam jumlah besar
ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka
jenis komputasi paralel ini diperlukan infrastruktur mesin parallel yang
terdiri dari banuak komputer yang dihubungkan dengan jaringan dan mampu bekerja
secara parallel untuk menyelesaikan suatu masalah, makadari itu diperlukan
aneka perangkat lunak untuk mengatur pembagian pekerjaan antara node dalam satu
mesin parallel, kemudian pemakai harus membuat pemrograman paralel untuk
merealisasikan komputasi.
Komputer
dikatakan sebagai mesin komputasi parallel jika memenuhi beberapa syarat
berikut ini:
·
Data yang diproses
dipecah menjadi bagian-bagian terpisah yang bekerja seara independen dan
terus-menerus.
·
Proses pengeksekusian
instruksi ganda, sehingga dalam sekali waktu bisa dihasilkan 2 atau lebih suatu
output data.
·
Dapat menyelesaikan
tugas lebih cepat dari pada dengan perangkat serial.
Permrosesan Terdistribusi
Pemrosesan
terdistribusi merupakan proses pendistribusian pengolahan paralel dalam
pemrosesan paralel menggunakan beberapa mesin, sehingga dapat dikatakan
kemampuan dari suatu komputer-komputer yang dijalankan secara bersamaan untuk
memecahkan suatu masalah dapat dilakukan dengan proses yang cepat.
Menurut
Gustafson proses terdistribusi dari sebuah komputasi paralel berjalan dengan
menggunakan dua atau lebih mesin untuk mmepercepat penyelesaian masalah dengan
memperhatikan faktor eksternal seperti kemampuan mesin dan kecepatan proses
tiap-tiap mesin yang digunakan.
Pendistribusian
pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Sebagai
contoh adalah bagaimana beberapa komunitas memungkinkan pengguna untuk medaftar
dan mendedikasikan komputer mereka sendiri untuk memproses beberapa data set
yang diberikan kepada mereka oleh server. Ketika ribuan pengguna mendaftar
untuk ini, banyak data dapat diproses dalam jumlah yang sangat singkat. Contoh
lain dari proses terdistribusi adalah ketika terdapat macam masalah yang
diberikan pada suatu master, maka dengan menggunakan komputer paralel masalah
tersebut akan terpecah menjadi beberapa bagian secara terdistribusi.
Arsitektur dari Komputer Parallel
Michael
J. Flynn menciptakan satu diantara sistem klasifikasi untuk komputer dan
program parallel yang dikenal dengan sebutan Taksonomi Flynn. Flynn
mengelompokan komputer dan program berdasarkan banyak set instruksi yang
dieksekusi dan banyaknya set data yang digunakan oleh instruksi tersebut.
Berikut merupakan arsitektur dari komputer paralel:
·
SISD (Sistem
Instruction stream, Single Data stream)
Merupakan komputer tunggal yang mempunyai satu unit
kontrol, satu unit prosesor, dan satu unit memori instruksi yang dilaksanakan
secara berurut, tetapi boleh juga overlap dalam tahapan eksekusi (overlap) satu
alur instruksi didecode untuk alur data tunggal.
·
SIMD (Single
Instruction stream, Multiple Data stream)
Komputer yang mempunyai beberapa unit prosesor di bawah
satu supervisi, satu unit common control. Setiap prosesor menerima instruksi
yang sama dari unit kontrol, tetapi beroperasi pada data yang berbeda. Sebagai
contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100
angka, dan kita menggunakan 5 prosesor. Pada setiap prosesor kita menggunakan
algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya
prosesor 1 mengolah data dari deretan atau urutan pertama hingga urutan ke 20,
prosesor 2 mengolah data dari urutan 21 sampai urutan ke 40, begitupun untuk
prosesor-prosesor yang lain. 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
Instruction stream, Single Data stream)
MISD menggunakan banyak prosesor dengan setiap prosesor
menggunakan instruksi yang berbeda, namun mengolah data yang sama. Hal ini
merupakan kebalikan dari model SIMD. Sebagai contoh, kita bisa menggunakan
kasus yang sama pada contoh model SIMD, namun cara penyelesaian yang berbeda.
Pada MISD, jika pada komputer pertama, kedua, ketiga, keempat, dan kelima
sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk
teknik pencariannya berbeda disetiap prosesor. Sampai saat ini berlum ada
komputer yang menggunakan komputer MISD.
·
MIMD (Multiple
Instruction stream, Multiple Data stream)
MIMD menggunakan banyak prosesor dengan setiap prosesor
memiliki instruksi berbeda dan mengolah data yang berbeda. Namun banyak
komputer yang menggunakan model MIMD juga memasukan komponen untuk model SIMD.
Beberapa komputer menggunakan model MIMD yaitu IBM POWER5, HP/Compaq AlphaServer,
Intel IA32, AMD Opteron, Cray XT3, dan IBM BG/L.
Pengatar Pemrograman GPU-CUDA
·
GPU (Graphic
Processing Unit)
GPU merupakan sebuah alat/hardware yang berfungsi sebagai
render grafis terdeteksi dalam kesatuan sistem hardware PC atau notebook. GPU
bisa berada pada video card khusus (VGA card) atau terintegrasi dalam
motherboard berupa integrated GPU. GPU berfungsi untuk mengolah dan
memanipulasi grafis pada CPU untuk nantinya ditampilkan dalam bentuk visual
grafis pada monitor (output).
·
CUDA (Compute Unified
Device Architecture)
CUDA merupakan arsitektur komputasi parallel yang
dikembangkan oleh NVIDIA. CUDA adalah mesih komputasi dalam perosesan grafis NVIDIA
unit (GPU) yang dapat diakses oleh pengembang perangkat lunak memlalui varian
dari bahasa pemrograman lunak melalui varian dari bahasa pemrograman standar industry.
CUDA merupakan kumpulan program-program yang menerjemahkan teks dalam bentuk
bahasa komputer berupa source code ke
dalam bentuk bahasa komputer yang lain (object code).
Arsitektur CUDA memungkinkan GPU (yang telah mensupport
CUDA) menjadi arsitektur terbuka seperti layaknya CPU. Hanya, tidak seperti
CPU, GPU memiliki arsitektur banyak-inti yang parallel. Setiap inti memiliki
kemampuan untuk menjalankan ribuan “thread” secara simultan. Jika aplikasi yang
dijalankan sesuai dengan arsiitektur ini, GPU dapat menyediakan keuntungan yang
lebih besar dari segi performa proses aplikasi tersebut.
Berikut meurpakan komponen pendukung CUDA:
Secara umum, komponen-komponen pendukung CUDA adalah:
- Aplikasi, merupakan perangkat lunak yang dibuat oleh pengguna, menggunakan bahasa pemrograman khusus (kembangan C).
- Pustaka perangkat lunak, ynag menyediakan layanan dasar untuk program aplikasi mengakses CPU maupun GPU.
- Perangkat keras khusus, yaitu GPU yang menyediakan mesin parallel.
- Perangkat keras CPU, sebagai mesin sekuensial.
Perbedaan Antara Komputasi Tunggal
dengan Komputasi Paralel
Berikut
ini merupakan gambar perbedaan antara komputasi tunggal dengan komputasi paralel:
a. Komputasi tunggal/seri
b. Komputasi parallel
Perbandingan antara serial
komputasi dan paralel komputasi. Pada sistem komputasi parallel terdiri dari
beberapa unit prosesor dan beberapa unit memori. Terdapat dua teknik yang
berbeda untuk mengakses data pada unit memori, yaitu shared memory address dan
message passing. Berdasarkan cara mengorganisasikan memori ini, komputer parallel
dibedakan menjadi shared memory parallel machine dan distributed memory parallel
machine.
Prosesor dan memori ini
didalam mesin parallel dapat dihubungkan (interkoneksi) secara statis maupun
dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory system (sistem
memori terdistribusi). Sambungan langsung peer to peer digunakan untuk
menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch
untuk menghubungkan antar prosesor dan memori.
Komunikasi data pada sistem parallel
memori tredistribusi, memerlukan alat bantu komunikasi. Alat bantu yang sering digunakan
oleh sistem seperti PC Jaringan pada saat ini adalah standar MPI (Message Passing
Interface) atau standar PVM (Parallel Virtual Machine) yang keduanya bekerja
diatas TCP/IP communication layer. Kedua standar ini memerlukan fungsi remote
access agar dapat menjalankan program pada masing-masing unit prosesor.
Salah satu protokol yang
dipergunakan pada komputasi parlel adalah Network File System (NFS). NFS merupakan
protokol yang dapat membagi sumber data melalui jaringan. NFS dibuat untuk
dapat independent dari jenis mesin, jenis sistem operasi, dan jenis protocol transport
yang digunakan. Hal ini dilakukan dengan menggunakan RPC. NFS memperbolehkan
user yang terlah diijinkan untuk mengakses file-file yang berada di remote host
sepserti mengakses file yang berada di lokal. Protocol yang digunakan adalah protocol
mount untuk menentukan host remote dan jenis file sistem yang akan diakses dan
menempatkan di suatu direktori, protocol NFS melakukan I/O pada remote file
system. Protocol mount dan protocol NFS bekerja dengan menggunakan RPC dan
mengirim dengan protocol TCP dan UDP. Kegunaan dari NFS pada komputasi parallel
adalah untuk melakukan sharing data sehingga setiap node slave dapat mengakses program
yang sama pada node master.
Software untuk Komputasi Paralel
Software
yang digunakan untuk komputasi parallel adalah PGI CDK, dimana aplikasi ini
telah dilengkapi dengan Cluster Development Kit. Software ini telah memiliki
feature yang lengkap bila ingin melakukan komputasi dengan parallel processing,
karena software ini telah mensupport MPI untuk melakukan perhitungan komputasi.
Perkembangan di Indonesia
Di
Indonesia, usaha untuk membangun infrastruktur mesin parallel sudah dimulai
sejak era 90-an, meski belum pada tahap serius dan permanen. Namun untuk
pemrograman paralel sudah sejak awal menjadi satu mata-kuliah wajib di banyak perguruan
tinggi terkait. Baru pada tahun 2005 dimulai pembuatan infrastruktur mesin
paralel permanen, misalnya yang dikembangkan oleh Grup Disika Teoritik dan
Komputasi di P2 Fisika LIPI. Didorong oleh perkembangan pemrograman parallel
yang lambat, terutama terkait dengan sumber daya manusia (SDM) yang
menguasainya, mesin parallel LIP ini kemudian dibuka untuk public secara
cuma-Cuma dalam bentuk LIPI Public Cluster (LPC). Saat ini LPC telah
dikembangkan lebih jauh menjadi gerbang komputasi GRID di Indonesia dengan
kerjasama global menjadi IndoGRID.
Pada
tahun berikutnya, dengan ddukungan dana dari proyek Inherent Diktim Fasilkom UI
juga membangun mesin paralel. Sementara itu pada tahun 2009, ITB membuat
kluster hybrid CPU dan GPU yang pertama di Indonesia dengan kemampuan hingga 60
inti CPU dan 1920 inti GPU
Kelebihan dari Komputasi Paralel
·
Waktu eksekusi jadi
lebih cepat
·
Throughput jadi lebih
tinggi
Kekurangan dari Komputasi Paralel
·
Perangkat keras
lainnya yang dibuthkan
·
Kebutuhan daya juga
lebih
·
Tidak baik untuk daya
rendah dan perangkat mobile
·
Paralel processing
adalah salah satu teknik komputasi modern
·
Biaya yang mahal
karena membutuhkan banyak prosesor.
Sumber:
Wow
BalasHapusSangat Informatif
BalasHapus