Anda di halaman 1dari 25

Parallel PROCESSING

Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU
untuk menjalankan sebuah program secara simultan.
Idealnya, parallel processing membuat program berjalan lebih cepat karena
semakin banyak CPU yang digunakan.
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.
TUJUAN PARALLEL PROCESSING
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.

PARALLEL PROCESSING
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).

Yang perlu diingat adalah komputasi paralel berbeda dengan multitasking.


Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi
beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di
bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan
beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan
pada sistem operasi membuat komputer seperti mengerjakan tugas secara
bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa
komputasi paralel menggunakan beberapa processor atau komputer. Selain itu
komputasi paralel tidak menggunakan arsitektur Von Neumann.

Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal


(menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa
processor), maka kita harus mengetahui terlebih dahulu pengertian mengenai
model dari komputasi. Ada 4 model komputasi yang digunakan, yaitu:

SIMD
SIMD
MISD
MIMD

SISD

Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya
yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya
digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model
untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi

paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang


menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.

SIMD

Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD


menggunakan banyak processor dengan instruksi yang sama, namun setiap
processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka
27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5
processor. Pada setiap processor kita menggunakan algoritma atau perintah yang
sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari
deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari
urutan 21 sampai urutan 40, begitu pun untuk processor-processor 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

Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD


menggunakan banyak processor dengan setiap processor menggunakan instruksi
yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari
model SIMD. Untuk 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 di
setiap processor. Sampai saat ini belum ada komputer yang menggunakan model
MISD.

MIMD

Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD


menggunakan banyak processor dengan setiap processor memiliki instruksi yang
berbeda dan mengolah data yang berbeda. Namun banyak komputer yang
menggunakan model MIMD juga memasukkan komponen untuk model SIMD.
Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5,
HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

Singkatnya untuk perbedaan antara komputasi tunggal dengan komputasi paralel,


bisa digambarkan pada gambar di bawah ini:

Penyelesaian Sebuah Masalah pada Komputasi Tunggal

Penyelesaian Sebuah Masalah pada Komputasi Paralel

Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja
komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan
data yang banyak daripada komputasi tunggal.
Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan
kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena
komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus
mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita
hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil
atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.
Komputasi paralel membutuhkan :
algoritma
bahasa pemrograman
compiler

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.

* Message Passing Interface (MPI)


MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram
untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel.
MPI menyediakan fungsi-fungsi untuk menukarkan
antar pesan. 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 paralel.

* Message Passing Interface (MPI)


MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram
untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel.
MPI menyediakan fungsi-fungsi untuk menukarkan
antar pesan. 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 paralel.

Hubungan antara Komputasi Modern dengan Paralel Processing

Hubungan antara komputasi modern dan parallel processing sangat berkaitan,


karena penggunaan komputer saat ini atau komputasi dianggap lebih cepat
dibandingkan dengan penyelesaian masalah secara manual. Dengan begitu
peningkatan kinerja atau proses komputasi semakin diterapkan, dan salah satu
caranya adalah dengan meningkatkan kecepatan perangkat keras. Dimana
komponen utama dalam perangkat keras komputer adalah processor. Sedangkan
parallel processing adalah penggunaan beberapa processor (multiprocessor atau
arsitektur komputer dengan banyak processor) agar kinerja computer semakin
cepat.

Kinerja komputasi dengan menggunakan paralel processing itu menggunakan dan


memanfaatkan beberapa komputer atau CPU untuk menemukan suatu pemecahan
masalah dari masalah yang ada. Sehingga dapat diselesaikan dengan cepat
daripada menggunakan satu komputer saja. Komputasi dengan paralel processing
akan menggabungkan beberapa CPU, dan membagi-bagi tugas untuk masingmasing CPU tersebut. Jadi, satu masalah terbagi-bagi penyelesaiannya. Tetapi ini
untuk masalah yang besar saja, komputasi yang masalah kecil, lebih murah
menggunakan satu CPU saja.

http://bagusonthespot.blogspot.com/2012/04/parallel-processing.html

