Selasa, Januari 22, 2013

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 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 :
  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 masing-masing 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. 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.

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 (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:
  • 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 :
  1. http://id.shvoong.com/internet-and-technologies/universities-research-institutions/2159327-parallel-processing/#ixzz1qmtgdvwh 
  2. https://docs.google.com/viewer?a=v&q=cache:0zmhoxtOsSQJ:khoirul280207.files.wordpress.com 
  3. http://ismarmiaty.blogspot.com/2010/03/message-passing-interface-mpi.html 
  4. http://blog.ub.ac.id/fauziahmayasari/2012/07/25/implementasi-parallel-processing/ 




Tidak ada komentar:

Posting Komentar