PARALLEL COMPUTATION


Parallel computing adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan, berbeda dengan komputasi tunggal yang hanya menggunakan satu CPU saja. Tetapi dalam prakteknya seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbeda-beda tanpa berkaitan di antaranya, Maksudnya program dijalankan dengan banyak CPU secara bersamaan dengan tujuan untuk membuat program yang lebih baik dan dapat diproses dengan cepat. Dapat diambil kesimpulan bahwa pada parallel processing berbeda dengan istilah multitasking, yaitu satu CPU mengangani atau mengeksekusi beberapa program sekaligus, parallel processing dapat disebut juga dengan istilah parallel computing. Kemudian untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini:

  
Gambar 1 Penyelesaian Sebuah Masalah pada Komputasi Tunggal

  

Gambar 2 Penyelesaian Sebuah Masalah pada Komputasi Paralel

Jenis-Jenis Komputer Paralel
Berdasarkan tingkatan perangkat keras yang mendukung paralelisme, secara umum komputer-komputer paralel dapat diklasifikasikan:
      1. Multicore processing
Merupakan prosesor yang memiliki beberapa unit pengeksekusi. Sebuah prosesor multicore dapat melakukan beberapa instruksi per siklus dari beberapa aliran instruksi.
2. Symmetric multiprocessing
Merupakan sebuah sistem komputer dengan beberapa prosesor yang identik, dapat menggunakan struktur berbagi memori atau memori tersendiri yang saling terhubung melalui bus.
3. Distributed computing
Merupakan sebuah sistem komputer dengan memori terdistribusi, dimana masing-masing elemen pemrosesan dihubungkan oleh jaringan.
4. Cluster computing
Merupakan sekumpulan komputer yang bekerja sama yang dihubungkan oleh jaringan, sehingga dapat dilihat sebagai sebuah kesatuan, cluster komputer ini dikoordinasi oleh sebuah komputer induk yang bertugas untuk mendistribusikan pekerjaan kepada masing-masing komputer lainnya.
5. Massive parallel processing
Merupakan sebuah komputer tunggal dengan banyak prosesor yang terhubung dalam sebuah jaringan. Di dalam MPP tiap CPU mempunyai memory, sistem operasi dan aplikasi yang sama. Tiap subsistem berkomunikasi satu dengan yang lainnya melalui interkoneksi berkecepatan tinggi.
6. Grid computing
Grid computing memanfaatkan Internet dalam berkomunikasi antar komputer untuk menyelesaikan suatu permasalahan dan merupakan paralel yang paling terdistribusi.
7. Specialized parallel computer Komputer paralel yang berfungsi untuk menyelesaikan tugas khusus.

A.    Parallelism Concept
Komputasi paralel merupakan salah satu teknik komputasi, dimana proses komputasinya dilakukan oleh beberapa resources (komputer) yang independen secara bersamaan. Komputasi paralel biasanya diperlukan pada saat terjadinya pengolahan data dalam jumlah besar 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 kimia dll. Dalam menyelesaikan suatu masalah, komputasi paralel memerlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara pararel, untuk itu diperlukan perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel.
kemudian pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Hal ini disebabkan karena komputer-komputer tersebut tidak dapat berjalan secara otomatis, namun harus ada program/instruksi yang menjalankannya. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan, baik dalam komputer dengan satu ataupun banyak 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. 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.
Contoh penggunaan konsep ini pada kehidupan sehari-hari adalah pada pintu masuk/keluar jalan tol (jalan raya bebas hambatan). Biasanya pada pintu masuk/keluar jalan tol yang sepi gardu tol cenderung lebih sedikit dibandingkan pintu masuk/keluar jalan tol yang ramai, hal ini di maksudkan untuk mengurangi jumlah antrian kendaraan yang ingin melewati gardu tol tersebut, karena jika dalam satu waktu banyak kendaraan bisa di layani, maka akan mengurangi waktu antrian kendaraan.

B.     Distributed Processing
Pemrosesan terdistribusi merupakan proses pendistribusian pengolahan paralel dalam pemrosesan paralel menggunakan beberapa mesin. Jadi, bisa di bilang kemampuan dari suatu komputer-komputer yang dijalankan secara bersamaan untuk memecahkan suatu masalah dengan proses yang cepat.
Didistribusikan pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Salah satu contoh dari hal ini adalah bagaimana beberapa komunitas memungkinkan pengguna untuk mendaftar dan mendedikasikan komputer mereka sendiri untuk memproses beberapa data set yang diberikan kepada mereka oleh server. Ketika ribuan pengguna mendaftar untuk ini, banyak data dapat diproses dalam jumlah yang sangat singkat.

