#khalidsyahkp #4IA19 #Softskill #KomputasiQuantum
Nama : Khalidsyah K.P
NPM : 53415720
KELAS : 4IA19
Konsep Paralel (Parallelism Concept)
Pada dasarnya komputasi paralel digunakan untuk menyelesaikan suatu permasalahan besar, dengan memecah masalah tersebut menjadi bagian-bagian yang lebih kecil (sub-masalah). Kemudian sub-masalah tersebut diselesaikan oleh oleh kumpulan-kumpulan dari processor (multiprocessor) yang nantinya terlibat dalam pengeksekusian masalah tersebut, dimana setiap bagian sub-masalah diselesaikan oleh satu processor (single processor). Jadi kesimpulannya, jika sebuah masalah yang diselesaikan oleh satu processor membutuhkan berapa banyak sub-masalah dan berapa lama waktu yang dibutuhkan oleh processor tersebut. Kemudian dapat dilakukan perbandingan dengan masalah yang sama, jikan masalah tersebut dilakukan oleh lebih dari satu processor.
Jadi komputasi paralel merupakan teknik untuk melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Adapun tujuan utama komputasi paralel untuk mempersingkat waktu eksekusi program yang menggunakan komputasi serial.
![]() |
|
Gambar 1.
Proses Konsep Paralel
|
Proses Distribusi (Distributed Processing)
Proses Distribusi atau Distributed Processing adalah pengerjaan 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. Jadi pengolahan paralel didistribusikan menggunakan pemrosesan paralel pada beberapa mesin. Contohnya dapat dilihat ketika 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.
![]() |
|
Gambar 2.
Distribusi Paralel
|
Arsitektur Komputer Paralel (Architectural
Parallel Computer)
Referensi dari Flynn mengenai Arsitektur Komputer Paralel menjelaskan bahwa dalam mendesain sebuah komputer, dikarakteristikkan oleh alur dari instruksi-instruksi yang akan diselesaikan oleh suatu arsitektur komputer. Taksonomi ini menghasilkan empat kemungkinan kombinasi dari pengoperasian instruksi, antara lain :
Referensi dari Flynn mengenai Arsitektur Komputer Paralel menjelaskan bahwa dalam mendesain sebuah komputer, dikarakteristikkan oleh alur dari instruksi-instruksi yang akan diselesaikan oleh suatu arsitektur komputer. Taksonomi ini menghasilkan empat kemungkinan kombinasi dari pengoperasian instruksi, antara lain :
![]() |
|
Gambar 3.
Model Pemrosesan Paralel
|
1. SISD (Single Instruction, Single Data)
Arsitektur yang mewakili komputer serial, dimana hanya ada satu prosesor dan satu aliran data (memori) sehingga hanya ada satu task atau tugas yang dapat dieksekusi pada satu waktu. Contohnya arsitektur Von-Neumann.
![]() |
|
Gambar 4.
(Single Instruction, Single Data)
|
2. SIMD (Single Instruction, Multiple Data)
Eksekusi sebuah instruksi akan dilakukan bersamaan oleh beberapa prosesor, dimana sebuah prosesor dapat menggunakan data yang berbeda dengan prosesor lain.
![]() |
|
Gambar 5.
(Single Instruction, Multiple Data)
|
3. MISD (Multiple Instruction, Single Data)
Berbagai instruksi akan dieksekusi secara bersamaan oleh beberapa prosesor dengan menggunakan data yang sama.
![]() |
|
Gambar 6.
(Multiple Instruction, Single Data)
|
4. MIMD (Multiple Instruction, Multiple Data)
Berbagai instruksi akan dieksekusi secara bersamaan oleh beberapa prosesor dimana masing-masing prosesor dapat menggunakan data yang berbeda.
![]() |
|
Gambar 7.
(Multiple Instruction, Multiple Data)
|
Implementasi Komputasi Paralel (Implementation Parallel Computation)
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.
Pada bagian ini yaitu pada rendering Film digunakan unit Komputasi parallel Distributed Memory Multicomputer. Hal ini dikarenakan computer yang digunakan untuk membuat rendering filmnya adalah Kluster Komputer. Kluster computer adalah proses menghubungkan beberapa computer agar dapat bekerja secara bersama-sama dengan sebuah jaringan sebagai media penghubungnya.
Komponen kluster biasanya saling terhubung dengan cepat melalui sebuah interkoneksi yang sangat cepat, atau juga melalui jaringan local (LAN). Keuntungan memakai Kluster Komputer ini yaitu pemrosesan dapat dilakukan lebih cepat karena mempunyai mesin-mesin yang masing-masing multiprocessor. Terdapat incremental Scalability dimana penambahan sistem-sistem baru dengan inkremen yang kecil. Dalam Kluster Komputer kegagalan yang terjadi di dalam satu node tidak berarti atau disebut dengan “Loss of service”. Dan yang terakhir yaitu biaya yang dibutuhkan lebih murah, hal ini dikarenakan Kluster computer dapat menghasilkan power komputasi yang sama atau lebih tinggi dari computer parallel sebenarnya.
3D Rendering merupakan salah satu proses yang sangat penting dalam melakukan pengolahan gambar 3D. Tanpa dirender suatu gambar yang diolah oleh perangkat lunak animasi 3D hanya akan tampil dalam bentuk kumpulan point dan wireframe sederhana. Proses render melakukan “pembungkusan” tekstur pada objek yang bersesuaian sesuai cahaya yang datang pada objek tersebut. Namun proses render membutuhkan daya komputasi yang sangat besar karena banyaknya titik koordinat yang harus dikomputasi, terutama jika data 3D yang diolah cukup rumit.
3D Rendering terdiri dari proses yang bertujuan untuk membentuk sebuah gambar dari sebuah model yang dibentuk oleh perangkat lunak animasi, model tersebut berisi data geometri, titik pandang, tekstur dan cahaya yang diperlukan untuk membuat gambar yang utuh. 3D Rendering merupakan proses yang sangat penting dan telah digunakan untuk berbagai macam penggunaan, seperti program permainan komputer, efek spesial pada film dan program simulasi.
Salah satu cara untuk memecahkan masalah tersebut adalah dengan menggunakan algoritma Divide and Conquer yang diterapkan ke dalam metode Komputasi Parallel. Dalam Komputasi Parallel tiap-tiap bagian dikerjakan oleh unit pemrosesannya masing-masing, sesuai dengan kesepakatan Divide pada awal komputasi. Komputasi Parallel terbukti jauh lebih efektif untuk melakukan rendering objek 3D dibanding hanya menggunakan sebuah unit komputasi. Sebagai contoh suatu perusahaan animasi asal Jepang, membutuhkan waktu 165 tahun jika proses render yang dilakukan untuk membuat animasi berdurasi 100 menit hanya menggunakan sebuah unit komputasi. Sedangkan ketika perusahaan tersebut menggunakan metode Komputasi Parallel, proses tersebut hanya membutuhkan waktu 1 tahun saja.
Di Indonesia LIPI Public Cluster adalah sarana komputasi paralel yang dibuka untuk pemakai umum secara cuma-cuma, persembahan LIPI Serpong, Indonesia. Sarana public cluster ini merupakan yang pertama di Indonesia. Rintisan awal mulai dilakukan pada tahun 2004.
Hingga saat ini, Pusat Penelitian Fisika Lembaga Ilmu Pengetahuan Indonesia (LIPI), hingga saat ini telah berhasil merakit 35 note komputer. Rangkaian komputer ini dijadikan satu membentuk satu cluster untuk kemudian difungsikan mengolah suatu data yang sangat kompleks. Kami menyebutnya kluster karena komputer ini dirakit jadi satu dari beberapa komputer, kata Laksana Tri Handoko, Peneliti Teori Fisika LIPI.
Komputer ini meski dijadikan satu, namun tetap dapat dipecah dan difungsikan hanya sesuai note (komputer pc yang terangkai di dalam kluster) yang kita perlukan. Misalnya untuk mengolah data hanya butuh tiga hingga empat note, maka hanya jumlah note tersebut saja yang bisa dipakai, lainnya tidak.
Handoko mengatakan bahwa fungsi kluster ini yang umum dikenal masyarakat adalah sebagai alat pembantu simulasi suatu model. Kebanyakan adalah mahasiswa yang memanfaatkannya, kata Handoko. Hingga saat ini dari 35 note yang terpasang, telah lebih dari 60 orang yang memanfaatkannya. Kebanyakan mereka yang menggunakan adalah untuk kepentingan pemrograman, pendataan atau analisa misalnya untuk identifikasi DNA. Kami juga disini sudah memiliki gen bank, tembahnya.
Kluster ini menurut Handoko, hampir sama dengan miliknya mesin pencari google. Bedanya jika google memiliki 1.000 note, maka LIPI hanya punya 35 note. Rencananya akan ditambah hingga 45 note. Kecepatannya untuk level superkomputer, kluster Puslit Fisika LIPI mencapai 150 gigaflops. Kecepatan ini masih berada pada kecepatan superkomputer terendah minimal sebesar 135 gigaflops.
Message
Passing & OpenMP
Pada bagian
komputasi parallel ini akan dibahas tentang Message Passing dan OpenMP.
Pembahasan
Jurnal:
Algoritma
genetika sekuensial untuk menyelesaikan Container Loading Problem bekerja hanya
dengan menggunakan satu processor saja meskipun dijalankan pada
system multicore. Tujuan dari penelitian ini adalah untuk mengoptimalkan
kinerja system multicore. Untuk mengoptimalkan kinerja system multicore
diperlukan adanya paralelisasi algoritma genetika untuk menyelesaikan Container
Loading Problem.
Dalam penelitian
ini paralelisasi yang digunakan adalah paralelisasi
shared memory menggunakan OpenMP. Paralelisasi dalam OpenMP dilakukan
melalui penyisipan pragma OMP paralel. Dari algoritma genetika serial Container
Loading Problem akan diparalelisasi menggunakan OpenMP menjadi algoritma
genetika parallel Container Loading Problem. Selanjutnya akan dilakukan
pengujian waktu eksekusi algoritma dan perhitungan speedup.
Hasil
dari penelitian ini berupa hasil pengujian kinerja algoritma
parallel yang menunjukkan bahwa waktu komputasialgoritma paralel
lebih kecil dari algoritma sekuensial sebelum diparalelisasi menggunakan
OpenMP. Waktukomputasi yang lebih kecil ini menyatakan efisiensi kinerja
algoritma paralel yang lebih baik dari algoritmasekuensial. Peningkatan efisiensi
ini juga dapat diidentifikasi dari Speedup paralelisasi yang semakin
besar. Kesimpulan diperoleh dari penelitian ini adalah bahwa paralelisasi
terhadap algoritma genetika untuk menyelesaikan Container Loading Problem akan
meningkatkan efisiensi waktu komputasi melalui pemanfaatan sistem
multicore.
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.
Sinkronisasi
(pengkoordinasian) aksi dari thread adalah sesuatu yang sangat penting
untuk menjamin data yang harus dibagi dan untuk mencegah terjadinya data race
condition. Secara default OpenMP telah menyediakan mekanisme untuk menunggu
thread dalam suatu tim thread sehingga semua thread menyelesaikan
tugasnya dalam region, kemudian dapat melanjutkan ke proses selanjutnya.
Mekanisme ini dikenal sebagai barrier.
Pemrograman CUDA GPU

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.
Platform CUDA dapat diakses oleh
pengembang perangkat lunak melalui library CUDA-accelerated , perintah kompiler
(seperti OpenACC ), dan ekstensi untuk bahasa pemrograman standar industri,
termasuk C, C++ dan Fortran . C / C++ programmer menggunakan CUDA C / C + +,
yang disusun dengan "nvcc", NVIDIA LLVM berbasis C / C++ compiler,
dan Fortran programmer dapat menggunakan 'CUDA Fortran', yang disusun dengan
PGI CUDA Fortran compiler dari The Portland Grup. Selain library, arahan
compiler, CUDA C / C++ dan CUDA Fortran, platform CUDA mendukung interface
komputasi lainnya, termasuk Khronos Grup 's OpenCL , Microsoft DirectCompute ,
dan C++ AMP . Pemrograman pihak ketiga juga tersedia untuk Python , Perl ,
Fortran , Java , Ruby , Lua , Haskell, Matlab , IDL , dan dukungan asli di
Mathematica.
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
Dalam permainan komputer industri,
GPU yang digunakan tidak hanya untuk rendering grafis tetapi juga dalam
perhitungan fisika permainan (efek fisik seperti puing-puing, asap, api, cairan), contoh termasuk PhysX dan Bullet . CUDA juga
telah digunakan untuk mempercepat aplikasi non-grafis dalam biologi komputasi ,
kriptografi dan bidang lainnya oleh urutan besarnya atau lebih.
CUDA memiliki beberapa keunggulan
dibandingkan tradisional perhitungan tujuan umum pada GPU (GPGPU) menggunakan
API grafis:
1. Tersebar
membaca - kode dapat membaca dari alamat sewenang-wenang dalam memori.
2. Memori
bersama - CUDA memperlihatkan cepat memori bersama wilayah (sampai 48KB per
Multi-Processor) yang dapat dibagi di antara benang. Ini dapat digunakan
sebagai cache dikelola pengguna, memungkinkan bandwidth yang lebih tinggi
daripada yang mungkin menggunakan pencarian tekstur.
3. Download
lebih cepat dan readbacks ke dan dari GPU.
4. Dukungan
penuh untuk integer dan bitwise operasi, termasuk pencarian tekstur bulat.
SUMBER :
https://anggasaputro.wordpress.com/2016/06/29/konsep-komputasi-paralel/
https://pandanwulan.wordpress.com/2015/06/28/konsep-distribusi-processing-arsitektur-komputer-paralel-thread-programming-message-passing-atau-openmp-dan-pemrograman-cuda-pada-gpu/
https://isnaenimh.wordpress.com/2015/06/26/konsep-proses-distribusi-arsitektur-komputer-paralel/
https://andri102.wordpress.com/game/soft-skill/konsep-komputasi-parallel-processing/
http://ajiraksakumala.blogspot.com/2016/06/tugas-ke-4-pengantar-komputasi-modern.html
http://debelist.blogspot.com/2016/05/parallel-computation-pengantar-message.html





















