Konsep Paralel
Paralel Processing adalah
kemampuan menjalankan tugas atau aplikasi lebih dari 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
Komputasi Parallel adalah salah
satu teknik melakukan komputasi secara 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
Distributed Processing atau
Distributed Computing System adalah
sekumpulan peralatan 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)

Multiple Instructions Multiple
Data, komputer ini memiliki lebih
dari satu prosesor dan 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 / Thread adalah
sebuah alur kontrol dari sebuah proses. 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).
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)
GPU (Graphic Processing Unit) sendiri
merupakan sebuah alat/hardware, yang 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)
CUDA (Compute Unified
Device Architecture) adalah arsitektur
komputasi paralel yang 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 Nvidia.
Sumber :