Rabu, 31 Mei 2017

Paralel Computation

Definisi Komputasi Parallel

            Komputasi parallel adalah penggunaan multiprosesor atau komputer dengan kemampuan melakukan pengolahan parallel yaitu melakukan pekerjaan bersama pada berbagai tugas. Pengolahan parallel adalah pengolahan informasi yang menekankan pada manipulasi data-data elemen secara simultan. Dalam komputasi parallel setiap prosesor bekerja pada bagian atas masalah dan Prosesor dapat bertukar informasi.

Konsep Proses Komputasi Parallel (Paralel Processing)
Paralel Processing adalah kemampuan menjalankan tugas atau aplikasi lebih dari satu aplikasi dan dijalankan secara simultan atau bersamaan pada sebuah komputer. Secara umum, ini adalah sebuah teknik dimana sebuah masalah dibagi dalam beberapa masalah kecil untuk mempercepat proses penyelesaian masalah.
Terdapat dua hukum yang berlaku dalam sebuah parallel processing. yaitu:
·         Hukum Amdahl
Amdahl berpendapat, “Peningkatan kecepatan secara paralel akan menjadi linear, melipatgandakan kemampuan proses sebuah komputer dan mengurangi separuh dari waktu proses yang diperlukan untuk menyelesaikan sebuah masalah.”
·         Hukum Gustafson
Pendapat yang dikemukakan Gustafson hampir sama dengan Amdahl, tetapi dalam pemikiran Gustafson, 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.

Gambar diatas merupakan contoh dari sebuah komputasi paralel, dimana pada gambar diatas terdapat sebuah masalah, dari masalah tersebut dibagi lagi menjadi beberapa bagian agar sebuah masalah dapat dengan cepat diatasi.


Paradigma Komputasi Parallel
           
            Taksonomi Komputasi Parallel oleh T.G Lewis membagi 2 klasifikasi yaitu synchronous dan asynchrounous.





M.J Flynn menciptakan satu diantara sistem klasifikasi untuk komputer dan program parallel, yang dikenal dengan Taksonomi Flynn.Beliau membagi komputer dalam 4 model, yaitu :

  • SISD (Single Instruction stream, Single Data stream) adalah satu CPU mengeksekusi instruksi satu persatu dan satu CPU memanggil atau menyimpan data satu persatu. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.



  • SIMD (Single Instruction stream, Multiple Data stream) adalah satu contol unit mengeksekusi aliran tunggal instruksi dan terdapat lebih dari satu processing unit. 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).



  • MISD (Multiple Instruction stream, Single Data stream) adalah terdapat beberapa processing unit yang mengeksekusi instruksi berbeda dengan data yang sama dan data mengalir ke processing unit serial. Sampai saat ini belum ada komputer yang menggunakan model MISD.



  • MIMD (Multiple Instruction stream, Multiple Data stream) adalah multiprocessor dan terdapat lebih dari satu instruksi yang dapat dieksekusi terhadap data masing-masing. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.


Michael J. Quinn membagi menjadi:

Data Parallelism
  • penerapan operasi yang sama secara simultan terhadap elemen-elemen dari kumpulan data
Control Parallelism
  • penerapan operasi-operasi berbeda terhadap elemen-elemen data yang berbeda secara bersamaan.
  • dapat terjadi aliran data antar proses-proses dan kemungkinan terjadi aliran data yang kompleks/rumit.
  • Pipeline merupakan satu kasus khusus dari control parallelism, dimana aliran data membentuk jalur yang sederhana
Tujuan Komputasi Parallel
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.
Pemrograman Paralel
     Pemrograman Paralel sendiri adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam satu jaringan komputer, biasanya disebut sistem terdistribusi. Bahasa pemrograman yang populer digunakan dalam pemrograman paralel adalah MPI (Message Passing Interface) dan PVM (Parallel Virtual Machine).

       Yang perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer. Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.

Perbedaan Komputasi Tunggal Dengan Komputasi Paralel
Singkatnya 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

          Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal.             Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.

Hubungan Antara Komputasi Modern dan Parallel Processing
Pemrosesan paralel juga disebut komputasi paralel. Dalam upaya lebih murah pengolahan komputasi paralel menyediakan alternatif pilihan yang layak. Waktu idle siklus prosesor di seluruh jaringan dapat digunakan secara efektif oleh perangkat lunak komputasi terdistribusi yang canggih. Pengolahan paralel istilah digunakan untuk mewakili kelas besar teknik yang digunakan untuk memberikan tugas pengolahan simultan data untuk tujuan meningkatkan kecepatan komputasi dari sistem komputer.

Bahasa populer dalam Pemrograman Paralel
1.       MPI (Message Passing Interface) -> bahasa pemrograman dengan basis pertukaran pesan.
2.       Open MP -> cara kerja nya sama dengan MPI tetapi lebih mudah untuk digunakan.
Pada awalnya pemrograman paralel dilakukan pada CPU (Central Processing Unit) yang memiliki lebih dari 1 Core (Inti), dan pada saat itu hanya super computer saja yang memiliiki CPU dengan lebih dari 1 inti, dan paralelisasi dilakukan dengan melalui jaring komputer.

Keuntungan dan kekurangan Komputasi Parallel
Keuntungan :
  • Waktu eksekusi lebih cepat dan efisien
  • Throughput jadi lebih tinggi (throughput adalah banyaknya keluaran yang dihasilkan per unit waktu)
  • Dapat memecahkan masalah yang lebih besar
Kekurangan :
  • Membutuhkan daya yang besar untuk perangkat yang dibutuhkan
  • Perangkat keras lainnya yang dibutuhkan
  • Kebutuhan daya juga lebih
  • Tidak baik untuk daya rendah dan perangkat mobile
  • Paralel processing adalah salah satu teknik komputasi modern larena membutuhkan banyak prosesor maka biaya mahal

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 memiliki 3 arsitektur GPU yang dapat digunakan untuk komputasi paralel, arsitektur tersebut adalah 
  • NVIDIA Tesla Architecture
  • NVIDIA Fermi Architecture
  • 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.

Implementasi Komputasi Parallel

Penerapan Komputasi Paralel Bisa di terapkan pada Bidang Ilmu Pengetahuan & Teknik komputasi paralel telah dianggap sebagai “high end computing”, dan telah digunakan untuk memodelkan masalah sulit dalam banyak bidang ilmu pengetahuan dan teknik , sebagai contoh diterapkan pada :
  • Ilmu Fisika
  • Bioteknologi
  • Bioscience
  • Pembuatan Pesawat Luar Angkasa pada Bidang Teknik
  • Pembuatan Circuit untuk Elektronika


URL :



Tidak ada komentar:

Posting Komentar