Konsep
Paralelisme
Umumnya,
Paralelisme ternyata telah digunakan selam bertahun-tahun terutama dalam
melakukan proses komputasi yang kinerjanya sangat tinggi, akan tetapi akhir –
akhir ini mengikuti dengna perkembangan teknologi struktur di dalamnya telah
berkembang akibat kendala fisik yang dapat mencegah penskalaan frekuensi.
Disamping itu, konsep paralelisme juga merupakan suatu hal yang sering
digunakan oleh computer dan juga menjadi perhatian dari berbagai hal akhir –
akhir ini, maka komputasi paralel telah menjadi paradigma dominan dalam
arsitektur komputer, terutama dalam bentuk prosesor multicore.
Pemrosesan Terdistribusi
Definisi
umum dari pemrosesan terdistribusi merupakan cara untuk mempercepat pengolahan
data atau informasi dengan mendistribusikan pekerjaan atau intruksi ke banyak
komputer yang telah dipilih untuk memberi kekuatan pemrosesan yang lebih cepat.
Tujuan dari komputasi terdistribusi adalah menyatukan kemampuan dari sumber
daya (sumber komputasi atau sumber informasi) yang terpisah secara fisik, ke
dalam suatu sistem gabungan yang terkoordinasi dengan kapasitas yang jauh
melebihi dari kapasitas individual komponen-komponennya.
Tujuan
lain yang ingin dicapai dalam komputasi terdistribusi adalah transparansi.
Kenyataan bahwa sumber daya yang dipakai oleh pengguna sistem terdistribusi
berada pada lokasi fisik yang terpisah, tidak perlu diketahui oleh pengguna
tersebut. Transparansi ini memungkinkan pengguna sistem terdistribusi untuk
melihat sumber daya yang terpisah tersebut seolah-olah sebagai satu sistem
komputer tunggal, seperti yang biasa digunakannya. Dalam prosesnya setiap
komputer berinteraksi satu sama lain untuk mencapai tujuan bersama.
Arsitektur
Komputer Paralel
Karakteristik
umum dari architectural parallel komputer adalah sebagai berikut:
- Pertama dalam hal pembagian memori pada komputer parallel yang sangat bervariasi, namun pada umumnya memiliki kesamaan kemampuan untuk semua prosesor dalam mengakses semua memori sebagai ruang alamat global.
- Kedua beberapa prosesor dapat beroperasi secara independen akan tetapi harus didukung oleh berbagai sumber daya memori yang sama.
- Ketiga yaitu karakteristik yang terletak pada perubahan lokasi memori yang dipengaruhi oleh satu prosesor yang terlihat oleh proses - prosesor lainnya.
- Untuk yang terakhir, karakteristiknya terlihat pada mesin memori bersama dapat dibagi menjadi dua kelas utama berdasarkan waktu akses memori: UMA dan NUMA.
Sesuai
taksonomi Flynn, seorang Designer Processor, Organisasi Prosesor dibagi menjadi
4 :
- SISD (Single Instruction Single Data
Stream)
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. - SIMD (Single Instruction Multiple Data
Stream)
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. - MISD (Multiple Instruction Single Data
Stream)
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. - MIMD (Multiple Instruction Multiple Data
Stream)
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.
Pengantar
Thread Programming
Secara
umum model pemrograman ini adalah jenis pemrograman memori yang digunakan
secara bersamaan. Dalam Thread Programming Paralel, sebuah proses tunggal dapat
memiliki beberapa jalur eksekusi yang konkuren. Implementasi
thread bukanlah hal baru dalam teknik komputasi, Secara historis, perusahaan
hardware menerapkan thread versi mereka sendiri. Implementasi tersebut berada
secara substansial dari satu sama lain sehingga sulit bagi programmer untuk
mengembangkan aplikasi yang thread portabel.
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.
Mekanisme
ini terhitung lambat, karenanya disebut dengan static. Selain itu teknik ini
tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian pekerjaan
yang dinamis di antara thread-thread menyebabkan load balancing-nya cukup
rumit. Untuk memudahkannya programmer harus menggunakan protocol komunikasi
yang kompleks untuk menerapkan scheduler load balancing. Kondisi ini mendorong
pemunculan concurrency platforms yang menyediakan layer untuk mengkoordinasi,
menjadwalkan, dan mengelola sumberdaya komputasi paralel.
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.
Pengantar
Message Passing, OpenMP
Jenis
model ini menunjukkan karakteristik sebagai berikut:
- Tugas pertukaran data melalui komunikasi dengan mengirim dan menerima pesan.
- Transfer data biasanya memerlukan kerjasama operasi yang akan dilakukan oleh masing-masing proses.
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.
Pengantar
Pemrograman CUDA GPU
Sebagaimana
telah kita ketahui bahwa Cuda adalah platform komputasi paralel dan model pemrograman
yang diciptakan oleh perusahaan perangkat keras dunia yaitu NVIDIA. hal ini
memungkinkan peningkatan dramatis dalam kinerja komputasi dengan memanfaatkan
kekuatan dari Graphics Processing Unit(GPU).
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 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://nazaruddin.blog.unigha.ac.id/2013/08/24/pengertian-komputasi-paralel/
http://seto.citravision.com/berita-48-parallel-computation--architectural-parallel-computer.html
http://seto.citravision.com/berita-49-parallel-computation---pengantar-thread-programming.html
http://seto.citravision.com/berita-50-parallel-computation--pengantar-message-passing-openmp.html
http://organisasiarsitekturkomputernaro.blogspot.com/
http://luckritzh.blogspot.com/2013/07/parallel-computation.html#more



