PARALLEL COMPUTATION
Parallel Computation
Definisi Parallel Computation
Parallel
computation adalah salah satu pemrograman komputer yang memungkinkan untuk
melakukan eksekusi perintah secara bersamaan dan berbarengan dalam satu ataupun
banyak prosesor di dalam sebuah CPU. Parallel computation sendiri berguna
untuk meningkatkan performa komputer karena semakin banyak proses yang bisa
dikerjakan secara bersamaan maka akan makin cepat.
Komputasi paralel biasanya
diperlukan pada saat terjadinya pengolahan data dalam jumlah besar (di industri
keuangan, bioinformatika, dll) atau dalam memenuhi proses komputasi yang sangat
banyak. Selanjutnya, komputasi paralel ini juga dapat ditemui dalam kasus
kalkulasi numerik dalam penyelesaian persamaan matematis di bidang fisika
(fisika komputasi), kimia (kimia komputasi), dll. Dalam menyelesaikan suatu
masalah, komputasi paralel memerlukan infrastruktur mesin paralel yang terdiri
dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara
paralel.
Parallelism Concept
konsep parallel system merupakan suatu bentuk
penawaran solusi dari proses computing yang terlalu berat, sehingga dapat
dipecah sedemikian hingga tidak memberatkan system kerja komputer itu sendiri.
Konsep program parallel:
·
Memerintahkan set
instruksi (pandangan programmer).
·
File executable
(pandangan sistem operasi).
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.
Distributed Processing
Distributed Processing adalah
kemampuan menjalankan semua proses pengolahan data secara bersama antara
komputer yang berfungsi sebagai pusat dengan beberapa komputer yang lebih kecil
dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut
memiliki prosesor mandiri sehingga mampu mengolah sebagian data secara
terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian
total. Jika salah satu prosesor mengalami kegagalan atau masalah maka prosesor
yang lain akan mengambil alih tugasnya. Dalam proses distribusi sudah mutlak
diperlukan perpaduan yang mendalam antara teknologi komputer dan telekomunikasi,
karena selain proses yang harus didistribusikan, semua host komputer wajib
melayani terminal-terminalnya dalam satu perintah dari komputer pusat.
Message Passing
Message Passing merupakan suatu teknik
bagaimana mengatur suatu alur komunikasi messaging terhadap proses pada system.
Message passing dalam ilmu komputer adalah suatu bentuk komunikasi yang
digunakan dalam komputasi paralel, pemrograman-berorientasi objek, dan
komunikasi interprocess. Dalam model ini, proses atau benda dapat mengirim dan
menerima pesan yang terdiri dari nol atau lebih byte, struktur data yang
kompleks, atau bahkan segmen kode ke proses lainnya dan dapat melakukan
sinkronisasi. Paradigma Message passing yaitu:
1. Banyak contoh dari paradigma sekuensial
dipertimbangkan bersama-sama.
2. Programmer membayangkan beberapa prosesor,
masing-masing dengan memori, dan menulis sebuah program untuk berjalan pada
setiap prosesor.
3. Proses berkomunikasi dengan mengirimkan pesan
satu sama lain.
Terdapat beberapa metode dalam pengiriman
pesan yaitu:
·
Synchronous Message
Passing
Pengirim menunggu untuk mengirim pesan sampai
penerima siap untuk menerima pesan. Oleh karena itu tidak ada buffering. Selain
itu Pengirim tidak bisa mengirim pesan untuk dirinya sendiri.
·
Ansynchronous Message
Passing
Pengirim akan mengirim pesan kapanpun dia mau.
Pengirim tidak peduli ketika penerima belum siap untuk menerima pesan. Oleh
karena itu diperlukan buffering untuk menampung pesan sementara sampai penerima
siap menerima pesan. Selain itu pengirim dapat pesan untuk dirinya sendiri.
Open MP(Open Multi-Processing)
Open Multi-Processing adalah sebuah antarmuka pemrograman aplikasi (API)
yang mendukung multi processing shared
memorypemrograman 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.
Unsur inti OpenMP
adalah pembuatan konstruksi thread, distribusi beban kerja (pembagian kerja),
pengelolaan data-environment, thread sinkronisasi, bagian user-level runtime
dan variabel environment.
Pemrograman CUDA GPU
CUDA (Compute
Unified Device Architecture) adalah suatu skema yang dibuat
oleh NVIDIA agar NVIDIA selaku GPU (Graphic Processing
Unit) mampu melakukan komputasi tidak hanya untuk pengolahan grafis namun juga
untuk tujuan umum. Jadi, dengan CUDA, kita dapat memanfaatkan cukup
banyak processor yang dimiliki oleh NVIDIA untuk berbagai
perhitungan. GPU yang ada saat ini seperti ATI pun sudah memiliki
banyak processor di dalamnya. Pada ATI, skema yang mereka
bangun disebut ATI Stream. Saat ini pemrograman paralel menjadi sangat penting
karena kebutuhan kemampuan komputasi komputer yang terus meningkat seperti
kemampuan multitasking dan pengolahan grafis yang andal.
Metode saat ini dalam peningkatan peforma komputer juga berbeda dengan masa
lampau dimana peningkatan clock dari processor yang
diutamakan. Peningkatanclock juga dibatasi oleh kemampuan fisik
dari perangkat digital yaitu persoalan daya dan panas. Pada 2005 berbagai
industri komputer mulai menawakan komputer dengan beberapa core mulai
dari 2, 3, 4, 6, dst. Pada awal perkembangan GPU dengan banyak core, pemanfaatan
GPU hanya dapat dilakukan dengan antarmuka seperti OpenGL dan DirectX dimana
antarmuka tersebut dikhususkan hanya untuk pengolahan grafis.
Seri-seri
terbaru dari NVIDIA saat ini telah mendukung CUDA tepatnya keluaran setelah
tahun 2006. Sebagai tahap awal dalam belajar pemrograman paralel dengan
memanfaatkan CUDA sebaiknya menggunakan bahasa pemrograman C atau C++. CUDA C
telah menjadi bahasa pemrograman khusus pertama yang dikembangkan oleh suatu
perusahaan GPU untuk memfasilitasi general-purpose computing pada
GPU.
CUDA memiliki beberapa keunggulan dibandingkan tradisional
perhitungan tujuan umum pada GPU (GPGPU) menggunakan API grafis:
·
Tersebar membaca – kode dapat membaca dari alamat
sewenang-wenang dalam memori.
·
Memori bersama – CUDA memperlihatkan cepat memori bersama
wilayah (sampai 48KB per Multi-Processor) yang dapat dibagi di antara benang.
Ini dapat digunakan sebagai cache dikelola pengguna, memungkinkan bandwidth
yang lebih tinggi daripada yang mungkin menggunakan pencarian tekstur.
·
Download lebih cepat dan readbacks ke dan dari GPU.
·
Dukungan penuh untuk integer dan bitwise operasi, termasuk
pencarian tekstur bulat.
Sumber :
Komentar
Posting Komentar