Konsep Paralel
Banyak perkembangan-perkembangan baru dalam arsitektur komputer yang
didasarkan pada konsep pemrosesan paralel. Pemrosesan paralel dalam sebuah
komputer dapat didefinisikan sebagai pelaksanaan instruksi-instruksi secara
bersamaan waktunya. Hal ini dapat menyebabkan pelaksanaan kejadian-kejadian
(1) dalam interval waktu yang sama, (2) dalam waktu yang bersamaan atau (3)
dalam rentang waktu yang saling tumpang tindih.
Sekalipun didukung oleh teknologi prosesor yang berkembang sangat pesat,
komputer sekuensial tetap akan mengalami keterbatasan dalam hal kecepatan
pemrosesannya. Hal ini menyebabkan lahirnya konsep keparalelan (parallelism)
untuk menangani masalah dan aplikasi yang membutuhkan kecepatan pemrosesan
yang sangat tinggi, seperti misalnya prakiraan cuaca, simulasi pada reaksi kimia,
perhitungan aerodinamika dan lain-lain.
Konsep keparalelan itu sendiri dapat ditinjau dari aspek design mesin paralel,
perkembangan bahasa pemrograman paralel atau dari aspek pembangunan dan
analisis algoritma paralel. Algoritma paralel itu sendiri lebih banyak difokuskan
kepada algoritma untuk menyelesaikan masalah numerik, karena masalah numerik
merupakan salah satu masalah yang memerlukan kecepatan komputasi yang

sangat tinggi.
Arsitektur Paralel
Paralelisme dalam suatu komputer dapat diaplikasikan pada beberapa tingkatan,
seperti berikut:
1. Tingkat pekerjaan: antara pekerjaan-pekerjaan atau fase-fase suatu pekerjaan.
Hal ini menjadi prinsip dasar dari multiprogramming.
2. Tingkat prosedur: antara prosedur-prosedur dan di dalam loop. Hal ini harus
tercakup sebagai hal yang penting bagi suatu bahasa.
3. Tingkat instruksi: antara fase-fase sebuah siklus instruksi, yaitu fetch, decode dan
eksekusi suatu instruksi.
4. Tingkat aritmatika dan bit: antara bit-bit dalam sirkuit aritmatika. Salah satu
contohnya adalah adder paralel.
Telah banyak usaha untuk mengklasifikasikan perancangan arsitektur komputer
paralel. Namun tidak ada satupun yang mampu memisahkan semua jenis
perancangan menjadi kelompok-kelompok yang berbeda. Skema klasifikasi yang
paling umum digunakan adalah taksonomi Flynn. Kita akan membahas pula dua
skema lainnya yaitu: Shore dan Feng.
Klasifikasi Flynn
Michael J. Flynn memperkenalkan suatu skema untuk mengklasifikasikan arsitektur
suatu komputer dengan melihat bagaimana mesinnya menghubungkan instruksiinstruksinya ke data yang sedang diproses. Berikut klasifikasinya:
1. SISD: single instruction stream, single data stream. Merupakan suatu komputer
serial konvesional dimana instruksi-instruksi dijalankan satu per satu dan sebuah
instruksi tunggal berhubungan dengan paling banyak satu operasi data.
2. SIMD: single instruction stream, multiple data stream. Dalam sebuah komputer
SIMD, suatu instruksi tunggal mengawali sejumlah besar operasi.
3. MISD: multiple instruction stream, single data stream. Kelas MISD melaksanakan
beberapa operasi instruksi secara bersamaan pada sebuah item data tunggal.
4. MIMD: multiple instruction stream, multiple data stream. Sebuah komputer MIMD
dicirikan oleh eksekusi lebih dari satu instruksi pada saat yang bersamaan, dimana
setiap instruksi beroperasi pada beberapa aliran data.
Klasifikasi Shore
J.E. Shore membuat klasifikasi arsitektur komputer yang didasarkan pada organisasi
bagian-bagian penyusun suatu komputer dan membedakannya menjadi enam jenis
mesin.
1. Mesin I. Pada komputer ini, satu instruksi dikerjakan pada suatu waktu dan
masing-masing beroperasi pada satu word dalam suatu waktu.
2. Mesin II. Komputer ini juga menjalankan satu instruksi pada suatu waktu, namun
ia beroperasi pada sebuah irisan dari suatu bit dalam suatu waktu, bukannya semua
bit dalam suatu word data.

