Komputasi paralel dapat diterapkan dengan 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. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara paralel. 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.
1. Distributed Processing
Aktivitas
memproses informasi dalam suatu organisasi yang dijalankan oleh jaringan
komputer yang tersambung oleh saluran telekomunikasi yang terpusat pada
fasilitas induk komputer biasa disebut dengan distributed processing.
Dalam penerapannya, proses ini menggunakan pemrosesan paralel
pada beberapa mesin. Misalnya proses transaksi yang terjadi pada
beberapa mesin ATM sebuah bank. Ketika ribuan nasabah menggunakan mesin
ATM pada saat yang bersamaan, bayangkan berapa banyak proses yang harus
dikerjakan jika hanya terdapat 1 komputer server. Oleh karena itu dengan
menggunakan Distributed Processing, beban pemrosesan yang besar dapat
di kerjakan oleh beberapa komputer yang terhubung oleh jaringan dalam
waktu yang bersamaan secara simultan. Beban pemrosesan yang besar itu
dipecah menjadi beberapa beban kecil guna mempercepat proses.
2. Architectural Parallel Computer
Dibawah ini akan dijelaskan beberapamacam arsitektur paralel komputer menurut Klasifikasi Flynn’s :1. SISD
Single Instruction – Single Data.
Komputer jenis ini hanya memiliki satu prosesor ( single processor ).
Dimana semua instruksi di eksekusi secara serial ( terurut satu demi
satu ) dan memungkinkan adanya overlapping di setiap bagian instruksi
dalam pelaksanaan eksekusi. Komputer ini adalah tipe komputer
konvensional. Beberapa contoh komputer yang menggunakan model SISD
adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP.
2. SIMD
Single Instruction – Multiple Data.
Komputer jenis ini hanya dapat mengeksekusi satu instruksi dan memiliki
lebih dari satu prosesor. Satu eksekusi dilakukan secara paralel pada
data yang berbeda pada level lock-step. Komputer vektor adalah salah
satu komputer paralel yang menggunakan arsitektur ini. 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 ).
3. MISD
Multiple Instructions – Single Data.
Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk
prototipe untuk penelitian. Teorinya komputer ini memiliki satu
prosesor dan mengeksekusi beberapa instruksi secara paralel tetapi
praktiknya tidak ada komputer yang dibangun dengan arsitektur ini karena
sistemnya tidak mudah dipahami.
4. MIMD
Multiple Instructions – Multiple Data.
Komputer jenis ini dapat mengeksekusi lebih dari satu instruksi secara
paralel dengan lebih dari satu prosesor. Tipe komputer ini yang paling
banyak digunakan untuk membangun komputer paralel, bahkan banyak
supercomputer yang menerapkan arsitektur ini. Beberapa komputer yang
menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel
IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
3. Pengantar Thread Programming
Threading / Thread adalah sebuah alur
kontrol dari sebuah proses. Konsep threading adalah menjalankan 2 proses
( proses yang sama atau proses yang berbeda ) dalam satu waktu.
Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar
atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data
dari network. Threading dibagi menjadi 2 :
- 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.
- 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.
4. Pengantar Massage Passing dan OpenMP
- MPI (Message Passing Interface)
MPI (Message Passing Interface) adalah sebuah standard pemrograman
yang memungkinkan pemrogram untuk membuat sebuah 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-pertimbangan diantaranya adalah latensi
dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor.
MPI ini merupakan standard yang
dikembangkan untuk membuat aplikasi pengirim pesan secara portable.
Sebuah komputasi paralel terdiri dari sejumlah proses, dimana
masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai
variabel lokal, dan tidak ada mekanismesuatu proses yang bisa mengakses
secara langsung memori yang lain. Pembagian data antar proses dilakukan
dengan message passing, yaitu dengan mengirim dan menerima pesan antar
proses. MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan.
Kegunaan MPI yang lain :
1. menulis kode paralel secara portable2. mendapatkan performa yang tinggi dalam pemrograman paralel
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan model data paralel.
- OpenMP
OpenMP merupakan API yang mendukung
multi-platform berbagi memori multiprocessing pemrograman C , C + + ,
dan Fortran , pada kebanyakan arsitektur prosesor dan system operasi ,
termasuk Solaris , AIX , HP-UX , GNU / Linux , Mac OS X , dan Windows
platform. Ini terdiri dari satu set perintah kompiler, rutinitas
library, dan variable lingkungan yang mempengaruhi perilaku run-time.
OpenMP dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur
Review Board (ARB atau OpenMP), bersama-sama didefinisikan oleh
sekelompok perangkat keras komputer utama dan vendor perangkat lunak,
termasuk AMD , IBM , Intel , Cray , HP , Fujitsu , Nvidia , NEC ,
Microsoft , Texas Instruments , Oracle Corporation , dan banyak lagi.
5. Pengantar Pemrograman CUDA GPU
GPU ( Graphical Processing Unit ) awalnya
adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering
pada kartu grafik saja, tetapi seiring dengan semakin meningkatnya
kebutuhan rendering, terutama untuk mendekati waktu proses yang
realtime, maka meningkat pula kemampuan prosesor grafik tersebut.
akselerasi peningkatan teknologi GPU ini lebih cepat daripada
peningkatan teknologi prosesor sesungguhnya ( CPU ), dan pada akhirnya
GPU menjadi General Purpose, yang artinya tidak lagi hanya untuk
melakukan rendering saja melainkan bisa untuk proses komputasi secara
umum.
Penggunaan Multi GPU dapat mempercepat
waktu proses dalam mengeksekusi program karena arsitekturnya yang
natively parallel. Selain itu Peningkatan performa yang terjadi tidak
hanya berdasarkan kecepatan hardware GPU saja, tetapi faktor yang lebih
penting adalah cara membuat kode program yang benarbenar bisa efektif
berjalan pada Multi GPU.
CUDA merupakan teknologi anyar dari
produsen kartu grafis Nvidia, dan mungkin belum banyak digunakan orang
secara umum. Kartu grafis lebih banyak digunakan untuk menjalankan
aplikasi game, namun dengan teknologi CUDA ini kartu grafis dapat
digunakan lebih optimal ketika menjalankan sebuah software aplikasi.
Fungsi kartu grafis Nvidia digunakan untuk membantu Processor (CPU)
dalam melakukan kalkulasi dalam proses data.
CUDA merupakan singkatan dari Compute
Unified Device Architecture, didefinisikan sebagai sebuah arsitektur
komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat
digunakan untuk menjalankan proses pengolahan gambar, video, rendering
3D, dan lain sebagainya. VGA – VGA dari Nvidia yang sudah menggunakan
teknologi CUDA antara lain : Nvidia GeForce GTX 280, GTX 260,9800 GX2,
9800 GTX+,9800 GTX,9800 GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400
mGPU,9300 mGPU,8800 Ultra,8800 GTX,8800 GTS,8800 GT,8800 GS,8600
GTS,8600 GT,8500 GT,8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri
sejenis untuk kelas mobile ( VGA notebook ).
Singkatnya, 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 meng-edit 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 proces dari GPU dan CPU. VGA
yang dapat memanfaatkan CUDA hanya versi 8000 atau lebih tinggi.
Sumber :
http://www.slideshare.net/terminalpurba/rancang-bangun-penjadwalan-tugas-task-pada-komputasi-paralel-dengan-menggunakan-algoritma-cost-time-optimization
http://seto.citravision.com/berita-47-parallel-computation--distributed-processing.html
http://seto.citravision.com/berita-48-parallel-computation--architectural-parallel-computer.html
http://dimasdisini.wordpress.com/2011/04/03/multicore-gpu-cuda/
http://krustybrain.wordpress.com/2013/05/25/tugas-4-softskill-pengantar-komputasi-modern-sem-8/
Tidak ada komentar:
Posting Komentar