Pada umumnya, perangkat lunak telah diprogram untuk perhitungan serial:
- Sebuah masalah dipecah menjadi serangkaian diskrit instruksi
- Instruksi dieksekusi secara berurutan satu demi satu
- Dieksekusi pada prosesor tunggal
- Hanya satu instruksi dapat mengeksekusi setiap saat dalam satu satuan waktu
Serial Computation
Sementara untuk komputasi paralel dalam arti yang paling sederhana, komputasi paralel adalah penggunaan simultan dari beberapa sumber komputasi untuk memecahkan masalah komputasi:
- Sebuah masalah dipecah menjadi bagian-bagian diskrit yang dapat diselesaikan secara bersamaan
- Setiap bagian selanjutnya dipecah menjadi serangkaian instruksi
- Instruksi dari setiap bagian mengeksekusi secara bersamaan pada prosesor yang berbeda
- Sebuah mekanisme kontrol / koordinasi secara keseluruhan digunakan
Parallel Computation
B. Distributed Processing
Distributed Processing adalah kemampuan mengerjakan 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 maka prosesor yang lain akan mengambil alih tugasnya.
source :http://commons.wikimedia.org
C. Architectural Parallel Computer
M.J. Flynn menjabarkan parallel computing ke dalam 4 buah model yaitu SISD, SIMD, MISD dan MIMD. Berikut penjelasannya :
SISD (Single Instruction Stream, Single Data Stream)
Sesuai dengan arti dari SISD sendiri, komputer yang memakai model ini adalah komputer dengan prosesor tunggal dan menjalankan satu instruksi yang dieksekusi secara serial. Yang sering menggunakan model ini adalah komputer konvensional. Contoh komputer yang menggunakan model SISD ini adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
SIMD (Single Instruction Stream, Multiple Data Stream)
Komputer dengan model ini memiliki lebih dari satu prosessor, tetapi hanya mengeksekusi satu instruksi yang sama pada data yang berbeda. Komputer vector adalah salah satu contoh komputer yang menggunakan model ini. Contoh lainnya 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)
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. Sampai saat ini belum ada komputer yang menggunakan model MISD.
MIMD (Multiple Instruction Stream, Multiple Data Stream)
Komputer ini memiliki lebih dari satu prosesor dan mengeksekusi lebih dari satu instruksi secara paralel. 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.
D. Pengantar Thread Programming
source : http://seto.citravision.com/
Dalam pemrograman komputer, sebuah thread adalah informasi terkait dengan penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan. Dari program point-of-view, sebuah thread adalah informasi yang dibutuhkan untuk melayani satu pengguna individu atau permintaan layanan tertentu. Jika beberapa pengguna menggunakan program atau permintaan bersamaan dari program lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing proses. Thread memungkinkan program untuk mengetahui user sedang masuk didalam program secara bergantian dan akan kembali masuk atas nama pengguna yang berbeda. Salah satu informasi thread disimpan dengan cara menyimpannya di daerah data khusus dan menempatkan alamat dari daerah data dalam register. Sistem operasi selalu menyimpan isi register saat program interrupted dan restores ketika memberikan program kontrol lagi.
Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors dan jenis komputer shared-memory lainnya. Teknik ini memungkinkan thread berbagi memori yang tersedia, menggunakan program counter dan mengeksekusi program secara independen. Sistem operasi menempatkan satu thread pada prosesor dan menukarnya dengan thread lain yang hendak menggunakan prosesor itu.
Dynamic Multithreading
Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan untuk kemudahan karena dengannya programmer tidak harus pusing dengan protokol komunikasi, load balancing, dan kerumitan lain yang ada pada static threading. Concurrency platform ini menyediakan scheduler yang melakukan load balacing secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara umum mendukung dua fitur : nested parallelism dan parallel loops. Nested parallelism memungkinkan sebuah subroutine di-spawned (ditelurkan dalam jumlah banyak seperti telur katak) sehingga program utama tetap berjalan sementara subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi for namun memungkinkan iterasi loop dilakukan secara bersamaan.
E. Pengantar Message Processing, OpenMP
source : http://seto.citravision.com/
Message 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. Objek didistribusikan dan metode sistem remote doa seperti ONC RPC , CORBA , Java RMI , DCOM , SOAP , . NET Remoting , CTO , QNX Neutrino RTOS , OpenBinder , D-Bus , Unison RTOS dan serupa pesan lewat sistem.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
source : http://seto.citravision.com/
OpenMP merupakan API yang mendukung multi-platform berbagi memori multiprocessing pemrograman C , C + + , dan Fortran , pada kebanyakan arsitektur prosesor dan system operasi , termasuk Solaris , AIX , HP-UX , GNU / Linux , Mac OS X , dan Windows platform. Ini terdiri dari satu set perintah kompiler, rutinitas library, dan variable lingkungan yang mempengaruhi perilaku run-time. OpenMP dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur Review Board (ARB atau OpenMP), bersama-sama didefinisikan oleh sekelompok perangkat keras komputer utama dan vendor perangkat lunak, termasuk AMD , IBM , Intel , Cray , HP , Fujitsu , Nvidia , NEC , Microsoft , Texas Instruments , Oracle Corporation , dan banyak lagi.
source : http://seto.citravision.com/
F. Pengantar Pemrograman CUDA GPU
CUDA erat kaitannya dengan GPU atau Graphics Processing Unit. GPU adalah sebuah processor khusus yang dirancang untuk mempercepat, memanipulasi dan mengubah memori yang berfungsi mempercepat pemuatan gambar.
CUDA merupakan suatu cara yang dibuat oleh NVIDIA agar GPU yang ada tidak hanya untuk mengolah grafis melainkan juga dapat untuk tujuan umum. CUDA sendiri mendukung pemrogrman bahasa C yang dimana dapat terhubung langsung dengan GPU. untuk melihatnya dapat membuka www.nvidia.com/cuda .
Sources:
Parallel Concept
Distributed Processing
Architectural Parallel Computing
Pengantar Thread Programming
Pengantar Message Passing
Pengantar Pemrograman CUDA GPU
0 komentar:
Posting Komentar