Minggu, 30 Juni 2019

KOMPUTASI PARALEL


#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 : 

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



Tidak ada komentar:

Posting Komentar