Sabtu, 02 April 2011

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.

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 adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi (distributed computing).

Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.

SIMD merupakan salah satu bentuk dari paralel sinkron yang memproses satu instruksi dengan banyak prosesor elemen pada waktu yang sama. Di dalam SIMD yang paling penting bukanlah kontrol prosesor, melainkan data. Data diproses oleh masing-masing elemen pemroses yang berbeda dari satu prosesor ke prosesor lainnya. Sehingga satu program dan satu kontrol unit bekerja secara bersamaan pada kumpulan data yang berbeda.

SM : Shared Memory

IS : Instruction Stream

DS : Data Stream

v Beberapa Processor Unit (Processing Element) disupervisi oleh Control Unit yang sama.

v Semua Processing Element menerima instruksi yang sama dari control unit tetapi mengeksekusi data yang berbeda dari alur data yang berbeda pula.

v Subsistem memori berisi modul-modul memori.

v Processor vektor dan processor array termasuk dalam kategori ini.

U

ntuk memproses data secara efisien, SIMD membuat pengaturan proses menjadi dua phase, yaitu : pertama memilah dan mendistribusikan data (data partitioning and distribution) dan yang kedua memproses data secara paralel (data paralel prosesing). Jadi efisiensi akan tergantung kepada banyaknya permasalahan yang harus diselesaikan secara paralel. Cara terbaik dalam menggunakan SIMD adalah dengan mencocokan banyaknya permasalahan dengan banyaknya prosesor paralel. Banyaknya permasalahan berarti seberapa banyak jumlah data yang akan di perbaharui dan banyaknya prosesor paralel berarti jumlah prosesor yang tersedia. Jadi jika permasalahanya sebanding dengan prosesor paralel maka kecepatan tertinggi dapat terjadi, sebaliknya apabila permasalahan hanya satu dengan prosesor paralel yang banyak menyebabkan sistem SIMD menjadi tidak efektif. SIMD sering diidentikan sebagai permasalahan paralel yang sederhana, padahal tidaklah benar karena paradigma SIMD sangat berguna dalam menyelesaikan permasalahan yang memiliki beberapa data yang perlu diperbaharui secara serempak. Khususnya sangat berguna untuk perhitungan numerik biasa seperti perhitungan matrix dan vektor.

MIMD berarti banyak prosesor yang dapat mengeksekusi instruksi dan data yang berbeda-beda secara bersamaan. Lebih lanjut sebagai bagian dari komputer, prosesor memiliki otonom yang besar dalam melakukan operasinya. Secara umum MIMD digunakan ketika banyak permasalahan heterogen yang harus diselesaikan pada waktu yang sama. MIMD sangat baik digunkan untuk meneyelesaikan permasalahan yang besar, sebab melebihi data dan kontrol yang harus dilewatkan dari task ke task. Sebagai contoh dalam analogi sebuah Bank, MIMD akan menampilkan kerja terbaiknya ketika masing-masing teller memiliki beberapa transaksi yang harus diselesaikan satu persatu tanpa ada pembuangan waktu dan penghentian dari beberapa bagian transaksi. Tetapi pada sistem MIMD akan dibingungkan oleh aliran data (dataflow) paralel, karena aliran data tersebut harus dikerjakan oleh mesin MIMD secara terus menerus. Lalu mengapa digunakan sistem MIMD ?.

Pertama bahwa tiap-tiap prosesor bekerja secara independen kecuali untuk sistem sinkron tertentu harus menunggu. Prosesor menjalankan task yang pendek sebagai contoh selesainya mengevaluasi vektor satu elemen sebelum prosesor memproses task lebih jauh. Tentu saja prosesor dalam waktu yang singkat dapat melakukan beberapa pekerjaan yang berbeda, seperti waiting, comparing dan sending data.

Kedua, bahwa pada program paralel untuk menyelesaikan suatu task baik jumlahnya diketahui ataupun tidak, menggunakan prosesor yang jumlahnya tidak diketahui pula. Hal tersebut menggambarkan dua ciri mendasar dari sistem MIMD, yaitu :1. Kelamahan pada sentralisasi dan mekanisme sistem sinkron secara umum, dan 2. Penggeneralisasian task yang heterogen yang dioperasikan secara bersamaan, contohnya dalam memproses operasi yang berbeda dengan data berbeda dan dalam jangka waktu yang berbeda pula.

Secara umum MIMD meliputi paradigma reduksi/dataflow. Pada kenyataannya juga secara umum meliputi SIMD, sebab kita dapat menemui sifat SIMD pada sebagian sifat MIMD. Sehingga menghasilkan Kinerja akhir dari simulasi satu bentuk mesin dengan bentuk lainnya. Untuk menggabungkannya, mesin MIMD mengubah SIMD prosesor dimana masing-masing prosesornya mampu mengerjakan banyak task dari aplikasi yang berbeda pada waktu yang sama.

CU : Control Unit

PU : Processor Unit

MM : Memory Modul

IS : Instruction Stream

DS : Data Stream

ð Sejumlah prosesor secara simultan mengeksekusi rangkaian instruksi yang berbeda pada kumpulan data yang berbeda pula.

ð MIMD dapat berupa multiprosesor dengan memori yang dapat digunakan bersama (shared memory) atau multikomputer dengan memori yang terdistribusi.

ð Multiprosesor : MIMD dengan memori yang dapat digunakan bersama, semua prosesornya memiliki akses ke pool memori utama.

Arsitektur Multiprosesor

ð Multikomputer : MIMD dengan memori terdistribusi, setiap prosesornya memiliki memori khusus sendiri.

Arsitektur Multikomputer

ð Motivasi pembuatan organisasi multikomputer adalah untuk mengatasi keterbatasan skala multiprosesor.

