Tugas 4 - ARTIKEL PARALEL COMPUTATION

Nama Kelompok : 1. Amil Bayu Prayoga (50412709)
                              2. Bambang Ari S P (51412358)
                              3. Mario Margo P (54412442)
                              4. Syam Agung P (57412253)

Pendahuluan
dalam bahasa indonesia komputasi bisa diarikan sebagai cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. hal ini ialah apa itu teori komputasi. komputasi paralel itu sendiri yaitu melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. komputasi paralel itu sendiri membutuhkan : 
- Algoritma
- Bahasa Pemrograman
- Compiler 

program komputer paralel lebih susah untuk dibangun dibandingkan dengan program komputer serial, hal ini disebabkan keserempakan menimbulkan masalah yang potensial di dalam membagi pekerjaan menjadi subpekerjaan dan menggabungkan kembali subpekerjaan tersebut menjadi hasil oleh perangkat lunak, diantaranya kondisi berebut (race condition). komunikasi dan sinkronisasi diantara unit pemroses (processing unit) menjadi satu diantara tantangan terbesar untuk menghasilkan program paralel dengan performa yang baik. 


Sejarah singkat
pada tahun 1958, peneliti IBM, yang bernama John Cocke dan Daniel Slotnick membahas tentang pemanfaatan paralelisme di dalam komputasi numerik untuk pertama kalinya. Burroughs Coporation memperkenalkan D825 pada tahun 1962, sebuah komputer dengan empat buah prosessor yang mengakses 16 modul memori dengan bantuan skalar bar-silang (cossbar switch).

Latar Belakang 
komputasi paralel memanfaatkan beberapa elemen pemroses secara berkesinambungan untuk menyelesaikan permasalahan, dengan cara menyelesaikan permasalahan, dengan cara memecah masalah menjadi bagian-bagian independen, kemudian masing-masing bagian tersebut diselesaikan oleh masing-masing elemen pemroses sesuai dengan algoritma secara serempak. elemen pemroses dapat terdiri dari unit pemroses yang heterogen dan dapat pula terdiri dari unit pemroses yang homogen. elemen pemroses dapat berupa komputer tunggal dengan banyak prosessor, beberapa komputer yang terhubung dalam suatu jaringan, perangkat keras yang dikhususkan untuk melakukan komputasi paralel, ataupun kombinasi dari perangkat-perangkat yang lainnya. 

Pemrograman paralel
teknik pemrograman komputer yang memungkinkan eksekusi perintah atau operasi secara bersamaan baik dalam komputer dengan satu (prosessor tunggal) ataupun banyak (prosessor ganda dengan mesin paralel) CPU. bahasa pemrograman yang digunakan pada pemrograman paralel : 

1. MPI (Message Passing Interface)
yaitu sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. kegunaan MPI : 

> menyediakan fungsi-fungsi untuk menukar pesan
> menulis kode paralel secara portable
> mendapatkan performa yang tinggi dalam pemrograman paralel
> menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang
   tidak begitu cocok dengan model data paralel

implementasi MPI :
MPICH (MPI/Chameleon) MPICH2 adalah implementasi Message Passing Interface (MPI), yang merupakan standar spesifikasi library untuk program message-passing, yang diajukan sebagai standar oleh vendor, implementor dan user. 

2. PVM (Parallel Virtual Machine)
suatu standar protokol yang digunakan untuk pemrograman paralel dan terdistribusi, proses pertukaran pesan atau data antar proses adalah dengan mengirimkan pesan melalui media komunikasi. model ini juga dapat diimplementasikan pada bermacam-macam plattform seperti shared memory.  

Distributed Processing
Kata didistribusikan dalam istilah seperti "sistem terdistribusi", "didistribusikan pemrograman", dan "algoritma terdistribusi" awalnya merujuk pada jaringan komputer dimana setiap komputer yang didistribusikan secara fisik dalam beberapa wilayah geografis. Istilah yang saat ini digunakan dalam lebih luas akal, bahkan mengacu pada proses otonom yang dijalankan pada komputer fisik yang sama dan berinteraksi satu sama lain dengan pesan.


Model komputasi Paralel
> Embarasingly Parallel adalah pemrograman paralel yang digunakan pada masalah
   masalah yang bisa diparalelkan tanpa membutuhkan komunikasi satu sama lain.
   Sebenarnya pemrograman ini bisa dibilang sebagai pemrograman paralel yang ideal,
   karena tanpa biaya komunikasi, lebih banyak peningkatan kecepatan yang bisa dicapai.
