Anda di halaman 1dari 9

Implementasi Parallel Processing 2012 07.

25 Parallel processing adalah penggunaan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, paralel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbeda-beda tanpa ada keterkaitan diantaranya.

Sebagian besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai lebih dari satu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan satu CPU dapat melakukan parallel processing dengan mneghubungkannya dengan komputer lain pada jaringan. Namun, parallel processing ini memerlukan software canggih yang disebut distributed processing software.

Paralel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Paralel processing disebut juga parallel computing. Parallel computing adalah salah satu teknik melakukan komputasi secara bersamaan. Biasanya digunakan saat kapasitas yang dibutuhkan 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 berbagai perangkat lunak pendukung yang disebut middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.

Gambar 1. Contoh struktur pengiriman permintaan dan jawaban dari parallel processing Arsitektur Komputer Parallel Berikut Taksonomi Flynn dan model pemrosesan parallel:

Gambar 2. Model Pemrosesan Paralel Keempat kelompok komputer tersebut adalah : 1. Komputer SISD (Single Instruction stream-Single Data stream) 1. Pada komputer jenis ini semua instruksi dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanyaoverlapping dalam eksekusi setiap bagian instruksi (pipelining). Pada umumnya komputer SISD berupa komputer yang terdiri atas satu buah pemroses (single processor). Namun komputer SISD juga mungkin memiliki lebih dari satu unit fungsional (modul memori, unit pemroses, dan lain-lain), selama seluruh unit fungsional tersebut berada dalam kendali sebuah unit pengendali. Skema arsitektur global komputer SISD dapat dilihat pada gambar 3.1

2.

Gambar 3.1 SISD 2. Komputer SIMD (Single Instruction stream-Multiple Data stream) 0. Pada komputer SIMD terdapat lebih dari satu elemen pemrosesan yang dikendalikan oleh sebuah unit pengendali yang sama. Seluruh elemen pemrosesan menerima dan menjalankan instruksi yang sama yang dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan data yang berbeda yang berasal dari aliran data yang berbeda pula. Skema arsitektur global komputer SIMD dapat dilihat pada gambar 3.2

1. 2. Gambar 3.2 SIMD 3. Komputer MISD (Multiple Instruction stream-Single Data stream) 0. Komputer jenis ini memiliki n unit pemroses yang masing-masing menerima dan mengoperasikan instruksi yang berbeda terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi pemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk prototipe untuk penelitian. Skema arsitektur global komputer MISD dapat dilihat pada gambar 3.3

1. 2. Gambar 3.3. MISD 4. Komputer MIMD (Multiple Instruction stream-Multiple Data stream) 0. Pada sistem komputer MIMD murni terdapat interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran dari dan ke memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD bersifat tightly coupledjika tingkat interaksi antara pemroses tinggi dan disebutloosely coupled jika tingkat interaksi antara pemroses rendah. Skema arsitektur global komputer MISD dapat dilihat pada gambar 3.4

Gambar 3.4 MIMD Paralel prosessing komputasi adalah proses atau pekerjaan komputasi di komputer dengan memakai suatu bahasa pemrograman yang dijalankan secara paralel pada saat bersamaan. Secara umum komputasi paralel diperlukan untuk meningkatkan kecepatan komputasi bila dibandingkan dengan pemakaian komputasi pada komputer tunggal. Berikut ini adalah gambar perbedaan antara komputasi tunggal dengan parallel komputasi :

Gambar 4.1. Komputasi Tunggal / serial

Gambar 4.2. Komputasi Paralel Implementasi Parallel Processing Implementasi Parallel Processing pada Ray Tracing Engine menggunakan POV-Ray berbasis MPI Yaitu mengimplementasikan parallel processing pada versi asli program ray tracing yang terkenal yaitu POV -Ray. Parallel processing pada algoritma ini melibatkan beberapa masalah yang biasa timbul pada komputasi parallel. Proses ray tracing sangat kompleks dan membutuhkan komputasi yang tinggi, untuk citra yang sangat kompleks dibutuhkan waktu berjam-jam bahkan berhari-hari untuk merender suatu kode POV-Ray. Maka dari itu kebutuhan untuk menaikkan kecepatan dari proses ini diwujudkan dalam implementasi parallel processing. Berikut contoh kasus implementasinya:

POV-Ray

POV-Ray (Persistence Of Vision Raytracer www.povray.org) adalah rendering engine 3 dimensi . Program ini menterjemahkan informasi dari file teks eksternal, mensimulasikan suatu cahaya yang berinteraksi dengan obyek dalam suatu scene untuk menghasilkan obyek 3 dimensi yang nyata. Berawal dari file teks yang berisi deskripsi dari scene (objects, lights, point o f view), programini dapat merender citra yang diinginkan. Algoritmanya bekerja baris demi baris. Fasilitas yang menarik dari POV-Ray ini adalah antialiasing. Antialiasing adalah teknik yang membantu untuk membuang sampling error, yang dapat menghasilkan c itra lebih baik. Dengan menggunakan antialiasing, POV-Ray memulai tracing a ray untuk setiap pixel. Jika warna dari pixel berbeda dengan warna pixel tetangganya (pixel yang ada di sebelah kiri dan di atas), kemudian dari jumlahnya lebih besar dari nilai th reshold, maka pixel tersebut adalah supersampled tracing a fixed number of additional rays. Teknik ini disebut supersampling dan dapat meningkatkan kualitas akhir dari sebuah citra namun itu juga meningkatkan waktu rendering menjadi lebih lama. Setelah men guraikan data input, POV-Ray menguraikan semua pixel dari citra untuk proses render, melalui horizontal scan dari setiap baris dari kiri ke kanan. Setelah selesai penguraian dari suatu baris maka akan ditulis dalam sebuah file atau ditampilkan pada layar lalu memperhitungkan baris berikutnya sampai pada yang terakhir.

Message Passing Interface (MPI).

MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing masing compute node yang kemudian masing masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node. Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan pertimbangan diantaranya adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor. MPI ini merupakan standard yang dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada mekanisme suatu

proses yang bisa mengakses secara langsung memori yang lain. Pembagian data antar proses dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan antar proses. 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.

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. Masingmasing 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.

Gambar 5. Program PVM 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.

Anda mungkin juga menyukai