1.
Parallelism Concept
Paralelisme (parallelism) lahir dari pendekatan yang
biasa dipergunakan oleh para perancang sistem untuk menerapkan konsep
pemrosesan konkuren. Teknik ini meningkatkan kecepatan proses dengan cara
memperbanyak jumlah modul perangkat keras yang dapat beroperasi secara simultan
disertai dengan membentuk beberapa proses yang bekerja secara simultan pada
modul-modul perangkat keras tersebut. Secara formal, pemrosesan paralel adalah
sebuah bentuk efisien pemrosesan informasi yang menekankan pada eksploitasi
dari konkurensi kejadian-kejadian dalam proses komputasi.Pemrosesan paralel
dapat terjadi pada beberapa tingkatan (level) proses. Tingkatan tertinggi
pemrosesan paralel terjadi pada proses di antara banyak job (pekerjaan) atau
pada program yang menggunakan multiprogramming, time sharing, dan multiprocessing.
Multiprogramming kemampuan eksekusi terhadap beberapa proses perangkat lunak
dalam sebuah system secara serentak, jika dibandingkan dengan sebuah proses
dalam satu waktu, dan timesharing berarti menyediakan pembagian selang waktu
yang tetap atau berubah-ubah untuk banyak program. Multiprocessing adalah
dukungan sebuah sistem untuk mendukung lebih dari satu prosesor dan
mengalokasikan tugas kepada prosesor-prosesor tersebut. Multiprocessing sering
diimplementasikan dalam perangkat keras (dengan menggunakan beberapa CPU
sekaligus), sementara multiprogramming sering digunakan dalam perangkat lunak.
Sebuah sistem mungkin dapat memiliki dua kemampuan tersebut, salah satu di
antaranya, atau tidak sama sekali. Pemrosesan paralel dapat juga terjadi pada
proses di antara prosedurprosedur atau perintah perintah (segmen program) pada
sebuah program.Untuk meningkatkan kecepatan proses komputasi, dapat ditempuh
dua cara :
Peningkatan kecepatan perangkat keras.
Komponen utama perangkat keras komputer adalah
processor. Meskipun kecepatan processor dapat ditingkatkan terus, namun karena
keterbatasan materi pembuatnya, tentu ada suatu batas kecepatan yang tak
mungkin lagi dapat dilewati. Karena itu timbul ide pembuatan komputer
multiprocessor. Dengan adanya banyak processor dalam satu komputer, pekerjaan
bisa dibagi-bagi kepada masing-masing processor. Dengan demikian lebih banyak
proses dapat dikerjakan dalam satu saat. Peningkatan kecepatan setiap proses
bisa dicapai melalui peningkatan kecepatan perangkat lunak. Kecepatan perangkat
lunak sangat ditentukan oleh algoritmanya.
Peningkatan kecepatan perangkat lunak.
Program komputer untuk komputer sekuensial harus
menyediakan sederetan operasi untuk dikerjakan oleh prosesor tunggal. Program
komputer untuk komputer paralel harus menyediakan sederetan operasi untuk
beberapa prosesor untuk dikerjakan secara paralel, termasuk operasi untuk
mengatur dan mengitegrasikan prosesor-prosesor yang terpisah tersebut
mengerjakan suatu komputasi yang koheren. Kebutuhan akan pembuatan dan pengaturan
berbagai aktivitas komputasi paralel menambah dimensi baru proses dari
pemrograman komputer. Algoritma untuk problem yang spesifik harus
diformulasikan sedemikian rupa, agar menghasilkan aliran operasi paralel yang
kemudian akan dieksekusi di prosesor yang berbeda. Karena itu, meskipun
arsitektur multiprosesor dan multikomputer mempunyai pontensi yang tinggi untuk
meningkatkan kemampuan komputasi, potensi ini akan tercapai melalui pengertian
yang baik mengenai bahasa pemrograman paralel dan perancangan algoritma
paralel.
Tingkat Paralelisme
Berdasarkan tingkat paralelismenya prosesor paralel
dapat dibagi menjadi beberapa tingkat sebagai berikut :
1. Komputer Array :
a. Prosesor array : beberapa prosesor yang bekerja
sama untuk mengolah set instruksi yang sama dan data yang berbeda – beda atau
biasa disebut SIMD (Single Instruction-stream Multiple Data)
b. Prosesor vektor : beberapa prosesor yang disusun
seperti pipeline.
2. Multiprosesor, yaitu sebuah sistem yang memiliki 2
prosesor atau lebih yang saling berbagi memori.
3. Multikomputer, yaitu sebuah sistem yang memiliki 2
prosesor atau lebih yang masing-masing prosesor memiliki memori sendiri.
Jenis-Jenis Pemrosesan Paralel
Pemrosesan paralel dapat dibagi ke dalam beberapa
klasifikasi, sebagai berikut :
1. Berdasarkan simetri penjadwalannya, pemrosesan
parallel dapat dibagi dalam beberapa jenis:
a) Asymmetric Multiprocessing (ASMP)
b) Symmetric Multiprocessing (SMP)
c) ClusteringPoliteknik Telkom Sistem Komputer
2. Berdasarkan aliran instruksi dan datanya,
pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) SISD (Single Instruction on Single Data Stream)
b) SIMD (Single Instruction on Multiple Data Stream)
c) MISD (Multiple Instruction on Single Data Stream)
d) MIMD (Multiple Instruction on Multiple Data Stream)
3. Berdasarkan kedekatan antar prosesor, pemrosesan
parallel dapat dibagi dalam beberapa jenis:
a) Multikomputer (Loosely Coupled/ local memory)
dengan memori yang terdistribusi
b) Multiprosesor (Tightly Coupled/ global memory)
dengan memori yang dapat digunakan bersama (shared memory)
2.
Distributed Processing
Merupakan sekumpulan peralatan pemrosesan yang saling
terhubung melalui jaringan yang mengerjakan tugas-tugas tertentu.
Pemrosesan terdistribusi dapat dikelompokan
berdasarkan beberapa kriteria yaitu :
1. Struktur antar hubungan
2. Kesaling tergantungan komponen-komponen.
3. Keselarasan antar komponen.
Distributed database system / system database
terdistribusi
Merupakan sekumpulan database yang saling terhubung
secara logical dan secara fisik terdistribusi pada berbagai tempat melalui
jaringan computer.
Sistem yang mengelola
database terdistribusi dan menyediakan mekanisme agar distribusi
transparent adalahdistributed database management system (DDBMS).
Ciri-ciri untuk system yang bukan merupakan system
database terdistribusi :
1. Sistem yang berisi kumpulan file
2. Berbagai arsitektur fisik berkait dengan system
multiprocessor.
Ciri sistem database distribusi
1. Data disimpan pada sejumlah tempat. Setiap tempat
secara logic terdiri dari processor tunggal.
2. Processor pada tempat yang berbeda tersebut
dihubungkan dengan jaringan computer.
3. Bukan sekumpulan file yang berada pada berbagai
tempat tetapi merupakan database pada berbagai tempat.
4.Setiap tempat mempunyai kemampuan untuk mandiri
memproses permintaan user yang membutuhkan akses kedata ditempat tersebut, dan
juga mampu untuk memproses data yang tersimpan di tempat lain
Keuntungan dan Kelemahan sistem database distribusi
·
Keuntungan
:
1. Pengelolaan secara transparan data terdistribusi
dan replicated.
2. Mengacu pada struktur organisasi
3. Meningkatkan kemampuan untuk share dan otonomi
local
4. Meningkatkan ketersediaan data
5. Meningkatkan kehandalan
6. Meningkatkan unjuk kerja
7. Memudahkan pengembangan system
·
Kelemahan
:
1. Kompleksitas manajemen
2. Control integritas lebih sulit
3. Biaya pengembangan
4. Keamanan
5. Kurang standarisasi
6. Menambahkan kebutuhan penyimpanan
7. Lebih sulit dalam mengatur lingkungan data
8. Menambah biaya pelatihan.
3.
Architectural Parallel Computer
Arsitektur komputer paralel ada beberapa versi
pengertian. Di sini saya akan menjelaskan sedikit tentang arsitektur komputer
menurut Flynn. Sesuai taksonomi Flynn, seorang Designer Processor, Organisasi
Prosesor dibagi menjadi 4 :
·
SISD
Single
Instruction – Single Data. Komputer ini memiliki hanya satu prosesor dan satu
instruksi yang dieksekusi secara serial. Komputer ini adalah tipe komputer
konvensional. 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. Sampai saat ini belum ada
komputer yang menggunakan model MISD karena sistemnya tidak mudah.
·
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.
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.
4.
Pengantar Thread Programing
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.
Sebagian besar komputer hanya dapat mengeksekusi satu
instruksi program pada satu waktu, tetapi karena mereka beroperasi begitu
cepat, mereka muncul untuk menjalankan berbagai program dan melayani banyak
pengguna secara bersamaan. Sistem operasi komputer memberikan setiap program
“giliran” pada prosesnya, maka itu memerlukan untuk menunggu sementara program
lain mendapat giliran. Masing-masing program dipandang oleh sistem operasi
sebagai suatu tugas dimana sumber daya tertentu diidentifikasi dan terus
berlangsung. Sistem operasi mengelola setiap program aplikasi dalam sistem PC
(spreadsheet, pengolah kata, browser Web) sebagai tugas terpisah dan
memungkinkan melihat dan mengontrol item pada daftar tugas. Jika program
memulai permintaan I / O, seperti membaca file atau menulis ke printer, itu
menciptakan thread. Data disimpan sebagai bagian dari thread yang memungkinkan
program yang akan masuk kembali di tempat yang tepat pada saat operasi I / O
selesai. Sementara itu, penggunaan bersamaan dari program diselenggarakan pada
thread lainnya. Sebagian besar sistem operasi saat ini menyediakan dukungan
untuk kedua multitasking dan multithreading. Mereka juga memungkinkan
multithreading dalam proses program agar sistem tersebut disimpan dan menciptakan proses baru untuk setiap thread.
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.
Sebagian platform dibangun sebagai runtime libraries
atau sebuah bahasa pemrograman paralel lengkap dengan compiler dan pendukung
runtime-nya.
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.
5.
Pengantar Message Pasing
Massage 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
6.
Open MP
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.
7.
Pengantar
Pemrograman CUDA
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.
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.
Keuntungan dengan CUDA sebenarnya tidak luput dari
teknologi aplikasi yang ada. CUDA akan mempercepat proses aplikasi tertentu,
tetapi tidak semua aplikasi yang ada akan lebih cepat walaupun sudah mengunakan
fitur CUDA. Hal ini tergantung seberapa cepat procesor yang digunakan, dan
seberapa kuat sebuah GPU yang dipakai. Dan bagian terpenting adalah aplikasi
apa yang memang memanfaatkan penuh kemampuan GPU dengan teknologi CUDA. Kedepan
seperti pengembang software Adobe akan ikut memanfaatkan fitur CUDA pada
aplikasi mereka.Jawaban akhir adalah, untuk memanfaatkan CUDA kembali melihat
aplikasi software yang ada. Apakah software yang ada memang mampu memanfaatkan
CUDA dengan proses melalui GPU secara penuh. Hal tersebut akan berguna untuk
mempercepat selesainya proses pada sebuah aplikasi. Dengan kecepatan proses
GPU, aplikasi akan jauh lebih cepat. Khususnya teknologi ilmu pengetahuan
dengan ramalan cuaca, simulator pertambangan atau perhitungan yang rumit
dibidang keuangan. Sedangkan aplikasi umum sepertinya masih harus menunggu.
Referensi :