Pengertian Komputasi Paralel
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.
Di dalam komputasi parallel ada yang dinamakan dengan pemrograman parallel. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah atau 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 digunakanadalah sistem terdistribusi (distributed computing).
Perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer.Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.
Konsep Paralel
Paralel Processing adalah kemampuan menjalankan tugas atau aplikasi lebih dari satu aplikasi dan dijalankan secara simultan atau bersamaan pada sebuah komputer. Secara umum, Paralel Processingadalah sebuah teknik dimana sebuah masalah dibagi dalam beberapa masalah kecil untuk mempercepat proses penyelesaian masalah.
Hukum Paralel Processing
- Hukum Amdahl. “Peningkatan kecepatan secara paralel akan menjadi linear, melipatgandakan kemampuan proses sebuah komputer dan mengurangi separuh dari waktu proses yang diperlukan untuk menyelesaikan sebuah masalah.”
- Hukum Gustafson“. Sebuah komputasi paralel berjalan dengan menggunakan dua atau lebih mesin untuk mempercepat penyelesaian masalah dengan memperhatikan faktor eksternal, seperti kemampuan mesin dan kecepatan proses tiap-tiap mesin yang digunakan"
Komputasi Parallel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan.
Komputasi Paralel membutuhkan :
- Algoritma
- Bahasa Pemograman
- Compiler
Contoh komputasi pralel
Pada gambar diatas terdapat sebuah masalah, dimana masalah tersebut dibagi menjadi beberapa bagian lalu bagian dari masalah tersebut dibagikan ke-tiga CPU untuk diselesaikan secara bersamaan.
Model Pemrograman
Untuk mempermudah pengembangan program di lingkungan komputasi paralel, dikembangkan model pemrograman yang menjadi cara untuk menggambarkan struktur algoritma paralel, sesuai dengan pilihan metode dekomposisi dan pemetaan proses. Model-model tersebut akan menjadi pendekatan dalam melakukan desain komputasi paralel. Model-model pemrograman tersebut adalah:- Data-Parallel Model. Pada model ini, task dipetakan secara statik pada proses dan masing-masing proses melakukan operasi yang sama terhadap data yang berbeda secara konkuren. Karena setiap task melakukan operasi yang sama, maka metode dekomposisi yang digunakan adalah data decomposition.
- Task Graph Model. Model pemrograman ini menggunakan dasar bahwa setiap komputasi paralel dapat digambarkan sebagai task-dependency graph. Model pemrograman ini digunakan jika beban pemindahan data yang diperlukan suatu task relatif lebih besar daripada beban komputasi task tersebut. Pada umumnya task dipetakan secara statis agar beban pemindahan data antar task bisa dikurangi.
- Work Pool Model. Model pemrograman ini mempunyai karakteristik yaitu pemetaan task dilakukan secara dinamis, sehingga setiap proses mempunyai kemungkinan yang sama dalam mengeksekusi suatu jenis task. Pointer ke suatu task yang sedang dieksekusi oleh suatu proses diletakkan pada satu tempat (dapat sebagai list , queue, atau hash table). Model ini dipilih ketika beban pemindahan data yang diperlukan oleh suatu task relatif lebih kecil daripada beban komputasi task tersebut, sehingga pemindahan data pada saat runtime tidak merupakan beban yang berarti, yang mempengaruhi efisiensi keseluruhan komputasi.
- Master Slave Model. Pada model premrograman ini, satu atau lebih proses master membangkitkan task dan memetakannya ke proses slave secara dinamis. Proses master dapat memetakan task ke proses slave secara seimbang jika proses master bisa memperkirakan beban komputasi task yang dibangkitkannya. Jika beban komputasi task tidak dapat diperkirakan, proses master akan menjadi sumber bottleneck keseluruhan komputasi, yaitu pada kondisi waktu yang dibutuhkan untuk pembangkitan task tidak seimbang dengan waktu yang dibutukan oleh suatu proses slave saat mengeksekusi task yang sedang dibebankan padanya.
- Pipeline / Producer-Consumer Model. Pada model pemrograman ini, data mengalir dari suatu proses ke proses suksesornya (output dari proses yang satu menjadi input dari proses yang lain). Pendekatan ini biasa disebut dengan stream parallelism, di mana operasi-operasi yang bebeda dilakukan terhadap aliran data. Overhead dapat terjadi jika salah satu proses yang terlibat dalam rantai producer-consumer mempunyai beban komputasi yang besar, sehingga proses suksesornya harus menunggu lama sampai komputasi tersebut selesai
Tujuan Komputasi Paralel
Tujuan utama penggunaan komputasi paralel adalah untuk mempersingkat waktu eksekusi program yang menggunakan komputasi serial. Beberapa alasan lain yang menjadikan suatu program menggunakan komputasi paralel antara lain :
- Untuk permasalahan yang besar, terkadang sumber daya komputasi yang ada sekarang belum cukup mampu untuk mendukung penyelesaian terhadap permasalahan tersebut
- Adanya sumber daya non-lokal yang dapat digunakan melalui jaringan atau internet
- Penghematan biaya pengadaan perangkat keras, dengan menggunakan beberapa mesin yang murah sebagai alternatif penggunaan satu mesin yang bagus tapi mahal, walaupun menggunakan n buah prosesor
- Adanya keterbatasan kapasitas memori pada mesin untuk komputasi serial.
Hambatan Komputasi Paralel
Penggunaan komputasi paralel sebagai solusi untuk mempersingkat waktu yang dibutuhkan untuk eksekusi program mempunyai beberapa hambatan. Hambatan-hambatan tersebut antara lain adalah :
- Hukum Amdahl : percepatan waktu eksekusi program dengan menggunakan komputasi paralel tidak akan pernah mencapai kesempurnaan karena selalu ada bagian program yang harus dieksekusi secara serial.
- Hambatan yang diakibatkan karena beban jaringan : dalam eksekusi program secara paralel, prosesor yang berada di mesin yang berbeda memerlukan pengiriman dan penerimaan data (atau instruksi) melalui jaringan. Untuk program yang dibagi menjadi task-task yang sering membutuhkan sinkronisasi, network latency menjadi masalah utama. Permasalahan ini muncul karena ketika suatu task membutuhkan data dari task yang lain, state ini dikirimkan melalui jaringan di mana kecepatan transfer data kurang dari kecepatan prosesor yang mengeksekusi instruksi task Hal ini menyebabkan task tersebut harus menunggu sampai data sampai terlebih dahulu, sebelum mengeksekusi instruksi selanjutnya. Jumlah waktu yang dibutuhkan untuk berkomunikasi melalui jaringan antar dua titik adalah jumlah dari startup time, per-hop time, dan per-word transfer time.
- Hambatan yang terkait dengan beban waktu untuk inisiasi task, terminasi task, dan sinkronisasi.
Arsitektur Komputasi Paralel
Taksonomi Flynn membagi arsitektur komputer paralel dengan menggunakan sudut pandang instruksi dan data, sehingga terdapat empat jenis arsitektur komputer paralel :
- SISD (Single Instruction, Single Data). Arsitektur ini adalah arsitektur yang mewakili komputer serial, di mana hanya ada satu prosesor dan satu aliran masukan data (memori) sehingga hanya ada satu task yang dapat dieksekusi pada suatu waktu. Arsitektur von Neumann termasuk dalam jenis ini. SISD adalah satu-satunya yang menggunakan arsitektur Von Neumann, Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
- SIMD (Single Instruction, Multiple Data). Pada arsitektur ini, eksekusi sebuah instruksi akan dilakukan secara bersamaan oleh beberapa prosesor, di mana suatu prosesor dapat menggunakan data yang berbeda dengan prosesor lain. Karakteristik lain dari arsitektur ini adalah alur eksekusi instruksi yang deterministik (state dari instruksi dan data pada suatu waktu dapat dengan mudah diketahui). Arsitektur ini cocok untuk program yang dapat dibagi menjadi task-task yang mempunyai derajat keteraturan yang tinggi, misalnya sistem pengolah grafik. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
- MISD (Multiple Instruction, Single Data). Pada arsitektur ini, berbagai instruksi akan dieksekusi secara bersamaan oleh beberapa prosesor dengan menggunakan data yang sama. Arsitektur ini kurang populer karena hanya sedikit permasalahan yang membutuhkan solusi dengan menggunakan karakteristik arsitektur ini. Contoh permasalahan yang mungkin membutuhkan arsitektur ini antara lain adalah multiple frequency filter dan program pemecah sandi yang menggunakan beberapa algoritma kriptografi sekaligus. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
- MIMD (Multiple Instruction, Multiple Data). Pada arsitektur ini, berbagai instruksi dapat dieksekusi oleh beberapa prosesor di mana masing-masing prosesor dapat menggunakan data yang berbeda. Eksekusi instruksi pada arsitektur ini dapat dilakukan secara sinkron (pada suatu rentang waktu, jumlah instruksi yang dieksekusi oleh semua prosesor adalah sama) maupun asinkron, deterministik maupun non-deterministik. Selain itu, arsitektur ini dapat melakukan pekerjaan sesuai dengan karakteristik dari ketiga asitektur sebelumnya. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
Tidak ada komentar:
Posting Komentar