Parallel Computing
Pengolahan
Paralel (Parallel Processing)
Pengolahan informasi yang menekankan pada manipulasi data-data elemen
secara simultan. Bertujuan mempercepat komputasi dari sistem komputer dan
menambah jumlah keluaran yang dapat dihasilkan dalam jangka waktu tertentu.
· Komputer Paralel
Komputer multi-prosesor dengan kemampuan melakukan pengolahan paralel.
· Throughput
Banyaknya keluaran yang dihasilkan per unit waktu.Caranya dengan meningkatkan
kecepatan operasi, Meningkatkan jumlah operasi yang dapat dilakukan dalam satu
waktu tertentu (concurrency).
· Pipeline
Komputasi dibagi ke dalam sejumlah langkah yang masing-masing disebut
sebagai segmen, atau stage. Output dari sebuah segmen menjadi input segmen yang
lain.
M. J. Flynn
membagi menjadi:
· SISD (Single Instruction
stream, Single Data stream)
· SIMD (Single Instruction
stream, Multiple Data stream)
· MISD (Multiple
Instruction stream, Single Data stream)
· MIMD (Multiple
Instruction stream, Multiple Data stream)
T.G. Lewis
membagi menjadi:
· Systolic parallel
computer adalah multiprocessor dimana data didistribusikan dan dipompa dari
memory ke suatu array prosesor sebelum kembali ke memory.
· Asynchronous Paradigma
reduksi adalah paradigma yang berpijak pada konsep graph reduksi. Program
dengan model reduksi diekspresikan sebagai graph alur data. Komputasi
berlangsung dengan cara mereduksi graph dan program berhenti jika graph
akhirnya hanya mempunyai satu simpul.
Michael J.
Quinn membagi menjadi:
·
Data Parallelism
Penerapan operasi yang sama secara simultan terhadap elemen-elemen dari
kumpulan data
·
Control Parallelism
Penerapan operasi-operasi berbeda terhadap elemen-elemen data yang
berbeda secara bersamaan.dapat terjadi aliran data antar proses-proses dan
kemungkinan terjadi aliran data yang kompleks/rumit.Pipeline merupakan satu
kasus khusus dari control parallelism, dimana aliran data membentuk jalur yang
sederhana
Pengertian
Distributed Processing :
Mengerjakan semua proses pengolahan data secara bersama antara komputer
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 yang lain akan mengambil alih tugasnya.
Pengertian
Thread Programming :
Thread adalah prinsip yang memperbolehkan sebagian dari program untuk
berjalan secara independen dengan sebagian program lainnya. Dalam threading
anda dapat menjalankan beberapa pointer (alamat dalam komputer) sekaligus.
Artinya dua atau lebih bagian dari kode dapat dijalankan secara simultan.
Ms. Dos merupakan salah contoh OS yang hanya mampu menjalankan satu
proses dengan hanya 1 thread. Sebaliknya Unix Family 1980 mendukung banyak
proses tapi dengan setiap proses hanya memiliki satu thread. Contoh OS yang
mampu menjalankan banyak thread dalam suatu proses yaitu, Mac, Windows dan Linux,
selain itu bahasa yang memiliki OS mini seperti java yang memiliki Java Virtual
Machine juga satu proses yang mampu menjalankan banyak thread.
Keuntungan Penggunaan Thread :
· Komunikasi thread lebih
efisien
· Waktu pembuatan lebih cepat
· Waktu pemberhentian lebih
cepat
· Waktu penggantian antar
thread lebih cepat
Kerugian penggunaan Thread :
· Keamanan yang kurang
karena penggunaan shared data
Pengantar
Dasar Pemrograman CUDA GPU
Graphics Processing Unit merupakan prosesor yang didedikasikan untuk
render cepat dalam pemrosesan polygon baik itu texturing dan shading. Terdiri
atas banyak core namun masih menggunakan arsitektur yang sederhana, sehingga
harganya relative murah dan di produksi secara missal untuk berbagai keperluan
misalnya peneilitian/ilmuah.
CUDA, Compute Unified Device Architecture merupakan suatu framework dari
bahasa pemrograman yang mendukung bahas C language, dimana mampu berkomunikasi
langsung dengan GPU dan sangat mudah bekerjasama untuk segala
multi-threading parallel execution
hampir diseluruh prosesor pada GPU. CUDA menggukan konsep nvcc sebagai ORM
dalam object programmingnya. CUDA merupakan produk dari NVIDIA sebagai produsen
graphic komputer ternama.
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.
Message
Passing
Massage Passing merupkan 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.
OpenMP (Open
Multiprocessing)
OpenMP adalah Application Programing Interface (API) yang mendukung
pemrograman multiprosesing shared memory dalam bahasa C/C++ dan fortran pada
berbagai arsitektur dan sistem operasi diantaranya: Solaris, AIX,
HP-UX,GNU/Linux, Mac OS X, dan Windows.
OpenMP adalah model portabel dan skalabel yang memberikan interface
sederhana dan fleksibel bagi programer shared memory dalam membangun aplikasi
paralel. Program multithread dapat ditulis dalam berbagai cara. Beberapa
diantaranya memungkinkan untuk melakukan interaksi yang kompleks antar thread.
OpenMP mencoba untuk memberikan kemudahan pemrograman serta membantu dalam
menghindari kesalahan program, melalui pendekatan terstruktur. Pendekatan ini
dikenal sebagai model pemrograman fork-join.
OpenMP bekerja berdasarkan model shared memory, maka secara default data
dibagi diantara thread-thread dan dapat terlihat dari setiap thread. Terkadang
program akan membutuhkan variabel dengan nilai thread spesifik. Jika setiap
thread memiliki variabel duplikat akan sangat berpotensi memiliki nilai yang
berbeda-beda pada setiap variabel duplikat tersebut.