KOMPUTASI PARALEL

Komputasi paralel merupakan salah satu teknik yang digunakan untuk melakukan komputasi secara bersamaan dengan memanfaatkan beberapa mesin komputer independen secara bersamaan. Teknik ini umumnya diperlukan pada saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ( dalam 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.

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 contohnya adalah openPC. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara paralel.

Pemrograman Paralel

Pemrograman parallel merupakan teknik yang digunakan dalam pemrograman komputer yang memungkinkan eksekusi perintah/operasi dijalankan 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 memasak nasi sambil mencuci piring 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 untuk mencuci piring akan lebih sedikit jika anda dibantu oleh teman anda (2 orang). Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan teknik paralel. Secara informal, bila anda mencuci piring 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.

· Peningkatan Kecepatan

dapat diformulasikan dalam persamaan berikut ini

Keterangan :

T1 adalah waktu yang dibutuhkan untuk menyelesaikan pekerjaan (program komputer) bila dijalankan dalam satu komputer.

Tj adalah waktu yang dibutuhkan jika pekerjaan dikerjakan bersamaan oleh beberapa komputer.

Ada limitasi dalam usaha membuat suatu program komputer berjalan lebih efisien melalui peningkatan kecepatan, hukum yang menetapkan batasan ini dikenal sebagai Hukum Amdahl. Ide dari hukum amdahl ini adalah bahwa anda hanya akan bisa meningkatkan efisiensi program komputer anda, sebatas pada bagian tertentu dari program tersebut yang dapat di paralelkan. Sementara bagian yang memang harus dilaksanakan secara berurutan, akan menjadi penentu performa akhir. Kembali ke analogi memasak tadi, bila anda harus menggunakan sarung tangan sebelum menyalakan kompor ataupun mencuci piring, maka waktu yang anda butuhkan untuk memakai sarung tangan ini adalah waktu serial, yang tidak dapat dihindari. Sementara waktu untuk memasak dan mencuci piring tadi adalah bagian yang bisa diparalelkan.

Hukum Amdahl

Telah dijelaskan bahwa dari T1 (waktu yg dibutuhkan menjalankan pekerjaan dalam satu komputer) tadi, ada sebagian yg tidak bisa diparalelkan. Untuk menyatakan ini kita gunakan notasi α dimana menunjukkan berapa bagian dari T1 yang tidak bisa dijadikan paralel (atau bagian serial dari program ini).

· Maka kita ketahui α * T1 adalah waktu yg tidak akan terpengaruh oleh bertambahnya komputer yg digunakan. α * T1 dilambangkan sebagai persamaan (a)

· Sisanya (1 − α) * T1 adalah waktu yang akan berkurang menjadi bila kita menggunakan N komputer tambahan (b) .

Sehingga waktu total yang dibutuhkan untuk menjalankan pekerjaan dalam N komputer adalah (a) + (b) alias :

Peningkatan kecepatan yang kita peroleh dari persamaan ini adalah :

Dari hasil diatas, didapat persamaan speed up yang terlihat berbeda tapi pada dasarnya sama. Persamaan dibawah, bisa didapat dari persamaan diatas, dengan mengeliminasi komponen T1 (pada bagian atas dan bawah persamaan), lalu mengatur N dan α


Dari persamaan di atas, bisa dilihat bahwa jika kita menggunakan komputer yang amat banyak () komponen (b) akan dapat diabaikan, menyisakan persamaan :

Inilah batas maksimum peningkatan kecepatan yang bisa dicapai menurut hukum Amdahl yaitu perbandingan terbalik dari seberapa banyak bagian serial dari suatu pekerjaan. Dalam sistem terdistribusi dimana anda berusaha menggunakan lebih banyak prosesor untuk menyelesaikan masalah, akan ada imbal balik. Menggunakan komputer tambahan dari lokasi yang berbeda memberikan anda sumber komputasi baru, tapi juga melibatkan biaya komunikasi tambahan, saat anda harus memberikan pekerjaan tersebut pada komputer yg terpisah.

Bahasa populer dalam Pemrograman Paralel

· MPI Message Passing Interface, bahasa pemrograman dengan basis pertukaran pesan.

· PVM Parallel Virtual machine.

Istilah-istilah dalam pemrograman paralel

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

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

SISD (Single Instruction Single Datapath) merupakan 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.

Komputasi paralel merupakan salah satu teknik yang digunakan untuk melakukan komputasi secara bersamaan dengan memanfaatkan beberapa mesin komputer independen secara bersamaan. Teknik ini umumnya diperlukan pada saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ( dalam 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.

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 contohnya adalah openPC. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara paralel.

Pemrograman Paralel

Pemrograman parallel merupakan teknik yang digunakan dalam pemrograman komputer yang memungkinkan eksekusi perintah/operasi dijalankan 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 memasak nasi sambil mencuci piring 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 untuk mencuci piring akan lebih sedikit jika anda dibantu oleh teman anda (2 orang). Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan teknik paralel. Secara informal, bila anda mencuci piring 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.

· Peningkatan Kecepatan

dapat diformulasikan dalam persamaan berikut ini

 S = \frac{T_1}{T_j}

Keterangan :

T1 adalah waktu yang dibutuhkan untuk menyelesaikan pekerjaan (program komputer) bila dijalankan dalam satu komputer.

Tj adalah waktu yang dibutuhkan jika pekerjaan dikerjakan bersamaan oleh beberapa komputer.

Ada limitasi dalam usaha membuat suatu program komputer berjalan lebih efisien melalui peningkatan kecepatan, hukum yang menetapkan batasan ini dikenal sebagai Hukum Amdahl. Ide dari hukum amdahl ini adalah bahwa anda hanya akan bisa meningkatkan efisiensi program komputer anda, sebatas pada bagian tertentu dari program tersebut yang dapat di paralelkan. Sementara bagian yang memang harus dilaksanakan secara berurutan, akan menjadi penentu performa akhir. Kembali ke analogi memasak tadi, bila anda harus menggunakan sarung tangan sebelum menyalakan kompor ataupun mencuci piring, maka waktu yang anda butuhkan untuk memakai sarung tangan ini adalah waktu serial, yang tidak dapat dihindari. Sementara waktu untuk memasak dan mencuci piring tadi adalah bagian yang bisa diparalelkan.

Hukum Amdahl

Telah dijelaskan bahwa dari T1 (waktu yg dibutuhkan menjalankan pekerjaan dalam satu komputer) tadi, ada sebagian yg tidak bisa diparalelkan. Untuk menyatakan ini kita gunakan notasi α dimana   0 \le \alpha \le 1 menunjukkan berapa bagian dari T1 yang tidak bisa dijadikan paralel (atau bagian serial dari program ini).

· Maka kita ketahui α * T1 adalah waktu yg tidak akan terpengaruh oleh bertambahnya komputer yg digunakan. α * T1 dilambangkan sebagai persamaan (a)

· Sisanya (1 − α) * T1 adalah waktu yang akan berkurang menjadi  \frac  {(1 - \alpha) * T_1} {N} bila kita menggunakan N komputer tambahan (b) .

Sehingga waktu total yang dibutuhkan untuk menjalankan pekerjaan dalam N komputer adalah (a) + (b) alias :

 T_N = \alpha * T_1 + \frac {(1 - \alpha) *  T_1} {N}

Peningkatan kecepatan yang kita peroleh dari persamaan ini adalah :

 S_N = \frac{T_1}{\alpha * T_1 + \frac {(1 -  \alpha) * T_1}{N}}

Dari hasil diatas, didapat persamaan speed up yang terlihat berbeda tapi pada dasarnya sama. Persamaan dibawah, bisa didapat dari persamaan diatas, dengan mengeliminasi komponen T1 (pada bagian atas dan bawah persamaan), lalu mengatur N dan α

 S_N = \frac{N}{1 +  \alpha(N-1)}

Dari persamaan di atas, bisa dilihat bahwa jika kita menggunakan komputer yang amat banyak ( N  \rightarrow \infty ) komponen (b) akan dapat diabaikan, menyisakan persamaan :

 S_N = \frac{1}{\alpha}

Inilah batas maksimum peningkatan kecepatan yang bisa dicapai menurut hukum Amdahl yaitu perbandingan terbalik dari seberapa banyak bagian serial dari suatu pekerjaan. Dalam sistem terdistribusi dimana anda berusaha menggunakan lebih banyak prosesor untuk menyelesaikan masalah, akan ada imbal balik. Menggunakan komputer tambahan dari lokasi yang berbeda memberikan anda sumber komputasi baru, tapi juga melibatkan biaya komunikasi tambahan, saat anda harus memberikan pekerjaan tersebut pada komputer yg terpisah.

Bahasa populer dalam Pemrograman Paralel

· MPI Message Passing Interface, bahasa pemrograman dengan basis pertukaran pesan.

· PVM Parallel Virtual machine.

Istilah-istilah dalam pemrograman paralel

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

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

SISD (Single Instruction Single Datapath) merupakan 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.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: