Jumat, 01 April 2016

Paralel Programming Model

Abstract

Pada dunia perkomputeran, model pemrograman paralel adalah abstraksi dari arsitektur komputer paralel dimana lebih ditekankan kepada penciptaan algoritma dan bentuk yang dimiliki dari sebuah program. Nilai penting dari sebuah model pemrograman dapat ditentukan dari kebebasannya, seberapa mampu program tersebut menyelesaikan berbagai macam masalah dengan variabel masalah yang berbeda-beda, dengan keadaan arsitektur yang berbeda serta performa yang dimiliki, seberapa efisien program yang telah dikompilasi untuk dieksekusi. Implementasi nyada dari pemrograman paralel dapat mengambil konsep kepustakaan yang dipanggil dari bahasa pemrograman sequensial sebagai ekstensi terhadap bahasa yang telah ada ataupun sebagai bahasa keseluruhan.

Programming Language

Sebagaimana telah dijelaskan bahwa pemrograman paralel adalah abstraksi dari asitektur komputer yang menekankan pada konsep program, maka dapat dinyatakan bahwa model pemrograman paralel menggunakan bahasa pemrograman khusu yang membuat model tersebut unik, adapun bahasanya sebagai berikut :

MPI (MESSAGE PASSING INTERFACE)

MPI (Message Passing Interface) adalah spesifikasi API (Application Programming Interface) yang memungkinkan terjadinya komunikasi antar komputer pada network dalam usaha untuk menyelesaikan suatu tugas. Paradigma Message – Passing dengan implementasi MPI memberikan suatu pendekatan yang unik dalam membangun suatu software dalam domain fungsi tertentu, yang dalam hal ini pada lingkungan sistem terdistribusi, sehingga memberikan kemampuan pada produk software yang dibangun diatas middleware tersebut untuk dapat mengeksploitasi kemampuan jaringan komputer dan komputasi secara paralel.

MPI adalah standar interface dari model message – passing yang didefenisikan oleh sebuah grup yang terdiri dari 60 orang yang berasal dari 40 organisasi baik vendor komersil maupun dari kalangan peneliti akademisi yang berada di Amerika Serikat dan Eropa. Dalam grup tersebut mereka mencoba merumuskan dan membuat sebuah “standard by consensus” untuk pustaka message – passing yang dapat digunakan dalam komputasi paralel.

MPI menjadi standar defacto yang banyak digunakan dalam komunikasi proses pada model dari program paralel pada sistem memori terdistribusi, yang mana banyak diimplementasikan oleh pada super komputer dan computer cluster. Pada spesifikasi MPI-1 tidak memiliki konsep tentang shared memory, kemudian pada spesifikasi selanjutnya MPI-2 sudah mendukung konsep distributed shared memory. Dengan kemampuan tersebut MPI dapat mengeksploitasi arsitektur lingkungan yang sifatnya heterogen atau bersifat arsitektur NUMA (Non-Uniform Memory Access).

Implementasi MPI merupakan sebuah API yang dapat dipanggil dari beberapa bahasa pemrograman seperti Fortran, C, ataupun C++, dan bersifat portable. Terdapat dua versi standar yang pada saat ini populer digunakan, yaitu versi 1.2 (MPI-1) yang berfokus pada message passing dan memiliki static runtime enviroment, dan MPI-2.1 (MPI-2) yang memasukkan fitur – fitur baru seperti parallel I/O, dynamic process management, remote memory operation dsb.
Tujuan MPI
MPI merupakan sebuah protokol komunikasi yang sifatnya language-independent, portable dalam mensupport berbagai platform, dan memiliki spesifikasi semantic yang mengatur bagaimana perilaku setiap impelementasinya. MPI mendukukung komunikasi baik dengan tipe point-to-point maupun yang bersifat kolektif. Secara umum MPI memliki tujuan sebagai berikut :
MPI akan menjadi sebuah library untuk membangun program aplikasi dan bukan distributed operating system.
MPI akan mendukung thread-safe yang penting dalam symmetric multiprocessor pada lingkungan jaringan komputer yang heterogen.
MPI akan mampu untuk men-deliver high-performance computing.
MPI akan bersifat modular, untuk mengakselerasi development pustaka paralel yang portable.
MPI akan bersifat extensible, sehingga dapat terus dikembangkan dan memenuhi kebutuhan komputasi masa akan datang.
MPI akan mendukung heterogeneos komputasi.
MPI akan memiliki semantic behavior yang telah terspesifikasi dengan jelas, sehingga dapat menghindari beberapa permasalahan kritis seperti race-conditions, dead-lock dsb.
PVM (PRIVATE 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.

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.

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 :

– PVM versi 3.4.5, virtual machine dan routine untuk komputasi parallel
– rsh (remote shell), aplikasi untuk authentikasi dan komunikasi proses antar komputer.
-Xpvm versi 1.2, , interface grafis untuk PVM dengan animasi eksekusi komputasi parallel yang dapat dilihat dilayar

Tidak ada komentar:

Posting Komentar