3. Mesin III. Sebuah komputer dalam kelas ini memiliki dua unit pengolahan yang
dapat beroperasi pada data, satu word dalarn suatu waktu atau suatu irisan bit
dalam suatu waktu.
4. Mesin IV. Komputer jenis ini dicirikan oleh sejumlah elemen (unit pengolahan dan
unit memori), semua di bawah kendali sebuah unit kendali logika (CLU) tunggal.
5. Mesin V. Mesin V dihasilkan dengan mengubah Mesin IV sedemikian sehingga
elemen-elemen pengolahan dapat berkomunikasi dengn tetangga terdekat
mereka.
6. Mesin VI. Komputer ini, disebut sebagai array logika-dalam-memori, merupakan
sebuah mesin dengan logika prosesor yang tersebar dalam memori.
Klasifikasi Feng
Tse-yum Feng (1972) menyarankan pengklasifikasian arsitektur komputer atas
tingkatan paralelisme mereka. Tingkatan paralelisme (degree of parallelism) diwakili
oleh pasangan (n, m) dimana n merupakan panjang word dan m adalah panjang
irisan bit. Pasangan ini diklasifikasikan menjadi empat kelompok sebagai berikut:
1. Jika n = 1 dan m = I maka tidak terjadi paralelisme. Word dan bit diproses satu
per satuan waktu. Hal ini disebut sebagai word serial/bit serial(WSBS).
2. Jika n> 1 dan m = 1 maka paralelisme itu disebut sebagai word paralel/bit serial
(WPBS). Dalam hal ini, semua n irisan bit diproses satu per satuan waktu.
3. Paralelisme word serial/bit paralel (WSBP) terjadi jika n = 1 dan m> 1. Dengan
demikian sejumlah n word diproses satu per satuan waktu tetapi sejumlah m bit dan
masing-masing word diproses secara paralel.
4. Kategori terakhir disebut sebagai word paralel/bit paralel (WPBP) dan merupakan
suatu paralelisme dimana n > 1 dan m > 1. Dalam hal ini, sejumlah nm bit diproses
secara bersamaan.
Komputer sekuensial - berdasarkan klasifikasi Flynn adalah kelompok komputer
SISD - hanya mempunyai satu unit pengendali untuk menentukan instruksi yang
akan dieksekusi. Pada setiap satuan waktu hanya satu instruksi yang dapat
dieksekusi, dimana kecepatan akses ke memori dan kecepatan piranti masukan dan
keluaran dapat memperlambat proses komputasi. Beberapa metoda dibangun
untuk menghindari masalah tersebut, seperti penggunaan cache memory. Namun
komputer sekuensial ini tetap mengalami keterbatasan jika menangani masalah
yang memerlukan kecepatan tinggi. Hal-hal tersebut di atas pada akhirnya
melatarbelakangi lahirnya sistem komputer paralel.
Berdasarkan klasifikasi Flynn, komputer paralel termasuk kelompok SIMD atau
MIMD. Komputer paralel mempunyai lebih dari satu unit pemroses dalam sebuah
komputer yang sama. Hal yang membuat suatu komputer dengan banyak prosesor
disebut sebagai komputer paralel adalah bahwa seluruh prosesor tersebut dapat
beroperasi secara simultan. Jika tiap-tiap prosesor dapat mengerjakan satu juta
operasi tiap detik, maka sepuluh prosesor dapat mengerjakan sepuluh juta operasi
tiap detik, seratus prosesor akan dapat mengerjakan seratus juta operasi tiap
detiknya[Les93].

