Anda di halaman 1dari 11

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. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan
persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dll.
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. Selanjutnya pemakai harus membuat
pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua
program yang dijalankan diatasnya otomatis akan diolah secara parallel.
Di dalam komputasi parallel ada yang dinamakan dengan pemrograman parallel.
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. Analogi yang paling gampang adalah, bila anda dapat
merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda
butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan
(serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan
berdua.
Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan
(speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda
memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua
anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak
2 kali.
Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa
program sekaligus. Parallel processing disebut juga parallel computing. Pada system komputasi
parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik yang
berbeda untuk mengakses data di unit memori, yaitu shared memory address dan message
passing. Berdasarkan cara mengorganisasikan memori ini computer parallel dibedakan menjadi
shared memory parallel machine dan distributed memory parallel machine.
Prosesor dan memori ini didalam mesin paralel dapat dihubungkan (interkoneksi) secara
statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory system
(sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk
menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk
menghubungkan antar prosesor dan memori.
Yang 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.
Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal
(menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka
kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model
komputasi yang digunakan, yaitu:
1. 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. Beberapa contoh
komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan
PDP 1.
2. 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).
3. 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.
4. 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.

Berikut ini adalah gambar perbedaa antara komputasi tunggal dengan parallel komputasi :
a) komputasi tunggal/serial
b) komputasi parallel

Perbandingan antara serial komputasi dan parallel komputasi


Pada sistem komputasi parallel terdiri dari beberapa unit prosesor dan beberapa unit
memori. Ada dua teknik yang berbeda untuk mengakses data di unit memori, yaitu shared
memory address dan message passing. Berdasarkan cara mengorganisasikan memori ini
komputer paralel dibedakan menjadi shared memory parallel machine dan distributed memory
parallel machine.
Prosesor dan memori ini didalam mesin paralel dapat dihubungkan (interkoneksi) secara
statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory system
(sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk
menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk
menghubungkan antar prosesor dan memori.
Komunikasi data pada sistem paralel memori terdistribusi, memerlukan alat bantu
komunikasi. Alat bantu yang sering digunakan oleh sistem seperti PC Jaringan pada saat ini
adalah standar MPI (Message Passing Interface) atau standar PVM (Parallel Virtual
Machine)yang keduanya bekerja diatas TCP/IP communication layer. Kedua standar ini
memerlukan fungsi remote access agar dapat menjalankan program pada masing-masing unit
prosesor.
Salah satu protocol yang dipergunakan pada komputasi parallel adalah Network File
System (NFS), NFS adalah protokol yang dapat membagi sumber daya melalui jaringan. NFS
dibuat untuk dapat independent dari jenis mesin, jenis sistem operasi, dan jenis protokol
transport yang digunakan. Hal ini dilakukan dengan menggunakan RPC. NFS memperbolehkan
user yang telah diijinkan untuk mengakses file-file yang berada di remote host seperti mengakses
file yang berada di lokal. Protokol yang digunakan protokol mount menentukan host remote dan
jenis file sistem yang akan diakses dan menempatkan di suatu direktori, protokol NFS
melakukan I/O pada remote file system. Protokol mount dan protokol NFS bekerja dengan
menggunakan RPC dan mengiri dengan protokol TCP dan UDP. Kegunaan dari NFS pada
komputasi parallel adalah untuk melakukan sharing data sehingga setiap node slave dapat
mengakses program yang sama pada node master.
Software yang diperlukan untuk Parallel komputasi adalah PGI CDK, dimana aplikasi ini
telah dilengkapi dengan Cluster Development Kit dimana software ini telah memiliki feature
yang lengkap bila ingin melakukan komputasi dengan parallel prosessing karena software ini
telah mensupport MPI untuk melakukan perhitungan komputasi.
Komputasi Paralel
Posted by Muhammmad Fadli on 10:04 No comments
Konsep Paralel
adalah kemampuan menjalankan tugas atau aplikasi lebih dari
Paralel Processing
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
Komputasi Parallel
bersamaan dengan memanfaatkan beberapa komputer secara bersamaan.
Komputasi Paralel membutuhkan :
Algoritma
Bahasa Pemograman
Compiler
Contoh Komputasi Paralel:
Bagan Komputasi Paralel Terdistribusi

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.

Distributed Processing
adalah sekumpulan peralatan
Distributed Processing atau Distributed Computing System
pemrosesan yang saling terhubung melalui jaringan komputer dan saling
bekerjasama untuk mengerjakan tugas-tugas tertentu. Yang dimaksud
dengan peralatan pemrosesan dataadalah peralatan komputasi yang dapat
mengeksekusi sendiri sebuah program.
Sekumpulan peralatan yang saling terhubung akan mendistribusikan berbagai
macam hal, dianataranya adalah:
Processing Logic / Pemrosesan secara logis
Fungsi. Beberapa fungsi sistem komputer dapat didelegasikan ke beberapa hardware atau
software
Data
Kontrol
Kriteria Distributed Processing
Pemrosesan terdistribusi (Distributed Processing) dapat dikelompokkan
berdasarkan beberapa kriteria, yaitu:
Degree of Computing / tingkat hubungan : Tinggi atau rendah ? Jumlah data yang saling
digunakan dibandingkan dengan jumlah pemrosesan lokal
Struktur antar hubungan : kuat atau lemah ? Jika komponen di Share dikatakan kuat ?
Kesalingtergantungan komponen-komponen : Kuat atau lemah dalam mengekseskusi
proses.
Keselarasan antar komponen : selaras atau tidak selaras ?

Architectural Paralel Computer

Dalam taksonomi arsitektur paralel ada dua keluarga arsitektur paralel yang
banyak diterapkan adalah
Single Instruction Single Data (SISD)

Single Instruction Single Data (SISD) ini


memiliki hanya satu instruksi yang dieksekusi
secara serial. Komputer ini adalah tipe komputer konvensional. Menururut
mereka tipe komputer ini tidak ada dalam praktik komputer paralel karena
bahkan mainframe pun tidak lagi menggunakan satu processor. Klasifikasi ini
sekedar untuk melengkapi definisi komputer paralel. Beberapa contoh
komputer yang menggunakan model SISD adalah UNIVACI, IBM 360, CDC
7600, Cray 1 dan PDP 1.
Single Instruction Multiple Data (SIMD)

Single Instruction Multiple Data, komputer


ini memiliki lebih dari satu prosesor,
tetapi hanya mengeksekusi satu instruksi 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).
Multiple Instruction Multiple Data (MIMD)

komputer ini memiliki lebih dari satu prosesor dan


Multiple Instructions Multiple Data,
mengeksekusi lebih dari satu instruksi secara paralel. 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.

Thread Programming
Threading / adalah sebuah alur kontrol dari sebuah proses.
Thread
Konsep threading adalah menjalankan 2 proses ( proses yang sama atau
proses yang berbeda ) dalam satu waktu.
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 :
Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multi processors 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
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).

