Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras a mauris placerat, ornare lectus sit amet, blandit dui. Sed consectetur nunc vel libero malesuada, ac porta sapien suscipit. Praesent pretium mattis sapien, a molestie sapien ultrices quis. Praesent condimentum sem turpis, at elementum lacus dapibus eu. Phasellus ultricies semper dui nec lacinia. Aenean eget est posuere, tristique ex eget, tincidunt eros. Vivamus ullamcorper venenatis accumsan. Pellentesque dolor diam, consequat ut tempor quis, dapibus sit amet urna. Phasellus nulla ante, tincidunt eget erat nec, convallis lacinia ipsum. Nam convallis orci dui, ac accumsan mauris facilisis eget. Vestibulum sed dui non orci sagittis blandit in eget enim. Donec eget tellus enim. Etiam augue nulla, elementum vitae sapien a, cursus aliquam ante. Proin vitae ligula pharetra, volutpat nisi id, maximus enim. Mauris fringilla justo sed tincidunt sagittis. Sed odio erat, placerat eu massa quis, tincidunt pharetra nibh.

Monday, June 3, 2013

Parallel Computation





Kemajuan teknologi dibidang komputer semakin pesat sesuai dengan kebutuhan manusia yang semakin bergantung pada komputer. Data yang diolah semakin besar membuat perangkat komputer mengikuti kebutuhan manusia. Spesifikasi komputer pada 10 tahun terakhir mengalami perkembangan yang sangat pesat hingga muncul processor dengan kecepatan yang menurut saya sudah sangat cukup untuk pengolahan data. Namun, kebutuhan konsumen dengan kecepatan processor yang ada ternyata masih dirasa kurang untuk pengolahan data yang sangat besar, butuh beberapa hari untuk pengolahan data yang sangat besar dengan menggunakan komputer yang ada sekarang. Sehingga, para ilmuwan mencari cara untuk mengatasi hal tersebut, salah satunya adalah menggunakan parallel computing. Berikut penjelasan saya dikutip dari beberapa sumber.

Parallelism Concept

Dikutip dari Wikipedia [1].
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak.
Dari kutipan diatas, parallel computation / komputasi paralel merupakan suatu teknik komputasi yang dilakukan oleh beberapa komputer dengan memory yang sama secara bersamaan. Bisa dibilang, para komputer ini berbagi tugas untuk mengerjakan 1 atau beberapa tugas yang sama, sehingga dapat mempercepat proses komputasi pada data yang sangat besar. 

Distributed Processing



Distributed processing / pemrosesan terdistribusi merupakan suatu teknik didalam komputasi paralel, dimana sebuah komputer (master komputer) yang sedang menangani sebuah atau beberapa masalah (dalam hal ini pemrosesan data yang besar), membagi tugas ke beberapa komputer yang lainnya. Hal ini bertujuan agar proses tersebut dapat dikerjakan dengan cepat sehingga mengurangi waktu pengerjaan dan meringankan beban kerja dari komputer master.

Dikutip dari Wikipedia [2], berikut perbedaan antara komputasi paralel dengan komputasi terdistribusi :
  • Pada komputasi paralel, semua processor memiliki akses ke memory yang sama untuk bertukar informasi antar processor.
  • Pada komputasi terdistribusi, setiap processor memiliki memory sendiri (distributed memory), pertukaran informasi dilakukan dengan cara mengirimkan pesan antara processor.



Architectural Parallel Computer

Menurut Flynn pada tahun 1966, model komputer paralel terbagi menjadi 4 macan, yaitu :

SISD (Single Instruction, Single Data)

  • Terdiri dari 1 komputer non-paralel
  • Single Instruction : hanya satu instruksi yang dilayani oleh CPU selama satu siklus
  • Single Data : hanya satu data stream yang digunakan sebagai inputan dalam satu siklus
  • Eksekusi bersifat deterministik

SIMD (Single Instruction, Multiple Data)
  • Terdiri dari beberapa komputer
  • Single Instruction : hanya satu instruksi yang dilayani oleh CPU selama satu siklus
  • Multiple Data : setiap processing unit bisa beroperasi dalam data yang berbeda
  • Syncrhronous dan Deterministic execution

MISD (Multiple Instruction, Single Data)

  • Terdiri dari beberapa komputer yang terhubung secara paralel
  • Multiple instruction : setiap processing unit beroperasi pada data yang terbagi dari beberapa instruction stream.
  • Single Data : satu data stream dibagi ke dalam multiple processing unit

MIMD (Multiple Instruction, Multiple Data)

  • Merupakan salah satu tipe parallel computing
  • Multiple Instruction : masing-masing processor mengeksekusi instruksi yang berbeda
  • Multiple Data : masing-masing processor bekerja dengan data stream yang berbeda
  • Synchronous atau asynchronous, deterministik atau non-deterministik

Pengantar Thread Programming





Thread merupakan bagian kecil dari sebuah proses, dalam sebuah proses yang sedang berjalan proses tersebut terbagi kedalam sebuah proses-proses kecil, inilah yang disebut dengan thread. Thread digunakan untuk menangani kekurangan dari single proses yang sangat terbatas penggunaannya. Dalam single proses, hanya akan ada satu tugas yang dapat dikerjakan oleh proses tersebut. Hal ini dapat dihindari dengan penggunaan thread dalam sebuah program. Penggunaan thread dapat menghemat waktu pengerjaan, karena pada thread programming, beberapa thread dapat bekerja bersamaan dalam waktu yang sama inilah yang disebut dengan multithread. Penggunaan thread sangat berguna dalam komputer parallel, karena dengan adanya thread programming dapat menghemat waktu yang merupakan tujuan dari adanya komputer paralel ini.

Pengantar Massage Passing, OpenMP

Seperti yang dibahas pada bagian sebelumnya, message passing merupakan sebuah metode yang digunakan pada distributed computing. Gambar dibawah ini dapat menjelaskan bagaimana proses ini bekerja.

Message Passing Model

Mesin A dan Mesin B saling bertukar informasi, pada setiap mesin mengerjakan tugas yang berbeda pada local memory yang ada pada masing-masing processor.


OpenMP Logo


OpenMP merupakan sebuah API (Application Program Interface) yang digunakan khusus untuk multi-thread, shared memory parallelism. Untuk penjelasan yang lebih jelas, dapat mengunjungi link ini atau langsung menuju website resmi OpenMP http://openmp.org/wp/

Pengantar Pemrograman CUDA GPU


CUDA (Compute Unified Device Architecture) adalah sebuah parallel computing platform dan programming model yang dibuat oleh NVIDIA dan bekerja pada GPU yang diproduksi olen NVIDIA. CUDA dibuat untuk mempermudah developer untuk mengakses kedalam virtual instruction set dan memory yang terdapat pada GPU buatannya. Untuk mengetahui informasi lebih lanjut tentang Nvidia CUDA ini, anda dapat mengunjungi link berikut http://www.nvidia.com/object/cuda_home_new.html


Dengan adanya support dari Nvidia dengan mengeluarkan CUDA ini, para developer dapat menggunakan GPU Nvidia untuk keperluan paralel programming.

Sumber :
[1] http://id.wikipedia.org/wiki/Komputasi_paralel
[2]http://en.wikipedia.org/wiki/Distributed_computing
[3]https://computing.llnl.gov/tutorials/parallel_comp/
[4]https://en.wikipedia.org/wiki/Thread_(computing)
[5]https://computing.llnl.gov/tutorials/openMP/
[6]http://en.wikipedia.org/wiki/CUDA

No comments :

Post a Comment