Pada dasarnya aktivitas sebuah prosesor pada komputer paralel adalah sama
dengan aktivitas sebuah prosesor pada komputer sekuensial. Tiap prosesor
membaca (read) data dari memori, memprosesnya dan menuliskannya (write)
kembali ke memori. Aktivitas komputasi ini dikerjakan oleh seluruh prosesor secara
paralel.
PVM (Parallel Virtual Machine)
PVM adalah perangkat lunak yang membuat sekumpulan komputer menjadi tampak
seperti sebuah sistem komputer virtual yang besar. Sekumpulan komputer yang
akan terlibat dalam proses penyelesaian masalah harus didefinisikan trelebih
dahulu, agar dapat menjalankan fungsinya. Komputer-komputer yang terlibat dalam
komputasi bisa homogen, dengan platform yang sama, maupun heterogen, dengan
platform yang berbeda, asal di antara mereka bisa saling berkomunikasi. PVM dapat
menangani semua pengiriman proses, konversi data, dan penjadwalan task secara
message passing untuk sistem yang tidak kompatibel sekalipun.
Sistem PVM terdiri dari dua bagian. Bagian pertama adalah daemon yang diberi
nama pvmd. Pvmd diaktifkan di setiap komputer yang akan membentuk mesin
virtual. Bagian kedua adalah pustaka rutin antarmuka PVM yang berisi koleksi
perintah-perintah primitif untuk mengoperasikan proses-proses pustaka tersebut.
Pustaka rutin ini digunakan dalam program aplikasi paralel yang ditulis dengan
bahasa pemrograman C, C++, atau FORTRAN 77. Aplikasi dalam bahasa
pemrograman C dan C++ dihubungkan melalui pustaka libpvm3.lib, sedangkan
aplikasi dalam bahasa pemrograman FORTRAN 77 dapat mengambil rutin-rutin
dalam libfpvm3.lib. Kedua pustaka tersebut telah tersedia pada saat instalasi.
PVM memberi fasilitas untuk membuat sejumlah proses yang tidak tergantung dari
jumlah prosesor. Setiap proses diidentifikasi menggunakan kode (task ID) dan
dipetakan ke prosesor secara otomatis, atau dapat juga diatur oleh programmer.
Program PVM umumnya diatur dengan model master-slave, yaitu satu proses yang
dieksekusi pertama kali menjadi master dan mengaktifkan semua client dengan
memanggil pvm_spawn. Rutin tersebut otomatis akan menjalankan semua proses
dalam sistem PVM. Cara lain untuk menjalankan proses adalah dengan memanggil
rutin pvm_mytid yang mengembalikan kode task ID dari proses tersebut. Sebelum
keluar dari sistem PVM, semua proses client harus dimatikan dari PVM dengan
memanggil rutin pvm_exit.
Komunikasi antar proses di dalam sistem PVM dilakukan secara message passing
menggunakan perintah rutin PVM seperti pvm_send dan pvm_recv. Semua rutin
pengiriman pesan dilakukan secara asinkron, sedangkan semua rutin penerimaan
pesan dapat dilakukan secara sinkron maupun asinkron. Ada tiga tahap dalam
mengirim pesan dalam PVM, yaitu :
> Menginisialisasi buffer pengiriman dengan rutin pvm_initsend
> Mengemas isi pesan ke dalam buffer dengan memanggil rutin pvm_pk*.
Data yang dikemas dapat bertipe byte, complex, double, float, integer, dan
character. Tipe tersebut dinyatakan dengan mengganti tanda * dan memberi tipe
yang sesuai untuk tiap parameter di dalam rutin pvm_pk*. Misalnya data yang akan

dikemas bertipe float, maka digunakan pvm_pkfloat().


> Mengirim pesan ke prosesor tujuan dengan memanggil pvm_send atau
pvm_mcast. Proses yang menerima pesan harus membuka paket pesan pada buffer
penerima sesuai dengan format pengiriman pesan.
PVM juga menyediakan rutin pvm_setopt untuk mengatur pilihan dalam sistem PVM,
seperti pencetakan pesan kesalahan secara otomatis, tingkat pencarian kesalahan
(debugging level), dan metode pengaturan jalur komunikasi. Contoh yang paling
umum dari penggunaan pvm_setopt adalah memungkinkan jalur komunikasi
langsung antar task dalam PVM. Pvm_setopt(PvmRoute, PvmRouteDirect);Dengan
perintah ini otomatis bandwidth komunikasi di dalam jaringan akan digandakan.
MPI (Message Passing Interface)
MPI(Message Passing Interface) adalah bahasa pemrograman dengan basis
petukaran pesan. Dalam implementasinya MPI menggunakan fungsi- fungsi pustaka
yang dapat dipanggil dari program C, C++, atau Fortran. Hampir sama dengan PVM,
MPI juga portable untuk berbagai arsitektur. Salah satu implementasi terbaru pada
saat ini yang berjalan pada lingkungan Windows adalah MPICH. Versi terakhirnya
adalah MPICH versi 1.2.5. Ditinjau dari sisi aplikasi, MPI hanya dapat digunakan
dengan model single program multiple data (SPMD), sedangkan PVM dapat
digunakan dengan model SPMD maupun multiple program multiple data (MPMD).
Model SPMD secara fisik ditunjukkan dengan program master dan slave yang
menyatu, sedangkan MPMD ditunjukkan dengan program master dan slave yang
terpisah, sehingga slave dapat mengerjakan tugas yang berbeda-beda antara satu
node dengan node lainnya.
MPI adalah bahasa-independen protokol komunikasi yang digunakan untuk program
paralel komputer. Keduanya baik point-to-point dan kolektif komunikasi
didukungnya. MPI "adalah pesan-melewati pemrogram aplikasi antarmuka,
bersama-sama dengan semantik protokol dan spesifikasi untuk fitur-fiturnya
bagaimana harus berlaku dalam setiap pelaksanaannya." MPI tujuan kinerja tinggi,
skalabilitas, dan portabilitas. MPI tetap dominan model yang digunakan dalam
komputasi kinerja tinggi hari ini.
MPI tidak disetujui oleh badan standar utama meskipun demikian, hal itu telah
menjadi de facto standar untuk komunikasi di antara proses-proses yang model
program paralel berjalan pada sistem memori terdistribusi. Meskipun demikian,
program-program MPI secara teratur dijalankan pada komputer memori bersama.
Walaupun MPI termasuk dalam lapisan 5 dan yang lebih tinggi dari OSI Reference
Model, implementasi dapat mencakup sebagian besar lapisan model referensi,
dengan soket dan TCP yang digunakan pada lapisan transport. Kebanyakan
implementasi MPI terdiri dari serangkaian rutinitas tertentu (yakni, sebuah API)
callable dari Fortran, C, C + + atau Java dan dari bahasa apa pun mampu
berinteraksi dengan routine libraries. Keuntungan dari MPI diantaranya: portabilitas
(karena MPI telah diterapkan untuk hampir semua arsitektur memori terdistribusi)
dan kecepatan (karena setiap pelaksanaan pada prinsipnya dioptimalkan untuk
perangkat keras yang dijalankan).