Pengantar Programming GPU-CUDA


Graphic Processing Unit (GPU)
sendiri merupakan sebuah alat/hardware, yang
GPU (Graphic Processing Unit)
berfungsi sebagai render grafis terdedikasi dalam kesatuan sistem hardware
PC atau Notebook. GPU bisa berada pada Video Card khusus (VGA Card)
atau terintegrasi dalam Motherboard berupa Integrated GPU. GPU berfungsi
untuk mengolah dan memanipulasi grafis pada CPU (Central Processing
Unit), untuk nantinya ditampilkan dalam bentuk Visual Grafis pada Monitor
(output).
CUDA (Compute Unified Device Architecture)
adalah arsitektur komputasi paralel yang
CUDA (Compute Unified Device Architecture)
dikembangkan oleh NVIDIA. CUDA adalah mesin
komputasi dalam pemrosesan grafis NVIDIA unit (GPU) yang dapat diakses
oleh pengembang perangkat lunak melalui varian dari bahasa pemrograman
standar industri. CUDA merupakan kumpulan program-program yang
menerjemahkan teks dalam bentuk bahasa komputer (computer language)
berupa source language/source code, ke dalam bentuk bahasa komputer
yang lain (target language/object code). Arsitektur CUDA memungkinkan GPU
(yang telah support CUDA) menjadi arsitektur terbuka seperti layaknya CPU
(Central Processing Unit atau Processor). Hanya, tidak seperti CPU, GPU
memiliki arsitektur banyak-inti yang pararel. Setiap inti memiliki kemampuan
untuk menjalankan ribuan thread secara simultan. Jika aplikasi yang
dijalankan sesuai dengan arsitektur ini, GPU dapat menyediakan keuntungan
yang lebih besar dari segi performa proses aplikasi tersebut.
Komponen Pendukung CUDA
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.
Kelebihan CUDA:
CUDA menggunakan bahasa C standar, dengan beberapa ekstensi yang simpel.
Shared memory CUDA menyingkapkan wilayah memory yang cepat (berukuran 16 KB)
yang dapat di bagi diantara thread-thread yang ada. Hal ini dapat digunakan sebagai user-
managed-cache, sehingga mengaktifkan bandwitdth yang lebih besar (dari besaran bandwidth yang
dimungkinkan), menggunakan texture loops.
Proses download dan readbacks yang lebih cepat, dari dan ke GPU.
Support penuh terhadap operasi integer dan bitwise.
Kelemahan CUDA:
CUDA tidak support texture rendering,
Bus Bandwidth dan latensi antara CPU dengan GPU bisa jadi bottleneck (tidak imbang),
CUDA hanya terdapat pada GPU Nvidi

Anda mungkin juga menyukai