Parallel
Computation
Parallel
computation adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah
program secara simultan. Idealnya, parallel processing membuat programberjalan
lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam
praktek,seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU
yang berbea-beda tanpa berkaitan di antaranya, Maksudnya program dijalankan
dengan banyak CPU secara bersamaan dengan tujuan untuk membuat program yang
lebih baik dan dapat diproses dengan cepat. Dapat diambil kesimpulan bahwa pada
parallel processing berbeda dengan istilah multitasking, yaitu satu CPU
mengangani atau mengeksekusi beberapa program sekaligus, parallel processing
dapat disebut juga dengan istilah parallel computing.
A. Parallelism
Concept
Komputasi paralel
didefinisikan sebagai penggunaan sekumpulan sumberdaya komputer secara simultan
untuk menyelesaikan permasalahan komputasi. Secara prinsip komputer paralel
membagi permasalahan sehingga menjadi lebih kecil untuk dikerjakan oleh setiap
prosesor / CPU dalam waktu yang bersamaan/simultan / concurrent dan prinsip ini
disebut paralelisme.
Sebenarnya prinsip
paralelisme juga sudah diterapkan dalam komputer serial misal dengan pipelining
dan superscalar-nya namun demikian tidak memberikan solusi terbaik dalam hal
meningkatkan performansi dikarenakan terbatasnya kemampuan untuk menambah kecepatan
prosesor dan fenomena memory bottleneck. Tingkat paralelisme dalam
komputasi khususnya pada prosesor di antaranya :
Paralelisme
bit-level. Contoh : prosesor 32 bit dan prosesor 64 bit.
Paralelisme
instruction set-level. Contoh : CISC dan RISC.
Paralelisme
thread-level. Contoh : Intel hyperthreading.
Konsep program
parallel :
Memerintahkan set
instruksi (pandangan programmer)
File executable
(pandangan sistem operasi)
Paralelisme lain
yang juga berkembang dalam komputasi paralel adalah paralelisme data dan
paralelisme fungsi. Perkembangan teknologi prosesor : prosesor singlecore
superscalar, chip multiprocessor, prosesor multicore, hingga prosesor cell
memberikan kontribusi terhadap peningkatan performansi komputer parallel.
B. Distributed
Processing
Pemrosesan paralel
adalah pendekatan komputasi untuk meningkatkan tingkat di mana satu set data
diolah dengan pengolahan bagian yang berbeda dari data pada waktu yang sama
secara simultan atau bersamaan pada sebuah komputer dan berfungsi memecah beban
besar menjadi beberapa beban kecil untuk mempercepat proses penyelesaian
masalah.
Didistribusikan
pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Salah
satu contoh dari hal ini adalah bagaimana beberapa komunitas memungkinkan
pengguna untuk mendaftar dan mendedikasikan komputer mereka sendiri untuk
memproses beberapa data set yang diberikan kepada mereka oleh server. Ketika
ribuan pengguna mendaftar untuk ini, banyak data dapat diproses dalam jumlah
yang sangat singkat.
Tipe lain dari
komputasi paralel yang kadang-kadang disebut "didistribusikan" adalah
gagasan dari sebuah komputer paralel cluster. Sebuah cluster akan banyak CPU
terhubung melalui kecepatan tinggi koneksi ethernet ke hub sentral (Server)
yang memberi masing-masing beberapa pekerjaan yang harus dilakukan. Metode
cluster mirip dengan metode yang dijelaskan dalam paragraf di atas, kecuali
bahwa semua CPU secara langsung terhubung ke server, dan satu-satunya tujuan
mereka adalah untuk melakukan perhitungan yang diberikan kepada mereka.
Parallel
distributed computing dapat dibentuk dari :
Ada : digunakan
konsep pertemuan yang menggabungkan fitur RPC dan monitor.
PVM (Parallel
Virtual Machine) untuk mendukung workstation clusters
MPI
(Message-Passing Interface) programming GUI untuk parallel computers.
C. Architectural
Parallel Computer
Terdapat 4 macam
arsitektur dari komputer paralel, yaitu:
SISD (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.
SIMD (Single
Instruction, Multiple Data) 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) 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) 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 adalah sebuah alur kontrol dari sebuah proses. Konsep
threading adalah menjalankan 2 proses baik proses yang sama ataupun berbeda
dalam satu waktu. Sebagai contoh sebuah web browser mempunyai thread untuk
menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai
penerima data dari network. Threading dibagi menjadi 2 yaitu :
1. Static Threading. Teknik ini biasa digunakan untuk komputer dengan
chip multiprocessors dan jenis komputer shared-memory lainnya. Teknik ini
memungkinkan thread berbagi memori yang tersedia, menggunakan program counter
dan mengeksekusi program secara independen. Sistem operasi menempatkan satu
thread pada prosesor dan menukarnya dengan thread lain yang hendak menggunakan
prosesor itu.
2. Dynamic Multithreading. Teknik ini merupakan pengembangan dari
teknik sebelumnya yang bertujuan untuk kemudahan karena dengannya programmer
tidak harus pusing dengan protokol komunikasi, load balancing, dan kerumitan
lain yang ada pada static threading. Concurrency platform ini menyediakan
scheduler yang melakukan load balacing secara otomatis. Walaupun platformnya
masih dalam pengembangan namun secara umum mendukung dua fitur : nested
parallelism dan parallel loops.
E. Pengantar
Massage Passing, Open MP
Message Passing
merupakan sebuah bentuk dari komunikasi yang digunakan di komputasi paralel,
OOT (Object Oriented Programming) atau Pemrograman Berbasis Objek dan
komunikasi interproses.
MPI adalah sebuah
standard pemrograman yang memungkinkan pemrogram untuk membuatsebuah 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 - pertimbangandiantaranya adalah latensi dari jaringan dan lama
sebuah tugas dieksekusi oleh prosesor.
OpenMP (Open
Multi-Processing) adalah sebuah antarmuka pemrograman aplikasi (API) yang
mendukung multi processing shared memory pemrograman di C, C++ dan Fortran pada
berbagai arsitektur, termasuk UNix dan Microsoft Windows platform. OpenMP
Terdiri dari satu set perintah kompiler, perpustakaan rutinitas, dan variabel
lingkungan yang mempengaruhi run-time. Banyak Aplikasi dibangun dengan model
hibrida pemrograman paralel dapat dijalankan pada komputer cluster dengan
menggunakan OpenMP dan Message Passing Interface (MPI), atau lebih transparan
dengan menggunakan ekstensi OpenMP non-shared memory systems.
F. Pengantar Pemrograman CUDA GPU
F. Pengantar Pemrograman CUDA GPU
CUDA (Compute
Unified Device Architecture), merupakan sebuah arsitektur komputer parallel,
dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan
proses pengolahan gambar, video, rendering 3D, dll. VGA – VGA dari Nvidia yang
sudah menggunakan teknologi CUDA yaitu : Nvidia GeForce GTX 280, GTX 260, dan
seri sejenis untuk kelas mobile (VGA notebook). CUDA dapat memberikan
proses dengan pendekatan bahasa C, sehingga programmer atau pengembang software
dapat lebih cepat menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi
seperti teknologi ilmu pengetahuan yang spesifik. CUDA sekarang bisa
dimanfaatkan untuk aplikasi multimedia. Misalnya mengedit film dan melakukan
filter gambar. Sebagai contoh dengan aplikasi multimedia sudah mengunakan
teknologi CUDA. Software TMPGenc 4.0 misalnya membuat aplikasi editing dengan
mengambil sebagian proses dari GPU dan CPU. VGA yang dapat memanfaatkan CUDA
hanya versi 8000 atau lebih tinggi.
Referensi