MPI sering dibandingkan dengan PVM, yang merupakan lingkungan dan


didistribusikan populer lewat pesan sistem yang dikembangkan pada tahun 1989,
dan yang merupakan salah satu sistem yang termotivasi kebutuhan standar sistem
lewat pesan paralel. Memori bersama pemrograman threaded model (seperti
pthreads dan OpenMP) dan pesan lewat pemrograman (MPI / PVM) dapat dianggap
sebagai pelengkap pendekatan pemrograman, dan kadang-kadang dapat dilihat
digunakan bersama-sama dalam aplikasi di mana arsitektur setelan ini, misalnya di
server dengan beberapa besar bersama memori node.

Konsep Paralel
Banyak perkembangan-perkembangan baru dalam arsitektur komputer yang
didasarkan pada konsep pemrosesan paralel. Pemrosesan paralel dalam sebuah
komputer dapat didefinisikan sebagai pelaksanaan instruksi-instruksi secara
bersamaan waktunya. Hal ini dapat menyebabkan pelaksanaan kejadian-kejadian
(1) dalam interval waktu yang sama, (2) dalam waktu yang bersamaan atau (3)
dalam rentang waktu yang saling tumpang tindih.

Sekalipun didukung oleh teknologi prosesor yang berkembang sangat pesat,


komputer sekuensial tetap akan mengalami keterbatasan dalam hal kecepatan
pemrosesannya. Hal ini menyebabkan lahirnya konsep keparalelan (parallelism)
untuk menangani masalah dan aplikasi yang membutuhkan kecepatan pemrosesan
yang sangat tinggi, seperti misalnya prakiraan cuaca, simulasi pada reaksi kimia,
perhitungan aerodinamika dan lain-lain.
Konsep keparalelan itu sendiri dapat ditinjau dari aspek design mesin paralel,
perkembangan bahasa pemrograman paralel atau dari aspek pembangunan dan
analisis algoritma paralel. Algoritma paralel itu sendiri lebih banyak difokuskan
kepada algoritma untuk menyelesaikan masalah numerik, karena masalah numerik
merupakan salah satu masalah yang memerlukan kecepatan komputasi yang
sangat tinggi.

Arsitektur Paralel
Paralelisme dalam suatu komputer dapat diaplikasikan pada beberapa tingkatan,
seperti berikut:
1. Tingkat pekerjaan: antara pekerjaan-pekerjaan atau fase-fase suatu pekerjaan.
Hal ini menjadi prinsip dasar dari multiprogramming.
2. Tingkat prosedur: antara prosedur-prosedur dan di dalam loop. Hal ini harus
tercakup sebagai hal yang penting bagi suatu bahasa.
3. Tingkat instruksi: antara fase-fase sebuah siklus instruksi, yaitu fetch, decode dan
eksekusi suatu instruksi.
4. Tingkat aritmatika dan bit: antara bit-bit dalam sirkuit aritmatika. Salah satu
contohnya adalah adder paralel.

Telah banyak usaha untuk mengklasifikasikan perancangan arsitektur komputer


paralel. Namun tidak ada satupun yang mampu memisahkan semua jenis
perancangan menjadi kelompok-kelompok yang berbeda. Skema klasifikasi yang
paling umum digunakan adalah taksonomi Flynn. Kita akan membahas pula dua
skema lainnya yaitu: Shore dan Feng.

