PARALLEL COMPUTATION
Parallel Computation
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 Processing adalah 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
Kelompok 5:
Ahmad Iqbal Fauzy - 50414569
Darristya Dewi - 52414549
Fajar Sudrajat - 53414885
Fanny Kusuma Putri - 53414920
Fitriani Ermarika Dewi - 54414348
Muhammad Tazjudin N. K. - 57414021




Komentar
Posting Komentar