Rabu, 31 Mei 2017

Parallel Computation

Parallel Computation



Pengertian
Parallel computing atau dalam bahasa Indonesia disebut juga sebagai komputasi paralel merupakan salah satu pemrograman komputer yang memungkinkan untuk melakukan eksekusi perintah secara bersamaan dan berbarengan dalam satu ataupun banyak prosesor dalam sebuah CPU. Komputasi paralel diperlukan saat mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin parallel yang terdiri dari banuak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara parallel untuk menyelesaikan suatu masalah, makadari itu diperlukan aneka perangkat lunak untuk mengatur pembagian pekerjaan antara node dalam satu mesin parallel, kemudian pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.
Komputer dikatakan sebagai mesin komputasi parallel jika memenuhi beberapa syarat berikut ini:
·         Data yang diproses dipecah menjadi bagian-bagian terpisah yang bekerja seara independen dan terus-menerus.
·         Proses pengeksekusian instruksi ganda, sehingga dalam sekali waktu bisa dihasilkan 2 atau lebih suatu output data.
·         Dapat menyelesaikan tugas lebih cepat dari pada dengan perangkat serial.

Permrosesan Terdistribusi
Pemrosesan terdistribusi merupakan proses pendistribusian pengolahan paralel dalam pemrosesan paralel menggunakan beberapa mesin, sehingga dapat dikatakan kemampuan dari suatu komputer-komputer yang dijalankan secara bersamaan untuk memecahkan suatu masalah dapat dilakukan dengan proses yang cepat.
Menurut Gustafson proses terdistribusi dari sebuah komputasi paralel berjalan dengan menggunakan dua atau lebih mesin untuk mmepercepat penyelesaian masalah dengan memperhatikan faktor eksternal seperti kemampuan mesin dan kecepatan proses tiap-tiap mesin yang digunakan.
Pendistribusian pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Sebagai contoh adalah bagaimana beberapa komunitas memungkinkan pengguna untuk medaftar 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 lain dari proses terdistribusi adalah ketika terdapat macam masalah yang diberikan pada suatu master, maka dengan menggunakan komputer paralel masalah tersebut akan terpecah menjadi beberapa bagian secara terdistribusi.

Arsitektur dari Komputer Parallel
Michael J. Flynn menciptakan satu diantara sistem klasifikasi untuk komputer dan program parallel yang dikenal dengan sebutan Taksonomi Flynn. Flynn mengelompokan komputer dan program berdasarkan banyak set instruksi yang dieksekusi dan banyaknya set data yang digunakan oleh instruksi tersebut. Berikut merupakan arsitektur dari komputer paralel:
·         SISD (Sistem Instruction stream, Single Data stream)
Merupakan komputer tunggal yang mempunyai satu unit kontrol, satu unit prosesor, dan satu unit memori instruksi yang dilaksanakan secara berurut, tetapi boleh juga overlap dalam tahapan eksekusi (overlap) satu alur instruksi didecode untuk alur data tunggal.
·         SIMD (Single Instruction stream, Multiple Data stream)
Komputer yang mempunyai beberapa unit prosesor di bawah satu supervisi, satu unit common control. Setiap prosesor menerima instruksi yang sama dari unit kontrol, tetapi beroperasi pada data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 prosesor. Pada setiap prosesor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya prosesor 1 mengolah data dari deretan atau urutan pertama hingga urutan ke 20, prosesor 2 mengolah data dari urutan 21 sampai urutan ke 40, begitupun untuk prosesor-prosesor 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).
·         MISD (Multiple Instruction stream, Single Data stream)
MISD menggunakan banyak prosesor dengan setiap prosesor menggunakan instruksi yang berbeda, namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Sebagai 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 disetiap prosesor. Sampai saat ini berlum ada komputer yang menggunakan komputer MISD.
·         MIMD (Multiple Instruction stream, Multiple Data stream)
MIMD menggunakan banyak prosesor dengan setiap prosesor memiliki instruksi berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukan komponen untuk model SIMD. Beberapa komputer menggunakan model MIMD yaitu IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3, dan IBM BG/L.

Pengatar Pemrograman GPU-CUDA
·         GPU (Graphic Processing Unit)
GPU merupakan sebuah alat/hardware yang berfungsi sebagai render grafis terdeteksi dalam kesatuan sistem hardware PC atau notebook. GPU bisa berada pada video card khusus (VGA card) atau terintegrasi dalam motherboard berupa integrated GPU. GPU berfungsi untuk mengolah dan memanipulasi grafis pada CPU untuk nantinya ditampilkan dalam bentuk visual grafis pada monitor (output).
·         CUDA (Compute Unified Device Architecture)
CUDA merupakan arsitektur komputasi parallel yang dikembangkan oleh NVIDIA. CUDA adalah mesih komputasi dalam perosesan grafis NVIDIA unit (GPU) yang dapat diakses oleh pengembang perangkat lunak memlalui varian dari bahasa pemrograman lunak melalui varian dari bahasa pemrograman standar industry. CUDA merupakan kumpulan program-program yang menerjemahkan teks dalam bentuk bahasa komputer berupa source code  ke dalam bentuk bahasa komputer yang lain (object code).
Arsitektur CUDA memungkinkan GPU (yang telah mensupport CUDA) menjadi arsitektur terbuka seperti layaknya CPU. Hanya, tidak seperti CPU, GPU memiliki arsitektur banyak-inti yang parallel. Setiap inti memiliki kemampuan untuk menjalankan ribuan “thread” secara simultan. Jika aplikasi yang dijalankan sesuai dengan arsiitektur ini, GPU dapat menyediakan keuntungan yang lebih besar dari segi performa proses aplikasi tersebut.

