PARALLEL PROCESSING PVM & MPI
Pemrosesan Paralel
Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari
satu CPU untuk menjalankan sebuah program secara simultan. Parallel processing
membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tujuan
utama dari pemrosesan paralel adalah untuk meningkatkan performa komputasi.
Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang
sama), semakin banyak pekerjaan yang bisa diselesaikan.
Komputasi paralel
Komputasi paralel adalah salah satu teknik melakukan komputasi secara
bersamaan dengan memanfaatkan beberapa komputer secara bersamaan.Biasanya
diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus
mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang
banyak.
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 node dalam satu mesin paralel. Selanjutnya pemakai harus membuat
pemrograman paralel untuk merealisasikan komputasi.
Pemrograman Paralel sendiri adalah teknik pemrograman komputer yang
memungkinkan eksekusi perintah/operasi secara bersamaan. Bila komputer yang
digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah
yang terhubung dalam satu jaringan komputer, biasanya disebut sistem
terdistribusi. Bahasa pemrograman yang populer digunakan dalam pemrograman
paralel adalah MPI (Message Passing Interface) dan PVM (Parallel Virtual
Machine).
Komputasi paralel membutuhkan :
·
Algoritma
·
bahasa pemrograman
·
compiler
Pemrograman Paralel
Pemrograman paralel
adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi
secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun
banyak (prosesor ganda dengan mesin paralel) CPU.Tujuan utama dari pemrograman
paralel adalah untuk meningkatkan performa komputasi.
Komunikasi data pada sistem paralel memori terdistribusi,
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.Mesin virtual
parallel atau Parallel Virtual Machine (PVM) dan Antarmuka Pengiriman Pesan
(MPI) adalah kumpulan library yang memungkinkan kita untuk menulis program
pengiriman pesan paralel menggunakan bahasa pemrograman C dan FORTRAN agar bisa
berjalan pada system paralel.
Kemampuan sistem
paralel tergantung dari kemampuan pemrogram untuk membuat aplikasi
terdistribusi ketika dijalankan pada sistem paralel. Jika node slave mempunyai
prosessor lebih dari satu maka pemrogram harus memperhitungkan kemungkinan
paralelisme 2 level: Paralelisme di dalam slave node (intra-node parallelism)
dan paralelisme antar slave node (inter-node parallelism).
Inter-node
parallelism menggunakan shared memory dalam node sehingga tidak melakukan
pertukaran data secaraexplicit. Sedangkan Inter-node parallelism melakukan
pertukaran data lewat media yang menghubungkan antara node slave yang ada.
Terdapat
tiga metode untuk mengimplementasikan Inter-node parallelism yaitu :
a. Dengan cara membuat
protokol komunikasi ad hoc level rendah. Contohnya dengan menggunakan socket
interface.
b. Dengan menggunakan
distributed communication library. Contohnya dengan menggunakan Message Passing
Interface (MPI) library
c. Dengan memanfaatkan
layer software dengan maksud untuk menyembunyikan interconnect dari programmer.
PVM (Parallel
Virtual Machine)
PVM (Parallel Virtual Machine) adalah paket software
yang mendukung pengiriman pesan untuk komputasi parallel antar komputer. PVM
dapat berjalan diberbagai macam variasi UNIX atau pun windows dan telah
portable untuk banyak arsitektur seperti PC, workstation, multiprocessor dan
superkomputer.
Sistem PVM terbagi menjadi dua. Pertama adalah daemon,
pvmd, yang berjalan pada mesin virtual masing-masing komputer. Mesin virtual akan
dibuat, ketika User mengeksekusi aplikasi PVM. PVM dapat dieksekusi
melalui prompt UNIX disemua host. Bagian kedua adalah library interface rutin
yang mempunyai banyak fungsi untuk komunikasi antar task . Library ini
berisikan rutin yang dapat dipanggil untuk pengiriman pesan, membuat proses
baru, koordinasi task dan konfigurasi mesin virtual.
Salah aturan main yang penting dalam PVM adalah adanya
mekanisme program master dan slave/worker. Programmer harus membuat Kode master
yang menjadi koordinator proses dan Kode slave yang menerima, menjalankan, dan
mengembalikan hasil proses ke komputer master. Kode master dieksekusi paling
awal dan kemudian melahirkan proses lain dari kode master. Masing-masing
program ditulis menggunakan C atau Fortran dan dikompilasi dimasing-masing
komputer. Jika arsitektur komputer untuk komputasi paralel semua sama,
(misalnya pentium 4 semua), maka program cukup dikompilasi pada satu
komputer saja. Selanjutnya hasil kompilasi didistribusikan kekomputer lain yang
akan menjadi node komputasi parallel. Program master hanya berada pada satu
node sedangkan program slave berada pada semua node.
Komunikasi dapat berlangsung bila masing-masing
komputer mempunyai hak akses ke filesystem semua komputer. Akses kefile system
dilakukan melalui protokol rsh yang berjalan di unix atau windows. Berikut
adalah langkah pengaturan pada masing-masing komputer :
1.
Buat file hostfile yang
berisi daftar node komputer dan nama user yang akan dipakai untuk komputasi
parallel. Bila nama user pada semua komputer sama misalnya nama user riset pada
komputer C1, C2,C3 dan C4, maka hostfile ini boleh tidak ada. Hostfile ini
dapat digunakan bila nama user di masing-masing komputer berbeda.
2.
Daftarkan IP
masing-masing komputer pada file /etc/hosts/hosts.allow dan
/etc/hosts/hosts.equiv.
3.
Penambahan dan
penghapusan host secara dinamis dapat dilakukan melalui konsole PVM. Bila IP
tidak didefinisikan pada hostfile¸ cara ini dapat digunakan.
Program PVM terdiri dari master dan slave, dimana
program master dieksekusi paling awal dan kemudian melahirkan proses lain. PVM
memanggil rutin pvm_spawn() untuk melahirkan satu atau dua proses lebih yang
sama. Fungsi-fungsi untuk PVM versi bahasa C mempunyai rutin awalan pvm.
Pengiriman dan penerimaan task diidentifikasi dengan TID (Task Identifier). TID
ini bersifat unik dan digenerate oleh pvmd lokal. PVM berisi beberapa rutine
yang mengembalikan nilai TID sehingga aplikasi user dapat mengidentifikasi task
lain disistem.
Pengiriman pesan antar komputer
Secara umum, langkah implementasi komputasi parallel
sebagai berikut :
1.
Jalankan PVM
daemon pada setiap mesin dalam cluster
2.
Jalankan
program master pada master daemon
3.
Master daemon
akan menjalankan proses slave.
Untuk mengimplementasikannya, anda dapat memakai tools
:
o
PVM versi 3.4.5,
virtual machine dan routine untuk komputasi parallel
o
rsh (remote
shell), aplikasi untuk authentikasi dan komunikasi proses antar komputer
o
Xpvm versi 1.2,
, interface grafis untuk PVM dengan animasi eksekusi komputasi parallel yang
dapat dilihat dilayar
Berikut adalah hasil video capture (dilinux) kinerja
komputasi paralel dengan PVM untuk menyelesaikan perkalian matriks :
[youtube bAusnHxFzXY]
Message Passing Interface (MPI)
Message Passing Interface (MPI) adalah sebuah standard
pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang
dapat dijalankan secara parallel dengan spesifikasi
library pemrograman untuk meneruskan pesan (message-passing), yang diajukan
sebagai standar oleh berbagai komite dari vendor, pelaksana dan Pemakai. MPI menyediakan
fungsi-fungsi untuk menukarkan antar pesan.
Message Passing
Interface bertugas untuk mengirim data antar komputer di dalam sistem paralel
(biasanya disebut sebagai node atau host). Job scheduler seperti yang tersirat
dari namanya bertugas menerima tugas dari user dan menjadwalkan tugas tersebut
pada beberapa node didalam sistem parallel sesuai kebutuhan.
MPI digunakan secara luas mengingat:
a.
telah
memiliki standar;
b.
dirancang
berkinerja tinggi pada mesin-mesin paralel;
c.
tersedia
secara bebas maupun komersial;
d.
dikembangkan
banyak pihak;
e.
informasi
penerapan dan pengujian dalam berbagai bahasa pemrograman dan sistem telah
tersedia.
Kegunaan MPI yang
lain adalah :
1. menulis kode paralel
secara portable
2. mendapatkan performa
yang tinggi dalam pemrograman paralel, dan
3. menghadapi
permasalahan yang melibatkan hubungan data irregular atau dinamis yang
tidak begitu cocok dengan model data
parallel.
Kemampuan MPI
digunakan untuk menginterpretasikan bahasa pemrograman matrik kemampuan dynamic
linking dari bahasa tersebut. Fungsi library dari paket MPI dapat digabungkan
dengan dynamic extension dengan cara menghubungkan bahasa pemrograman tersebut
dengan bahasa C, C++, atau FORTRAN. Hal ini telah dilakukan untuk menciptakan
toolbox MPI (MPITB) untuk kebutuhan MATLAB, dan bahasa pemrograman GNU Octave
oleh Fernandez Baldomero.
Penggunaan MPITB
dengan pertimbangan fungsionalitas dan kelengkapannya disamping fakta bahwa
MPITB dan GNU Octave adalah bebas digunakan bahkan untuk keperluan komersial.
Dalam pemodelan menggunakan message-passing, suatu proses
(process) adalah sebuah pencacah program dan ruang alamat. Proses dapat
memiliki banyak thread (pencacah program dan memory lokal) yang saling berbagi
ruang alamat. MPI dalam hal ini berfungsi sebagai alat komunikasi di antara
proses, yang saling memiliki ruang terpisah. Komunikasi ini terutama berupa
sinkronisasi dan perpindahan data antar proses. Informasi dari domain
komunikasi seluruh proses disimpan di sebuah variabel yang disebut commun-cators,
misalnya MPI_COMM_WOLRD yang mencakup keseluruhan proses. Paralelisme dalam MPI
bersifat Multiple Instruction Multiple Data (MIMD).
Pemrograman paralel menggunakan MPI bersifat eksplisit,
yaitu ditentukan dalam program secara jelas. Dalam melakukan komunikasi data
antar proses, pembuat program perlu menentukan mekanisme apa yang digunakan
dari fungsi-fungsi yang tersedia. Disediakan beberapa fungsi dasar untuk
keperluan ini, yaitu MPI_Send (mengirim), MPI_Recv (menerima), dan MPI_Sendrecv
(mengirim dan menerima sekali-gus). Fungsi-fungsi ini masuk dalam kelompok
ko-munikasi titik-ke-titik (point-to-point).
Komunikasi dalam MPI bersifat kooperatif, yaitu tiap-tiap
proses saling bekerjasama.
Parameter data atau message dalam fungsi-fungsi komunikasi memiliki struktur dasar, yaitu:
Parameter data atau message dalam fungsi-fungsi komunikasi memiliki struktur dasar, yaitu:
·
Alamat
buffer data untuk mengirim atau menerima.
·
Ukuran
dari buffer data.
·
Jenis
data pada buffer, berupa konstanta tertentu misalnya MPI_INTEGER, MPI_CHAR dan
MPI_DOUBLE.
·
Proses
tujuan, berupa suatu integer rank dari proses.
·
Tag dari
message, dapat digunakan sebagai penanda oleh proses.
Operasi dari fungsi-fungsi komunikasi titik-ke-titik
memiliki 2 mode, yaitu blocking dan non-blocking. Pada bentuk blocking maka
proses akan menunggu operasi kirim dan terima data selesai, sedangkan non-
blocking menggunakan event untuk memberitahu proses ketika terjadi kirim atau
terima data. Dalam tiap mode adalah penting untuk menjaga agar setiap proses
yang berkomunikasi tidak mengalami deadlock, yaitu saling tunggu yang tidak
berkesudahan.
MPI telah memiliki mekanisme agar deadlock tidak terjadi,
tetapi dalam kondisi tertentu ini tidak terhindarkan, misalnya ketika buffer
tujuan penuh atau tidak tersedia.
Referensi
:
http://staff.blog.ui.ac.id/herik/2008/07/02/pemrograman-paralel-dengan-parallel-virtual-machine-pvm/
2 Comment:
entry yang bagus,
terima kasih rangkuman nya mengenai MPI, sangat membantu saya dalam matakuliah komputasi paralel
terima kasih
Artikelnya keren kak, sangat membantu saya dalam menambah referensi untuk matkul System Terdistribusi, oh ya sebelumya perkenalkan nama saya Yuli Suseno dari kampus ISB Atma Luhur
Posting Komentar