ð Karena prosesor-prosesor multikomputer harus berkomunikasi, maka elemen penting perancangan multikomputer adalah jaringan interkoneksi yang harus dapat beroperasi seefisien mungkin.

ð Ada beberapa topologi interkoneksi untuk memberikan kinerja yang efisien.

ð Terdapat trade-off antara lintasan terpanjang dan jumlah koneksi fisik yang diperlukan.

Istilah-istilah dalam pemrograman paralel

· Embarasingly Parallel adalah pemrograman paralel yang digunakan pada masalah-masalah yang bisa diparalelkan tanpa membutuhkan komunikasi satu sama lain. Sebenarnya pemrograman ini bisa dibilang sebagai pemrograman paralel yang ideal, karena tanpa biaya komunikasi, lebih banyak peningkatan kecepatan yang bisa dicapai.

· Taksonomi dari model pemrosesan paralel dibuat berdasarkan alur instruksi dan alur data yang digunakan:

o SISD Single Instruction Single Datapath, ini prosesor tunggal, yang bukan paralel.

o SIMD Single Instruction Multiple Datapath, alur instruksi yang sama dijalankan terhadap banyak alur data yang berbeda. Maksudnya, sebuah instruksi (program) dijalankan pada beberapa (banyak) data.

o MISD Multiple Instruction Single Datapath, alur instruksinya banyak tapi beroperasi pada data yang sama.

o MIMD Multiple Instruction Multiple Datapath, alur instruksinya banyak, alur datanya juga banyak, tapi masing-masing bisa berinteraksi.

Quasi-supercomputing

Tipe lain dari komputasi berskala besar è konsep cluster

Contoh:

􀂅 Proyek komputasi SETI@home

en.wikipedia.org/wiki/SETI@home è proyek komputasi terdistribusi dg kecepatan rata-rata 72.53 teraflops (Nov 15, 2004)

(http://setiathome.berkeley.edu/totals.html)

􀂅 Mesin pencari Google diprediksi memiliki total processing power antara 126 s.d. 316 teraflops

(http://www.tnl.net/blog/entry/How_many_Google_machines)

Cluster

Sekelompok computer yang saling terhubung dan bekerja sama sebagai satu kesatuan sumber daya komputasi, sedemikian sehingga seolah-olah merupakan mesin tunggal.

. Contoh Linux cluster: Beowulf

· Arsitektur multikomputer untuk komputasi paralel

· Awalnya dibangun oleh Donald Becker di NASA (beowulf.gscf.nasa.gov); menggabungkan 16 node cluster untuk proyek ESS (Earth and Space Science)

· Biasanya terdiri dari satu server dan satu atau lebih client yang terhubung melalui LAN (misal: Ethernet).

· Menggunakan komputer biasa (PC) yang menjalankan Linux trivially reproducible

Beowulf (cont’d)

Ø Pada tiap komputer ter-install program dan library untuk mendukung eksekusi paralel. Contoh: Parallel Virtual Machine (PVM) & Message Passing Interface (MPI).

Ø Server mengontrol seluruh cluster, sekaligus menjadi console dan gateway dng dunia luar.

Ø Tiap mesin memiliki memori lokal dan saling berkomunikasi dengan message (vs SMP)

Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi

perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor

tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan

secara bersamaan tersebut dilakukan oleh komputer -komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi (distributed

computing).

Motivasi

Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin

banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.

Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak 2 kali.

Istilah-istilah dalam pemrograman paralel

-Embarasingly Parallel adalah pemrograman paralel yang digunakan pada masalah -masalah yang

bisa diparalelkan tanpa membutuhkan komunikasi satu sama lain. Sebenarnya pemrograman ini

bisa dibilang sebagai pemrograman paralel yang ideal, karena tanpa biaya komunikasi, lebih

banyak peningkatan kecepatan yang bisa dicapai.

-Taksonomi dari model pemrosesan paralel dibuat berdasarkan alur instruksi dan alur data yang

digunakan:

- SISD Single Instruction Single Datapath, ini prosesor tunggal, yang bukan paralel.

-SIMD Single Instruction Multiple Datapath, alur instruksi yang sama dijalankan terhadap

banyak alur data yang berbeda. Alur instruksi di sini kalau tidak salah maksudnya ya

program komputer itu. trus datapath itu paling ya inputnya, jadi inputnya lain -lain tapi

program yang digunakan sama.

-MIMD Multiple Instruction Multiple Datapath, alur instruksinya banyak, alur datanya juga

banyak, tapi masing-masing bisa berinteraksi.

- MISD Multiple Instruction Single Datapath, alur instruksinya banyak tapi beroperasi pada

data yang sama.

Perkembangan di Indonesia

Di Indonesia, usaha untuk membangun infrastruktur mesin paralel sudah dimulai sejak era 90 -an, meski belum pada tahap serius dan permanen. Namun untuk pemrograman paralel sudah sejak awal menjadi satu mata-kuliah wajib di banyak perguruan tinggi terkait. Baru pada tahun 2005 dimulai pembuatan infrastruktur mesin paralel permanen, misalnya yang dikembangkan oleh Grup Fisika Teoritik dan Komputasi di P2 Fisika LIPI. Didorong oleh perkembangan pemrograman paralel yang lambat, terutama terkait dengan sumber daya manusia (SDM) yang menguasainya, mesin paralel LIPI ini kemudian dibuka untuk publik secara cuma-cuma dalam bentuk LIPI Public Cluster (LPC)Saat ini LPC telah . dikembangkan lebih jauh menjadi gerbang komputasi GRID di Indonesia dengan kerjasama global menjadi IndoGRID .Pada tahun berikutnya, dengan dukungan dana dari proyek Inherent Dikti, Fasilkom UI juga membangun mesin paralel.