Berikut meurpakan komponen pendukung CUDA:
Secara umum, komponen-komponen pendukung CUDA adalah:

  • Aplikasi, merupakan perangkat lunak yang dibuat oleh pengguna, menggunakan bahasa pemrograman khusus (kembangan C).
  • Pustaka perangkat lunak, ynag menyediakan layanan dasar untuk program aplikasi mengakses CPU maupun GPU.
  • Perangkat keras khusus, yaitu GPU yang menyediakan mesin parallel.
  • Perangkat keras CPU, sebagai mesin sekuensial.

Perbedaan Antara Komputasi Tunggal dengan Komputasi Paralel
Berikut ini merupakan gambar perbedaan antara komputasi tunggal dengan komputasi paralel:
a.    Komputasi tunggal/seri



b.    Komputasi parallel



Perbandingan antara serial komputasi dan paralel komputasi. Pada sistem komputasi parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Terdapat dua teknik yang berbeda untuk mengakses data pada unit memori, yaitu shared memory address dan message passing. Berdasarkan cara mengorganisasikan memori ini, komputer parallel dibedakan menjadi shared memory parallel machine dan distributed memory parallel machine.
Prosesor dan memori ini didalam mesin parallel dapat dihubungkan (interkoneksi) secara statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory system (sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk menghubungkan antar prosesor dan memori.
Komunikasi data pada sistem parallel memori tredistribusi, memerlukan alat bantu komunikasi. Alat bantu yang sering digunakan oleh sistem seperti PC Jaringan pada saat ini adalah standar MPI (Message Passing Interface) atau standar PVM (Parallel Virtual Machine) yang keduanya bekerja diatas TCP/IP communication layer. Kedua standar ini memerlukan fungsi remote access agar dapat menjalankan program pada masing-masing unit prosesor.
Salah satu protokol yang dipergunakan pada komputasi parlel adalah Network File System (NFS). NFS merupakan protokol yang dapat membagi sumber data melalui jaringan. NFS dibuat untuk dapat independent dari jenis mesin, jenis sistem operasi, dan jenis protocol transport yang digunakan. Hal ini dilakukan dengan menggunakan RPC. NFS memperbolehkan user yang terlah diijinkan untuk mengakses file-file yang berada di remote host sepserti mengakses file yang berada di lokal. Protocol yang digunakan adalah protocol mount untuk menentukan host remote dan jenis file sistem yang akan diakses dan menempatkan di suatu direktori, protocol NFS melakukan I/O pada remote file system. Protocol mount dan protocol NFS bekerja dengan menggunakan RPC dan mengirim dengan protocol TCP dan UDP. Kegunaan dari NFS pada komputasi parallel adalah untuk melakukan sharing data sehingga setiap node slave dapat mengakses program yang sama pada node master.

Software untuk Komputasi Paralel
Software yang digunakan untuk komputasi parallel adalah PGI CDK, dimana aplikasi ini telah dilengkapi dengan Cluster Development Kit. Software ini telah memiliki feature yang lengkap bila ingin melakukan komputasi dengan parallel processing, karena software ini telah mensupport MPI untuk melakukan perhitungan komputasi.

Perkembangan di Indonesia
Di Indonesia, usaha untuk membangun infrastruktur mesin parallel sudah dimulai sejak era 90-an, meski belum pada tahap serius dan permanen. Namun untuk pemrograman paralel sudah sejak awal menjadi satu mata-kuliah wajib di banyak perguruan tinggi terkait. Baru pada tahun 2005 dimulai pembuatan infrastruktur mesin paralel permanen, misalnya yang dikembangkan oleh Grup Disika Teoritik dan Komputasi di P2 Fisika LIPI. Didorong oleh perkembangan pemrograman parallel yang lambat, terutama terkait dengan sumber daya manusia (SDM) yang menguasainya, mesin parallel LIP ini kemudian dibuka untuk public secara cuma-Cuma dalam bentuk LIPI Public Cluster (LPC). Saat ini LPC telah dikembangkan lebih jauh menjadi gerbang komputasi GRID di Indonesia dengan kerjasama global menjadi IndoGRID.
Pada tahun berikutnya, dengan ddukungan dana dari proyek Inherent Diktim Fasilkom UI juga membangun mesin paralel. Sementara itu pada tahun 2009, ITB membuat kluster hybrid CPU dan GPU yang pertama di Indonesia dengan kemampuan hingga 60 inti CPU dan 1920 inti GPU

Kelebihan dari Komputasi Paralel
·         Waktu eksekusi jadi lebih cepat
·         Throughput jadi lebih tinggi


Kekurangan dari Komputasi Paralel
·         Perangkat keras lainnya yang dibuthkan
·         Kebutuhan daya juga lebih
·         Tidak baik untuk daya rendah dan perangkat mobile
·         Paralel processing adalah salah satu teknik komputasi modern
·         Biaya yang mahal karena membutuhkan banyak prosesor.

Sumber:


2 komentar: