Parallel Computation:

Komputasi paralel adalah salah satu teknik melakukan
komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara
bersamaan. Biasanya diperlukan saat kapasitas yang diperlukan sangat besar,
baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan
proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini
diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang
dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk
menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung
yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi
pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus
membuat pemrograman paralel untuk merealisasikan komputasi.
Komputer dikatakan sebagai mesin komputasi paralel jika
memenuhi beberapa syarat berikut ini:
-Data yang diproses dipecah menjadi bagian-bagian terpisah
yang bekerja secara independen dan terus-menerus.
- Proses pengeksekusian instruksi ganda. Sehingga dalam
sekali waktu, bisa dihasilkan 2 atau lebih suatu output data. Untuk lebih
detilnya bisa dibaca pada sub bab taksonomi Flynn. Yang dalam hal ini sangat
berbeda dengan paradigma perkembangan pengolahan data yang berkisar pelebaran
jalur data, bukan penjamakan instruksi
- Dapat menyelesaikan tugas lebih cepat daripada dengan
perangkat serial.
Distributed computing
Merupakan sebuah sistem komputer dengan memori
terdistribusi, dimana masing-masing elemen pemrosesan dihubungkan oleh
jaringan.
Architectural parallel computer
Michael J. Flynn menciptakan satu diantara sistem
klasifikasi untuk komputer dan program paralel, yang dikenal dengan sebutan
Taksonomi Flynn. Flynn mengelompokkan komputer dan program berdasarkan
banyaknya set instruksi yang dieksekusi dan banyaknya set data yang digunakan
oleh instruksi tersebut.
1. SISD (Single
Instruction stream, Single Data stream)
Komputer tunggal
yang mempunyai satu unit kontrol, satu unit prosesor dan satu unit memori Instruksi dilaksanakan secara
berurut tetapi boleh juga overlap dalam tahapan eksekusi (overlap) Satu alur
instruksi didecode untuk alur data tunggal.
2. 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.
3. MISD (Multiple
Instruction stream, Single Data stream)
Sampai saat ini
struktur ini masih merupakan struktur teoritis dan belum ada komputer dengan
model ini.
4. MIMD (Multiple Instruction stream, Multiple Data stream)
Organisasi komputer yang memiliki kemampuan untuk memproses
beberapa program dalam waktu yang sama. Pada umumnya multiprosesor dan
multikomputer termasuk dalam kategori
ini.
OpenMP (Open
Multi-Processing) adalah sebuah antarmuka pemrograman aplikasi (API) yang
mendukung multi processing shared memory pemrograman di C, C++ dan Fortran pada
berbagai arsitektur, termasuk Unix dan Microsoft Windows platform. OpenMP
Terdiri dari satu set perintah kompiler,perpustakaan rutinitas, dan variabel
lingkungan yang mempengaruhi run-time. Banyak Aplikasi dibangun dengan model
hibrida pemrograman paralel dapat dijalankan pada komputer cluster dengan
menggunakan OpenMP dan Message Passing Interface (MPI), atau lebih transparan
dengan menggunakan ekstensi OpenMP non-shared memory systems.
Sejarah OpenMP dimulai dari diterbitkannya API pertama untuk
Fotran 1.0 pada Oktober 1997 oleh OpenMP Architecture Review Board (ARB).
Oktober tahun berikutnya OpenMP Architecture Review Board (ARB) merilis
standart C / C++. Pada tahun 2000 mengeluarkan versi 2.0 untuk fotran dan poda
tahun 2002 dirilis versi 2.0 untuk C / C++. Pada tahun 2005 dirilis versi 2.5
yang merupakan pengabungan fotran, C, dan C++/ pada mei 2008 versi 3.0 yang
terdapat didalmnya konsept tasks dan task construct.
OpenMP mengimplementasi multithreading. Bagian kode yang
akan dijalankan secara parallel ditandai sesuai dengan Preprocessor directif
sehingga akan membuat thread-thread sebelum dijalnkan. Setiap thread memiliki
id yang di buat mengunakan fungsi ( omp_get_thread_num() pada C/C++ dan
OMP_GET_THREAD_NUM() pada Fortran). Secara default, setiap thread mengeksekusi
kode secara parallel dan independent. "Work-sharing constructs" dapat
dapat digunakan untuk membagi tugas antar thread sehingga setiap thread
menjalankan sesuai bagian alokasi kodenya. Fungsi OpenMP berada pada file
header yang berlabel “omp.h” di C / C++
Multicore gpu cuda
Sebuah GPU
(Graphical Processing Unit) pada awalnya adalah sebuah prosesor yang berfungsi
khusus untuk melakukan rendering pada kartu grafik saja, tetapi seiring dengan
semakin meningkatnya kebutuhan rendering, terutama untuk mendekati waktu proses
yang realtime /sebagaimana kenyataan sesungguhnya, maka meningkat pula
kemampuan prosesor grafik tersebut. akselerasi peningkatan teknologi GPU ini
lebih cepat daripada peningkatan teknologi prosesor sesungguhnya (CPU), dan
pada akhirnya GPU menjadi General Purpose, yang artinya tidak lagi hanya untuk
melakukan rendering saja melainkan bisa untuk proses komputasi secara umum.
penggunaan Multi GPU dapat mempercepat waktu proses dalam
mengeksekusi program karena arsitekturnya yang natively parallel. Selain itu
Peningkatan performa yang terjadi tidak hanya berdasarkan kecepatan hardware
GPU saja, tetapi faktor yang lebih penting adalah cara membuat kode program
yang benarbenar bisa efektif berjalan pada Multi GPU.
CUDA merupakan
teknologi anyar dari produsen kartu grafis Nvidia, dan mungkin belum banyak
digunakan orang secara umum. Kartu grafis lebih banyak digunakan untuk
menjalankan aplikasi game, namun dengan teknologi CUDA ini kartu grafis dapat
digunakan lebih optimal ketika menjalankan sebuah software aplikasi. Fungsi
kartu grafis Nvidia digunakan untuk membantu Processor (CPU) dalam melakukan
kalkulasi dalam proses data.
CUDA merupakan
singkatan dari Compute Unified Device Architecture, didefinisikan sebagai sebuah
arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat
digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dan
lain sebagainya. VGA – VGA dari Nvidia yang sudah menggunakan teknologi CUDA
antara lain : Nvidia GeForce GTX 280, GTX 260,9800 GX2, 9800 GTX+,9800 GTX,9800
GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400 mGPU,9300 mGPU,8800 Ultra,8800
GTX,8800 GTS,8800 GT,8800 GS,8600 GTS,8600 GT,8500 GT,8400 GS, 8300 mGPU, 8200
mGPU, 8100 mGPU, dan seri sejenis untuk kelas mobile (VGA notebook).
Singkatnya, CUDA dapat memberikan proses dengan pendekatan
bahasa C, sehingga programmer atau pengembang software dapat lebih cepat
menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi seperti teknologi
ilmu pengetahuan yang spesifik. CUDA sekarang bisa dimanfaatkan untuk aplikasi
multimedia. Misalnya meng-edit film dan melakukan filter gambar. Sebagai contoh
dengan aplikasi multimedia, sudah mengunakan teknologi CUDA. Software TMPGenc
4.0 misalnya membuat aplikasi editing dengan mengambil sebagian proces dari GPU
dan CPU. VGA yang dapat memanfaatkan CUDA hanya versi 8000 atau lebih tinggi.
sumber :
http://ahmadqusyairi.blogspot.com/2010/03/openmp-open-multi-processing.html
1. MULTIPROGRAMMING
Multiprogramming memiliki pengertian yaitu Sistem Operasi
dapat melayani banyak program yang tidak ada hubungannya antar program satu
dengan yang lain, dan program-program tersebut dapat dijalankan
sekaligus dalam satu komputer yang sama. Pelaksanaan
instruksi yang terjadi oleh Sistem Operasi adalah pada mulanya program dimuat
ke dalam memori terlebih dahulu, kemudian program dijalankan hingga mengakses
perangkat input dan output, kemudian software akan berpindah ke pekerjaan yang
lainnya begitu
pula jika ada program yang akan di jalankan lagi, dengan
program yang sebelumnya telah dijalankan masih terus berjalan.
2. MULTIPROCESSING
Isilah Multiprocessing mangacu kepada abilitas pemrosesan
komputer yang dilakukan secara serentak. Hal ini memungkinkan dengan adanya
penggunaan dua prosesor lebih dalam sebuah komputer lalu mengalokasikan
perintah kepada prosesor-prosesor tersebut.Multiprocessing juga kadang mengacu
pada kemampuan eksekusi
terhadap beberapa proses perangkat lunak dalam sebuah sistem
secara serentak, jika dibandingkan dengan sebuah proses dalam satu waktu, meski
istilah multiprogramming lebih sesuai untuk konsep ini. Multiprocessing sering
diibaratkan dalam perangkat keras atau hardware (dengan menggunakan beberapa
CPU
sekaligus), sementara multiprogramming sering digunakan
dalam perangkat lunak(software). Suatu sistem mungkin dapat memiliki dua
kemampuan tersebut, salah satu diantaranya, atau tidak sama sekali.
Multiprocessing dapat dibagi ke dalam beberapa kelas, yaitu:
1. Berdasarkan simetrinya
- Assymmetric Multiprocessing (ASMP)
- Symmetric Multiprocessing (SMP)
- Non-uniform Memory Access (NUMA) Multiprocessing
- Clustering
2.Berdasarkan jumlah instruksi dan datanya
- Single Instruction on Single Data Stream
- Single Instruction on Multiple Data Stream
- Multiple Instruction on Single Data Stream
- Multiple Instruction on Multiple Data Stream
3. Berdasarkan kedekatan antar prosesor
- Loosely coupled
- Thightly coupled
3. DISTRIBUTED
PROCESSING
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 yang lain akan
mengambil alih tugasnya.
http://deskripsi.com/komputer/distributed-processing
a.
Penjelasan lengkap tentang
Architectural Parallel Computer

Arsitektur paralel komputer
menurut Klasifikasi Flynn’s:
§ SISD
Single Instruction – Single Data.
Komputer ini memiliki hanya satu prosesor dan satu instruksi yang dieksekusi
secara serial. Komputer ini adalah tipe komputer konvensional. Menurut mereka
tipe komputer ini tidak ada dalam praktik komputer paralel karena bahkan
mainframe pun tidak lagi menggunakan satu prosesor. Klasifikasi ini sekedar
untuk melengkapi definisi komputer paralel. Beberapa contoh komputer yang
menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1

§ SIMD
Single Instruction – Multiple Data. Komputer ini memiliki
lebih dari satu prosesor, tetapi hanya mengeksekusi satu instruksi 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).

§ MISD
Multiple Instructions – Single Data. 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 Instructions – Multiple Data. 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.

Sistem komputer paralel dibedakan dari cara kerja memorinya
menjadi shared memory dan distributed memory. Shared memory berarti memori
tunggal diakses oleh satu atau lebih prosesor untuk menjalankan instruksi
sedangkan distributed memory berarti setiap prosesor memiliki memori sendiri
untuk menjalankan instruksi. Adapun komponen-komponen utama dari arsitektur
komputer paralel cluster PC antara lain:
- § Prosesor (CPU). Bagian paling penting dalam sistem, untuk multicore terdapat lebih dari satu core yang mengakses sebuah memori (shared memory).
- § Memori. Bagian ini dapat diperinci lagi menjadi beberapa bagian penyusunnya seperti RAM, cache memory dan memori eksternal.
- § Sistem Operasi. Software dasar untuk menjalankan sistem komputer.
- § Cluster Middleware. Antarmuka antara hardware dan software.
- § Programming Environment dan Software Tools. Software yang digunakan untuk pemrograman paralel termasuk software pendukungnya.
- § User Interface. Software yang menjadi perantara hardware dengan user.
- § Aplikasi. Software berisi program permasalahan yang akan diselesaikan.
- § Jaringan. Penghubung satu PC (prosesor) dengan PC yang lain sehingga memungkinkan pemanfaatan sumberdaya secara simultan
Sumber :
http://seto.citravision.com/berita-48-parallel-computation--architectural-parallel-computer.html