C.    Architectural Parallel Computer
1. Single Instruction Single Data Stream (SISD)
Pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Pada computer jenis ini semua instruksi dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping (tumpang tindih fungsi yang digunakan) dalam eksekusi setiap bagian instruksi (pipelining). Pada umumnya computer SISD berupa computer yang terdiri atas satu buah pemroses (single processor). Namun computer SISD juga mungkin memiliki lebih dari satu unit fungsional (modul memori, unit pemroses, dan lain-lain), selama seluruh unit fungsional tersebut berada dalam kendali sebuah unit pengendali. Contoh mesin SISD adalah PC tradisional atau mainframe yang tua.

      2. Single Instruction Multiple Data Stream (SIMD)
Pada computer SIMD terdapat lebih dari satu elemen pemrosesan yang dikendalikan oleh sebuah unit pengendali yang sama. Seluruh elemen pemrosesan menerima dan menjalankan instruksi yang sama yang dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan data yang berbeda yang berasal dari aliran data yang berbeda pula. Contoh dari SIMD adalah prosesor larik (array processor) atau GPU.

      3. Multiple Instruction Single Data Stream (MISD)
Komputer jenis ini memiliki n unit pemroses yang masing-masing menerima dan mengoperasikan instruksi yang berbeda terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi pemroses berikutnya. Belum ada perwujudan nyata dari computer jenis ini kecuali dalam bentuk prototype untuk penelitian dan tidak pernah dirilis secara massal.

      4. Multiple Instruction Multiple Data Stream (MIMD)
Pada sistem computer MIMD murni terdapat interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran data dari dank e memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD bersifat tightly coupled (global memory) jika tingkat interaksi antara pemroses tinggi dan disebut loosely couple jika tingkat interaksi antara pemroses rendah. Komputer ini memiliki beberapa prosesor yang bersifat otonomus yang mampu melakukan instruksi yang berbeda pada data yang berbeda. Sistem terdistribusi umumnya dikenal sebagi MIMD, entah itu menggunakan satu ruangan memori secara bersama-sama atau sebuah ruangan memori yang terdistribusi.
 


D.    Pengantar Thread Programming
Sebuah thread di dalam pemrograman komputer adalah sebuah informasi terkait tentang penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan.Thread ini memungkinkan program untuk mengetahui bagaimana user masuk ke dalam program secara bergantian dan user akan masuk kembali menggunakan user yang berbeda. Multiple thread dapat berjalan bersamaan dengan proses lainnya membagi sumberdaya menjadi memori, disaat proses lain tidak membaginya.. Thread programming di bagi menjadi 2 yaitu:
      1. Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors 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.
      2. Dynamic Multithreading
Teknik ini 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.

E.   Pengantar Message Pasing, Open MP
Message Passing merupakan sebuah bentuk dari komunikasi yang digunakan di komputasi paralel, OOT (Object Oriented Programming) atau Pemrograman Berbasis Objek dan komunikasi interproses. MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing–masing compute node yang kemudian masing–masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node.

Kegunaan MPI yang lain adalah :
1.      menulis kode paralel secara portable
2.      mendapatkan performa yang tinggi dalam pemrograman parallel
3.    menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak  begitu cocok dengan model data paralel.

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.


F.   Pengantar Pemograman CUDA GPU
Sebelum masuk pada pembahasan CUDA kita harus mempelajari GPU terlebih dahulu. GPU dalah sebuah processor khusus untuk memepercepat dan mengubah memori untuk mempercepat pemrosesan gambar. GPU ini sendiri biasanya berada di dalam graphic card komputer ataupun laptop.
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 adanya CUDA kita dapat memanfaatkan banyak prosesor dari NVIDIA untuk melakukan proses perhitungan ataunpun komputasi yang banyak.


REFERENSI :
http://chachados.blogspot.co.id/2013/07/parallel-computation.html

Komentar

Postingan populer dari blog ini

One Direction akan difilmkan dalam format 3D

METODE GREEDY , DIVIDE & CONQUER