Klasifikasi Flynn
Michael J. Flynn memperkenalkan suatu skema untuk mengklasifikasikan arsitektur
suatu komputer dengan melihat bagaimana mesinnya menghubungkan instruksiinstruksinya ke data yang sedang diproses. Berikut klasifikasinya:
1. SISD: single instruction stream, single data stream. Merupakan suatu komputer
serial konvesional dimana instruksi-instruksi dijalankan satu per satu dan sebuah
instruksi tunggal berhubungan dengan paling banyak satu operasi data.
2. SIMD: single instruction stream, multiple data stream. Dalam sebuah komputer
SIMD, suatu instruksi tunggal mengawali sejumlah besar operasi.
3. MISD: multiple instruction stream, single data stream. Kelas MISD melaksanakan
beberapa operasi instruksi secara bersamaan pada sebuah item data tunggal.
4. MIMD: multiple instruction stream, multiple data stream. Sebuah komputer MIMD
dicirikan oleh eksekusi lebih dari satu instruksi pada saat yang bersamaan, dimana
setiap instruksi beroperasi pada beberapa aliran data.

Klasifikasi Shore
J.E. Shore membuat klasifikasi arsitektur komputer yang didasarkan pada organisasi
bagian-bagian penyusun suatu komputer dan membedakannya menjadi enam jenis
mesin.
1. Mesin I. Pada komputer ini, satu instruksi dikerjakan pada suatu waktu dan
masing-masing beroperasi pada satu word dalam suatu waktu.
2. Mesin II. Komputer ini juga menjalankan satu instruksi pada suatu waktu, namun
ia beroperasi pada sebuah irisan dari suatu bit dalam suatu waktu, bukannya semua
bit dalam suatu word data.
3. Mesin III. Sebuah komputer dalam kelas ini memiliki dua unit pengolahan yang
dapat beroperasi pada data, satu word dalarn suatu waktu atau suatu irisan bit
dalam suatu waktu.
4. Mesin IV. Komputer jenis ini dicirikan oleh sejumlah elemen (unit pengolahan dan
unit memori), semua di bawah kendali sebuah unit kendali logika (CLU) tunggal.
5. Mesin V. Mesin V dihasilkan dengan mengubah Mesin IV sedemikian sehingga
elemen-elemen pengolahan dapat berkomunikasi dengn tetangga terdekat
mereka.
6. Mesin VI. Komputer ini, disebut sebagai array logika-dalam-memori, merupakan
sebuah mesin dengan logika prosesor yang tersebar dalam memori.

Klasifikasi Feng
Tse-yum Feng (1972) menyarankan pengklasifikasian arsitektur komputer atas
tingkatan paralelisme mereka. Tingkatan paralelisme (degree of parallelism) diwakili
oleh pasangan (n, m) dimana n merupakan panjang word dan m adalah panjang
irisan bit. Pasangan ini diklasifikasikan menjadi empat kelompok sebagai berikut:
1. Jika n = 1 dan m = I maka tidak terjadi paralelisme. Word dan bit diproses satu
per satuan waktu. Hal ini disebut sebagai word serial/bit serial(WSBS).
2. Jika n> 1 dan m = 1 maka paralelisme itu disebut sebagai word paralel/bit serial
(WPBS). Dalam hal ini, semua n irisan bit diproses satu per satuan waktu.
3. Paralelisme word serial/bit paralel (WSBP) terjadi jika n = 1 dan m> 1. Dengan
demikian sejumlah n word diproses satu per satuan waktu tetapi sejumlah m bit dan
masing-masing word diproses secara paralel.

4. Kategori terakhir disebut sebagai word paralel/bit paralel (WPBP) dan merupakan
suatu paralelisme dimana n > 1 dan m > 1. Dalam hal ini, sejumlah nm bit diproses
secara bersamaan.

Komputer sekuensial - berdasarkan klasifikasi Flynn adalah kelompok komputer


SISD - hanya mempunyai satu unit pengendali untuk menentukan instruksi yang
akan dieksekusi. Pada setiap satuan waktu hanya satu instruksi yang dapat
dieksekusi, dimana kecepatan akses ke memori dan kecepatan piranti masukan dan
keluaran dapat memperlambat proses komputasi. Beberapa metoda dibangun
untuk menghindari masalah tersebut, seperti penggunaan cache memory. Namun
komputer sekuensial ini tetap mengalami keterbatasan jika menangani masalah
yang memerlukan kecepatan tinggi. Hal-hal tersebut di atas pada akhirnya
melatarbelakangi lahirnya sistem komputer paralel.
Berdasarkan klasifikasi Flynn, komputer paralel termasuk kelompok SIMD atau
MIMD. Komputer paralel mempunyai lebih dari satu unit pemroses dalam sebuah
komputer yang sama. Hal yang membuat suatu komputer dengan banyak prosesor
disebut sebagai komputer paralel adalah bahwa seluruh prosesor tersebut dapat
beroperasi secara simultan. Jika tiap-tiap prosesor dapat mengerjakan satu juta
operasi tiap detik, maka sepuluh prosesor dapat mengerjakan sepuluh juta operasi
tiap detik, seratus prosesor akan dapat mengerjakan seratus juta operasi tiap
detiknya[Les93].
Pada dasarnya aktivitas sebuah prosesor pada komputer paralel adalah sama
dengan aktivitas sebuah prosesor pada komputer sekuensial. Tiap prosesor
membaca (read) data dari memori, memprosesnya dan menuliskannya (write)
kembali ke memori. Aktivitas komputasi ini dikerjakan oleh seluruh prosesor secara
paralel.