> Taksonomi dari model pemrosesan paralel dibuat berdasarkan alur instruksi dan alur data
    yang digunakan:
1. SISD
Single Instruction – Single Data. Komputer jenis ini hanya memiliki satu prosesor ( single processor ). Dimana semua instruksi di eksekusi secara serial ( terurut satu demi satu ) dan memungkinkan adanya overlapping di setiap bagian instruksi dalam pelaksanaan eksekusi. Komputer ini adalah tipe komputer konvensional. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP.
2.  SIMD
Single Instruction – Multiple Data. Komputer jenis ini hanya dapat mengeksekusi satu instruksi dan memiliki lebih dari satu prosesor. Satu eksekusi dilakukan secara paralel pada data yang berbeda pada level lock-step. Komputer vektor adalah salah satu komputer paralel yang menggunakan arsitektur ini. 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 Instructions – Single Data. Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk prototipe untuk penelitian. Teorinya komputer ini memiliki satu prosesor dan mengeksekusi beberapa instruksi secara paralel tetapi praktiknya tidak ada komputer yang dibangun dengan arsitektur ini karena sistemnya tidak mudah dipahami.
4.  MIMD
Multiple Instructions – Multiple Data. Komputer jenis ini dapat mengeksekusi lebih dari satu instruksi secara paralel dengan lebih dari satu prosesor. Tipe komputer ini yang paling banyak digunakan untuk membangun komputer paralel, bahkan banyak supercomputer yang menerapkan arsitektur ini. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

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,dihubungkan oleh jaringan, sehingga dapat dipandang 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 tersendiri, sistem operasi dan aplikasi yang sama. Tiap subsistem berkomunikasi satu dengan yang lainnya melalui interkoneksi berkecepatan tinggi.
6. Grid computing
Merupakan bentuk pemrosesan paralel yang paling terdistribusi. Grid computing memanfaatkan Internet sebagai saluran komunikasi antar komputer untuk menyelesaikan suatu permasalahan.
7. Specialized parallel computer
Komputer paralel yang dikhususkan untuk menyelesaikan tugas khusus.


THREAD PROGRAMMING
Thread adalah bentuk kecil dari program yang akan dieksekusi oleh processor.  Pada sebuah single processor multi-threading biasanya terjadi dengan pengaturan waktu pemrosesan thread. Jadi processor berganti-ganti dan membagi waktu untuk menyelesaikan thread tetapi tidak pada paralel computing. Dengan multi-processor atau multi-core, multi-threading bisa berlangsung secara bersamaan, maka di situ lah tantangan untuk para programmer agar dapat membuat program yang dapat di proses secara paralel.

MESSAGE PASSING OPENMP
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.

IMPLEMENTASI KOMPUTASI PARALLEL PADA DUNIA PERFILMAN
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.

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 capat, 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 system-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 kedalam metode Komputasi Parallel. Divide and Conquer merupakan salah satu strategi algoritma yang memecah suatu masalah besar menjadi beberapa bagian untuk kemudian dikerjakan satu persatu. 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.

Salah satu masalah kompleks yang hingga kini masih membutuhkan kemampuan komputasi yang besar adalah melakukan proses render terhadap objek 3D. Proses render objek 3D sendiri membutuhkan waktu yang cukup lama, terlebih jika objek yang diberikan cukup rumit.

Kesimpulan  
Melakukan 3D Rendering tentu akan merupakan masalah yang sangat merepotkan jika tidak menggunakan algoritma memadai, dikarenakan banyaknya point dan polygon yang harus dikalkulasi setiap proses. Penggunaan algoritma Divide and Conquer tentu sangat membantu agar pekerjaan penghitungan yang sangat banyak dalam proses render dapat dikerjakan oleh beberapa unit komputasi sekaligus secara bersamaan. Hal ini juga telah dibuktikan dengan banyaknya perusahaan animasi dan film yang sering melakukan pekerjaan proses render menggunaan sistem komputasi paralel di dalam perusahaan mereka.


Daftar Pustaka
http://adifahmi379.blogspot.co.id/2016/04/parallel-processing-dan-kontribusinya.html
http://ninasuri.blogspot.co.id/2013/06/komputasi-paralel-prosessing-dan.html
https://rayenmaulana.wordpress.com/2016/06/06/komputasi-dan-parallel-processing/

Disusun oleh : 

> Amil Bayu P
> Bambang Ari SP
> Mario Margo P
> Syam Agung 
   4ia24



1 komentar: