Komputasi paralel biasanya diperlukan pada saat
terjadinya pengolahan data dalam jumlah besar (di industri keuangan,
bioinformatika, dll ) 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 (fisika
komputasi), kimia (kimia komputasi), dll. Dalam menyelesaikan suatu masalah,
komputasi paralel memerlukan infrastruktur mesin paralel yang terdiri dari
banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara
paralel.
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.
Konsep paralel adalah sebuah kemampuan prosesor untuk
melakukan sebuah tugas ataupun banyak tugas secara simultan ataupun bersamaan,
dengan kata lain prosesor mampu melakukan satu ataupun banyak tugas dalam satu
waktu.
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.
Menurut Gustafson proses terdistribusi adalah 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.
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.
Contoh dari proses terdistribusi adalah ketika
terdapat macam masalah diberikan pada satu master, maka dengan menggunakan
komputer paralel masalah terseut akan terpecah menjadi beberapa bagian secara
terdistribusi.
Architectural Parallel Computer
Menurut seorang Designer Processor, taksonomi Flynn,
Arsitektur Komputer dibagi menjadi 4 baguan, 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.
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.
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.
Bahasa populer dalam Pemrograman Paralel
Message Passing merupakan sebuah bentuk dari
komunikasi yang digunakan di komputasi paralel, OOP (Object Oriented
Programming) atau Pemrograman Berbasis Objek dan komunikasi interproses.
MPI adalah sebuah standard pemrograman yang
memungkinkan pemrogram untuk membuatsebuah 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.Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan -
pertimbangandiantaranya adalah latensi dari jaringan dan lama sebuah tugas
dieksekusi oleh prosesor.
OpenMP (Open Multi-Processing) adalah sebuah antarmuka
pemrograman aplikasi (API) yang mendukung multi processing shared memory
pemrograman di C, C++ dan Fortran pada berbagai arsitektur, termasuk UNix dan
Microsoft Windows platform. 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.
Perkembangan Komputasi Paralel Pada Masa Kini
Komputasi paralel pada masa kini dapat
diimplementasikan pada komputer-komputer rumah (Home User). Karena saat ini
komputer-komputer sudah memiliki lebih dari 1 core, sehingga dapat
diimplementasikan dengan mudah. Akan tetapi penggunaan CPU pada komputasi
paralel dirasa kurang memiliki performance yang optimal, sehingga para
developer dari NVIDIA mengembangkan hardware yang diberi nama GPU (Graphical
Processing Unit) pada tahun 1999, GPU memiliki performance yang jauh lebih baik
daripada CPU karena memiliki Core (Inti) yang lebih banyak daripada CPU, 1 inti
dapat memiliki banyak thread (Benang), sehingga program dapat berjalan dengan
optimal.
NVIDIA juga mengembangkan sebuah software yang dapat digunakan bersamaan dengan GPU NVIDIA, software tersebut diberi nama CUDA (Compute Unified Device Architecture). CUDA digunakan untuk mengendalikan GPU sehingga dapat berjalan dengan optimal dan dikendalikan dengan mudah.
NVIDIA juga mengembangkan sebuah software yang dapat digunakan bersamaan dengan GPU NVIDIA, software tersebut diberi nama CUDA (Compute Unified Device Architecture). CUDA digunakan untuk mengendalikan GPU sehingga dapat berjalan dengan optimal dan dikendalikan dengan mudah.
Pengantar Pemograman CUDA GPU Sebelum kita membahas
tentang CUDA, kita akan membahas 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.
NVIDIA memiliki 3 arsitektur GPU yang dapat digunakan untuk komputasi paralel, arsitektur tersebut adalah :
1. NVIDIA
Tesla Architecture
2. NVIDIA
Fermi Architecture
3. NVIDIA
Kepler Architecture
Arsitektur yang pertama kali diproduksi secara massal oleh NVIDIA adalah Tesla. Lalu selanjutnya dioptimalkan dengan Fermi, dan yang saat ini paling banyak digunakan adalah Kepler.
Pemrograman dengan CUDA ditulis dengan bahasa C sehingga dapat diimplementasikan dengan mudah
Referensi :
http://maesamaziah.blogspot.co.id/2015/04/parallel-computation.html
Apakah quantum computing merupakan bentuk parallel
computing ?
Tidak persis. Fenomena kuantum pada dasarnya
memungkinkan mengevaluasi banyak jawaban potensial secara bersamaan, yang juga
merupakan sesuatu yang dilakukan oleh komputer paralel. Namun, komputer paralel
memerlukan sejumlah perangkat keras sebanding dengan jumlah hal yang dievaluasi
secara bersamaan (N), sementara jumlah Qbits yang dibutuhkan oleh komputer
kuantum hanya sebanding dengan log (N). Secara teori, mesin kuantum juga dapat
melakukan evaluasi dalam waktu hampir nol. Di sisi lain, komputer kuantum hanya
mengembalikan hasil yang dipilih secara acak tunggal, sementara komputer
paralel dapat langsung mengembalikan semua hasil yang valid. Membaca hasil dari
komputer kuantum umumnya lambat dan mendapatkan semua hasil membutuhkan
menjalankan perhitungan kuantum cukup waktu untuk menjadi relatif yakin bahwa
pengambilan sampel acak telah melihat semua hasil yang mungkin.
Tentu saja, seseorang dapat membangun mesin kuantum
paralel. Yang sebenarnya menarik dalam banyak kerumitan komputer kuantum adalah
menjaga qbits kuantum terjerat dan mendinginkan sistem, sementara beberapa
komputer kuantum tidak perlu terjerat bersama dan secara teoritis seharusnya
dapat berbagi pendinginan. Sejauh ini, sudah cukup sulit untuk hanya membangun
satu komputer kuantum kecil.
Untuk saat ini, apa yang sebenarnya kita miliki
adalah mesin hibrida yang terdiri dari komputer konvensional yang mengendalikan
komputer kuantum kecil. Dengan demikian, komputer kuantum benar-benar terlihat
seperti prosesor yang berjalan paralel dengan sistem host, seperti bagaimana
GPU (Graphics Processing Units) di-host oleh PC.
Sumber :
Henry Dietz,
Electrical and Computer Engineering Professor at University of Kentucky
(1999-present) : https://www.quora.com/Is-quantum-computing-a-form-of-parallel-computing
Hubungan Parallel Computing dan Cloud Computing
Cloud computing adalah model bisnis untuk komputasi terdistribusi,
pemrosesan paralel dapat dilakukan di cloud. Komputasi kinerja tinggi dapat
dicapai menggunakan pemrosesan paralel melalui cloud. Pada dasarnya, kita
membagi tugas komputasi interms dari potongan independen yang lebih kecil yang
disebut cloudlet dan mengirim lebih dari sistem cloud untuk memprosesnya secara
paralel, hasilnya akan terakumulasi dan hadir untuk klien, ini adalah apa yang
diproses paralel di atas awan.
Sumber :
Hanumat G Sastry,
University
of Petroleum & Energy Studies : https://www.researchgate.net/post/What_is_Parallel_processing_in_cloud_computing
Hubungan antara Komputasi Modern dengan Paralel
Processing
Hubungannya adalah penggunaan komputer saat ini /
komputasi dianggap lebih cepat dibandingkan dengan penyelesaian masalah secara
manual. Oleh sebab itu, peningkatan kinerja atau proses komputasi semakin
diterapkan, salah satunya adalah dengan cara meningkatkan kecepatan perangkat
keras. Dimana komponen utama dalam perangkat keras komputer adalah processor.
Sedangkan parallel processing adalah penggunaan beberapa processor
(multiprocessor atau arsitektur komputer dengan banyak processor) agar kinerja
computer semakin cepat.
Komputasi paralel merupakan salah satu teknik
melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer juga
secara bersamaan. Pada komputasi paralel dibutuhkan saat kapasitas yang
diperlukan sangat besar untuk memproses komputasi yang banyak. Di samping itu
pemakai harus membuat pemrograman paralel untuk dapat merealisasikan komputasi.
Pemrograman paralel memiki tujuan utama yaitu untuk meningkatkan performa
komputasi. Oleh karena itu semakin banyak hal yang bisa dilakukan secara
bersamaan dalam waktu yang sama, semakin banyak pekerjaan yang bisa
diselesaikan.
Super Computer disebut juga parallel Processor sbb
merupakan komputer mainframe yang memiliki banyak processor yang
dipasang paralel.
Contoh perusahaan yang menggunakan parallel
processing :
1. Perusahaan PTT Belanda yang menggunakan 48
procesor yang parallel.
2. Komputasi paralel pada dunia bisnis khususnya
perfilm-an
Salah satu implementasi komputasi parallel pada dunia
bisnis yaitu pada dunia perfilman yaitu rendering film. Kemajuan di bidang
komputasi, khususnya dalam bidang komputer grafis memberikan kemudahan untuk
memodelkan suatu benda dalam alam 3 dimensi virtual di komputer. Kita dapat
membuat suatu benda dalam wujud 3 dimensi dan mengubah-ubah sudut pandang,
menentukan pencahayaan, bahkan menyusun gerakan benda dalam alam 3 dimensi
virtual tersebut. Perkembangan ini muncul dari kebutuhan di bidang manufaktur
untuk memiliki komputer yang dapat membantu perancangan (computer aided
design-CAD). Ditemukannya teknik-teknik dan metoda rendering suatu obyek 3 D ke
dalam media 2 D membuat benda yang dihasilkan oleh perangkat lunak ini menjadi
semakin nyata dan menyerupai aslinya.
Komputasi Paralel mempunyai prinsip yang bersesuaian
dengan algoritma Divide and Conquer, yaitu membagi-bagi proses menjadi bagian-bagian
yang cukup kecil dan memungkinkan untuk dikerjakan oleh sebuah unit
komputasi.
Terdapat 2 klasifikasi parallel computer yang
penting, yaitu : Sebuah komputer dengan banyak unit komputasi internal, atau
lebih dikenal sebagai Shared Memory Multiprocessor. Beberapa komputer yang
terhubung melalui sebuah jaringan, atau lebih dikenal sebagai Distributed
Memory Multicomputer.
Sumber :
http://ninasuri.blogspot.com/2013/06/komputasi-paralel-prosessing-dan.html