PVM (Parallel Virtual Machine)


PVM adalah perangkat lunak yang membuat sekumpulan komputer menjadi tampak
seperti sebuah sistem komputer virtual yang besar. Sekumpulan komputer yang
akan terlibat dalam proses penyelesaian masalah harus didefinisikan trelebih
dahulu, agar dapat menjalankan fungsinya. Komputer-komputer yang terlibat dalam
komputasi bisa homogen, dengan platform yang sama, maupun heterogen, dengan
platform yang berbeda, asal di antara mereka bisa saling berkomunikasi. PVM dapat
menangani semua pengiriman proses, konversi data, dan penjadwalan task secara
message passing untuk sistem yang tidak kompatibel sekalipun.
Sistem PVM terdiri dari dua bagian. Bagian pertama adalah daemon yang diberi
nama pvmd. Pvmd diaktifkan di setiap komputer yang akan membentuk mesin

virtual. Bagian kedua adalah pustaka rutin antarmuka PVM yang berisi koleksi
perintah-perintah primitif untuk mengoperasikan proses-proses pustaka tersebut.
Pustaka rutin ini digunakan dalam program aplikasi paralel yang ditulis dengan
bahasa pemrograman C, C++, atau FORTRAN 77. Aplikasi dalam bahasa
pemrograman C dan C++ dihubungkan melalui pustaka libpvm3.lib, sedangkan
aplikasi dalam bahasa pemrograman FORTRAN 77 dapat mengambil rutin-rutin
dalam libfpvm3.lib. Kedua pustaka tersebut telah tersedia pada saat instalasi.
PVM memberi fasilitas untuk membuat sejumlah proses yang tidak tergantung dari
jumlah prosesor. Setiap proses diidentifikasi menggunakan kode (task ID) dan
dipetakan ke prosesor secara otomatis, atau dapat juga diatur oleh programmer.
Program PVM umumnya diatur dengan model master-slave, yaitu satu proses yang
dieksekusi pertama kali menjadi master dan mengaktifkan semua client dengan
memanggil pvm_spawn. Rutin tersebut otomatis akan menjalankan semua proses
dalam sistem PVM. Cara lain untuk menjalankan proses adalah dengan memanggil
rutin pvm_mytid yang mengembalikan kode task ID dari proses tersebut. Sebelum
keluar dari sistem PVM, semua proses client harus dimatikan dari PVM dengan
memanggil rutin pvm_exit.
Komunikasi antar proses di dalam sistem PVM dilakukan secara message passing
menggunakan perintah rutin PVM seperti pvm_send dan pvm_recv. Semua rutin
pengiriman pesan dilakukan secara asinkron, sedangkan semua rutin penerimaan
pesan dapat dilakukan secara sinkron maupun asinkron. Ada tiga tahap dalam
mengirim pesan dalam PVM, yaitu :
> Menginisialisasi buffer pengiriman dengan rutin pvm_initsend
> Mengemas isi pesan ke dalam buffer dengan memanggil rutin pvm_pk*.
Data yang dikemas dapat bertipe byte, complex, double, float, integer, dan
character. Tipe tersebut dinyatakan dengan mengganti tanda * dan memberi tipe
yang sesuai untuk tiap parameter di dalam rutin pvm_pk*. Misalnya data yang akan
dikemas bertipe float, maka digunakan pvm_pkfloat().
> Mengirim pesan ke prosesor tujuan dengan memanggil pvm_send atau
pvm_mcast. Proses yang menerima pesan harus membuka paket pesan pada buffer
penerima sesuai dengan format pengiriman pesan.
PVM juga menyediakan rutin pvm_setopt untuk mengatur pilihan dalam sistem PVM,
seperti pencetakan pesan kesalahan secara otomatis, tingkat pencarian kesalahan
(debugging level), dan metode pengaturan jalur komunikasi. Contoh yang paling
umum dari penggunaan pvm_setopt adalah memungkinkan jalur komunikasi
langsung antar task dalam PVM. Pvm_setopt(PvmRoute, PvmRouteDirect);Dengan
perintah ini otomatis bandwidth komunikasi di dalam jaringan akan digandakan.

