A. Konsep Komputasi Paralel
Sebelum saya menjelaskan tentang konsep komputasi paralel, pertama - tama saya kan menjelaskan terlebih dahulu apa yang dimaksud dengan komputasi paralel. Komputasi paralel adalah salah satu teknik untuk melakukan komputasi secara bersamaan dengan
memanfaatkan beberapa komputer secara bersamaan. Biasanya diperlukan
saat kapasitas yang diperlukan 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 aneka perangkat lunak
pendukung yang biasa disebut sebagai middleware yang berperan untuk
mengatur distribusi pekerjaan antar node dalam satu mesin paralel.
Konsep dari komputasi paralel itu sendiri dapat ditinjau dari aspek design mesin paralel, perkembangan
bahasa pemrograman paralel atau dari aspek pembangunan dan analisis
algoritma paralel. Algoritma paralel itu sendiri lebih banyak difokuskan
kepada algoritma untuk menyelesaikan masalah numerik, karena masalah
numerik merupakan salah satu masalah yang memerlukan kecepatan komputasi
yang sangat tinggi.
B. Pemrosesan Terdistribusi
Pemrosesan terdistribusi dalam ilmu komputer adalah suatu proses yang tersebar mempelajari penggunaan terkoordinasi dari komputer yang secara fisik terpisah atau terdistribusi. Sistem terdistribusi membutuhkan perangkat lunak yang berbeda dengan sistem terpusat.
Tujuan dari pemrosesan terdistribusi adalah menyatukan kemampuan dari
sumber daya (sumber komputasi atau sumber informasi) yang terpisah
secara fisik, ke dalam suatu sistem gabungan yang terkoordinasi dengan
kapasitas yang jauh melebihi dari kapasitas individual
komponen-komponennya.
C. Arsitektur Komputer Paralel
Arsitektur komputer paralel terbagi menjadi 4, yaitu:
- SISD --> Yang merupakan singkatan dari Single Instruction, Single Data 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 --> Yang merupakan singkatan dari Single Instruction, Multiple Data. 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 --> Yang merupakan singkatan dari Multiple Instruction, Single Data. 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 --> Yang merupakan singkatan dari Multiple Instruction, Multiple Data. 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.
D. Pengantar Thread Programming
Thread merupakan sebuah alur kontrol dari sebuah proses. Suatu proses yang
multithreaded
mengandung beberapa perbedaan alur kontrol dengan ruang alamat
yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user,
pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan
dari arsitektur multiprosesor. User level thread adalah thread yang tampak oleh
programmer dan tidak diketahui oleh kernel. User level thread secara tipikal
dikelola oleh sebuah library thread di ruang user. Kernel level thread didukung
dan dikelola oleh kernel sistem operasi. Secara umum, user level thread lebih
cepat dalam pembuatan dan pengelolaan dari pada kernel thread.
E. Pengantar Massage passing, Open MP
Massage passing dalam ilmu komputer adalah suatu bentuk komunikasi yang digunakan dalam komputasi paralel, pemrograman berorientasi objek, dan komunikasi interproses. Dalam model ini, proses atau benda dapat mengirimkan dan menerima pesan (yang terdiri dari nol atau lebih byte, struktur data yang kompleks, atau bahkan segmen kode) ke proses lainnya. Dengan menunggu pesan, proses juga dapat di sinkronisasi.
F. Pengantar Pemrograman CUDA GPU
CUDA adalah sebuah arsitektur pemrograman untuk General Purpose Graphics Processing Unit (GPGPU). Secara umum, komponen-komponen pendukung CUDA adalah:
Massage passing dalam ilmu komputer adalah suatu bentuk komunikasi yang digunakan dalam komputasi paralel, pemrograman berorientasi objek, dan komunikasi interproses. Dalam model ini, proses atau benda dapat mengirimkan dan menerima pesan (yang terdiri dari nol atau lebih byte, struktur data yang kompleks, atau bahkan segmen kode) ke proses lainnya. Dengan menunggu pesan, proses juga dapat di sinkronisasi.
F. Pengantar Pemrograman CUDA GPU
CUDA adalah sebuah arsitektur pemrograman untuk General Purpose Graphics Processing Unit (GPGPU). Secara umum, komponen-komponen pendukung CUDA adalah:
- Aplikasi, adalah perangkat lunak yang dibuat oleh penguna, memakai bahasa pemrograman khusus (kembangan C).
- Pustaka perangkat lunak, yang menyediakan layanan dasar untuk program aplikasi mengakses CPU maupun GPU.
- Perangkat keras khusus, yaitu GPU yang menyediakan mesin paralel.
- Perangkat keras CPU, sebagai mesin sekuensial.
sumber: