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 :
- Algroritma
- 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 :
- Dengan cara membuat protokol komunikasi ad hoc level rendah. Contohnya dengan menggunakan socket interface.
- Dengan menggunakan distributed communication library. Contohnya dengan menggunakan Message Passing Interface (MPI) library
- Dengan memanfaatkan layer software dengan maksud untuk menyembunyikan interconnect dari programmer.
Passing Message
Passing
Message adalah secara luas menggunakan model programming yang paralel Pesan
yang lewat/ sampaikan perbentengan dengan menciptakan ditetapkan perbaiki
jumlah tugas yang serupa dengan uniknya yang saling berhubungan dengan
mengirimkan dan menerima pesan ke dan dari satu sama lain.
Message
passing adalah paradigma fundamental untuk aplikasi DS. Suatu proses mengirimkan
message yang mewakili suatu request, Message di sampaikan ke penerima yang
kemudian memproses request tsb dan mengirim pesan balasan.
Kemudian,
balasan tersebut memicu request lainnya, yang berlanjut pada balasan berikutnya
dan seterusnya. Operasi dasar yang dibutuhkan untuk mendukung paradigma message
passing adalah send dan receive. Untuk komunikasi yang connection-oriented,
operasi connect dan disconnect juga dibutuhkan Dengan abstrasi yang disediakan
oleh model ini, proses yang saling terkoneksi melakukan operasi input dan
output satu sama lainnya, seperti halnya pada operasi I/O pada file. Operasi
I/O menyembunyikan detail komunikasi jaringannya pada level sistem operasi.
Antar muka pemrograman aplikasi soket berdasarkan pada paradigma ini.
PVM (Parsing 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 :
- Buat file hostfile yang berisi daftar node komputer dan nama user yang akan dipakai untuk komputasi paralel. Bila nama user pada semua komputer sama misailnya 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.
- Dapatkan IP masing-masing komputer pada file /etc/hosts/ host.allow dan /etc/hosts/hosts.equiv.
- Penambahan dan penghapusan host secara dinamis dapat dilakukan melalui konsole PVM. Bila IP tidak didefinisikan pada hostfile, cara ini dapat dilakukan.
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.
Gambar Program PVM |
MPI (Message Passing Interface)
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 :
- telah memiliki standar;
- dirancang berkinerja tinggi pada mesin-mesin paralel;
- tersedia secara bebas maupun komersial;
- dikembangkan banyak pihak;
- informasi penerapan dan pengujian dalam berbagai bahasa pemrograman dan sistem telah tersedia.
Kegunaan MPI yang lain adalah :
- menulis kode paralel secara portable
- mendapatkan performa yang tinggi dalam pemrograman paralel, dan
- 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.
Sumber :
- http://id.shvoong.com/internet-and-technologies/universities-research-institutions/2159327-parallel-processing/#ixzz1qmtgdvwh
- https://docs.google.com/viewer?a=v&q=cache:0zmhoxtOsSQJ:khoirul280207.files.wordpress.com
- http://ismarmiaty.blogspot.com/2010/03/message-passing-interface-mpi.html
- http://blog.ub.ac.id/fauziahmayasari/2012/07/25/implementasi-parallel-processing/
Tidak ada komentar:
Posting Komentar