MPI (Message Passing Interface)


MPI(Message Passing Interface) adalah bahasa pemrograman dengan basis
petukaran pesan. Dalam implementasinya MPI menggunakan fungsi- fungsi pustaka
yang dapat dipanggil dari program C, C++, atau Fortran. Hampir sama dengan PVM,
MPI juga portable untuk berbagai arsitektur. Salah satu implementasi terbaru pada
saat ini yang berjalan pada lingkungan Windows adalah MPICH. Versi terakhirnya
adalah MPICH versi 1.2.5. Ditinjau dari sisi aplikasi, MPI hanya dapat digunakan
dengan model single program multiple data (SPMD), sedangkan PVM dapat
digunakan dengan model SPMD maupun multiple program multiple data (MPMD).
Model SPMD secara fisik ditunjukkan dengan program master dan slave yang
menyatu, sedangkan MPMD ditunjukkan dengan program master dan slave yang
terpisah, sehingga slave dapat mengerjakan tugas yang berbeda-beda antara satu
node dengan node lainnya.
MPI adalah bahasa-independen protokol komunikasi yang digunakan untuk program
paralel komputer. Keduanya baik point-to-point dan kolektif komunikasi
didukungnya. MPI "adalah pesan-melewati pemrogram aplikasi antarmuka,
bersama-sama dengan semantik protokol dan spesifikasi untuk fitur-fiturnya
bagaimana harus berlaku dalam setiap pelaksanaannya." MPI tujuan kinerja tinggi,
skalabilitas, dan portabilitas. MPI tetap dominan model yang digunakan dalam
komputasi kinerja tinggi hari ini.
MPI tidak disetujui oleh badan standar utama meskipun demikian, hal itu telah
menjadi de facto standar untuk komunikasi di antara proses-proses yang model
program paralel berjalan pada sistem memori terdistribusi. Meskipun demikian,
program-program MPI secara teratur dijalankan pada komputer memori bersama.
Walaupun MPI termasuk dalam lapisan 5 dan yang lebih tinggi dari OSI Reference
Model, implementasi dapat mencakup sebagian besar lapisan model referensi,
dengan soket dan TCP yang digunakan pada lapisan transport. Kebanyakan
implementasi MPI terdiri dari serangkaian rutinitas tertentu (yakni, sebuah API)
callable dari Fortran, C, C + + atau Java dan dari bahasa apa pun mampu
berinteraksi dengan routine libraries. Keuntungan dari MPI diantaranya: portabilitas
(karena MPI telah diterapkan untuk hampir semua arsitektur memori terdistribusi)
dan kecepatan (karena setiap pelaksanaan pada prinsipnya dioptimalkan untuk
perangkat keras yang dijalankan).
MPI sering dibandingkan dengan PVM, yang merupakan lingkungan dan
didistribusikan populer lewat pesan sistem yang dikembangkan pada tahun 1989,
dan yang merupakan salah satu sistem yang termotivasi kebutuhan standar sistem
lewat pesan paralel. Memori bersama pemrograman threaded model (seperti
pthreads dan OpenMP) dan pesan lewat pemrograman (MPI / PVM) dapat dianggap
sebagai pelengkap pendekatan pemrograman, dan kadang-kadang dapat dilihat
digunakan bersama-sama dalam aplikasi di mana arsitektur setelan ini, misalnya di
server dengan beberapa besar bersama memori node.

http://rrezzablog.blogspot.com/2009/11/parallel-processing.html

Pemrosesan Paralel PVM dan 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 :

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
menyembunyikan interconnect dari programmer.

maksud

untuk

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 :


1. 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 masingmasing komputer berbeda.
2. Dapatkan IP masing-masing komputer pada file /etc/hosts/ host.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 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. Fungsifungsi 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.

Ada beberapa versi MPI, salah satu yang open source adalah open MPI
http://www.open-mpi.org/.

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 (pointto-point). Komunikasi dalam MPI bersifat kooperatif, yaitu tiap-tiap proses saling
bekerjasama.
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.

http://sellyinthewords.blogspot.com/2013/01/pemrosesan-paralel-pvm-dan-mpi.html

Anda mungkin juga menyukai