A. Pengantar
Thread Programming
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.
Pengantar Message Passing, OpenMP
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
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.
Pengantar Programming 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.
B.
Pengantar Message Passing, OpenMP
Pemrosesan Paralel adalah komputasi dua
atau lebih tugas pada waktu bersamaan dengan tujuan untuk mempersingkat waktu
penyelesaian tugas-tugas tersebut dengan cara mengoptimalkan resource pada
sistem komputer yang ada. Pemrosesan paralel dapat mempersingkat waktu
ekseskusi suatu program dengan cara membagi suatu program menjadi bagian-bagian
yang lebih kecil yang dapat dikerjakan pada masing-masing prosesor secara
bersamaan. Suatu program yang yang dieksekusi oleh n prosesor diharapkan dapat
mempersingkat waktu eksekusi n kali lebih cepat. Salah satu komputer yang
menggunakan metode pemrosesan paralel adalah SMP (Single Multi Processor).
Sebuah sistem paralel setidaknya terdiri dari Message Passing Interface (MPI)
dan sebuah pengatur beban kerja (job scheduler).
Pada bagian komputasi parallel ini akan
dibahas tentang Message Passing dan OpenMP.
Pembahasan Jurnal:
Algoritma genetika sekuensial untuk
menyelesaikan Container Loading Problem bekerja hanya dengan menggunakan
satu processor saja meskipun dijalankan pada system
multicore. Tujuan dari penelitian ini adalah untuk mengoptimalkan kinerja
system multicore. Untuk mengoptimalkan kinerja system multicore diperlukan
adanya paralelisasi algoritma genetika untuk menyelesaikan Container Loading
Problem.
Dalam penelitian ini paralelisasi yang
digunakan adalah paralelisasi shared memory menggunakan OpenMP. Paralelisasi
dalam OpenMP dilakukan melalui penyisipan pragma OMP paralel. Dari algoritma
genetika serial Container Loading Problem akan diparalelisasi menggunakan
OpenMP menjadi algoritma genetika parallel Container Loading Problem.
Selanjutnya akan dilakukan pengujian waktu eksekusi algoritma dan
perhitungan speedup.
Hasil dari penelitian ini berupa hasil
pengujian kinerja algoritma parallel yang menunjukkan bahwa waktu
komputasialgoritma paralel lebih kecil dari algoritma sekuensial sebelum
diparalelisasi menggunakan OpenMP. Waktukomputasi yang lebih kecil ini
menyatakan efisiensi kinerja algoritma paralel yang lebih baik dari
algoritmasekuensial. Peningkatan efisiensi ini juga dapat diidentifikasi dari
Speedup paralelisasi yang semakin besar.
Kesimpulan diperoleh dari penelitian ini adalah bahwa paralelisasi terhadap
algoritma genetika untuk menyelesaikan Container Loading Problem akan
meningkatkan efisiensi waktu komputasi melalui pemanfaatan sistem multicore.
Message Passing
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. 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.
Terdapat beberapa metode dalam
pengiriman pesan yaitu :
·
Synchronous
Message Passing
Pengirim menunggu untuk mengirim pesan
sampai penerima siap untuk menerima pesan. Oleh karena itu tidak ada buffering.
Selain itu Pengirim tidak bisa mengirim pesan untuk dirinya sendiri.
·
Ansynchronous
Message Passing
Pengirim akan mengirim pesan kapanpun
dia mau. Pengirim tidak peduli ketika penerima belum siap untuk menerima pesan.
Oleh karena itu diperlukan buffering untuk menampung pesan sementara sampai penerima
siap menerima pesan. Selain itu pengirim dapat pesan untuk dirinya sendiri.
OpenMP (Open
Multiprocessing)
OpenMP adalah Application Programing
Interface (API) yang mendukung pemrograman multiprosesing shared memory dalam
bahasa C/C++ dan fortran pada berbagai arsitektur dan sistem operasi
diantaranya: Solaris, AIX, HP-UX,GNU/Linux, Mac OS X, dan Windows.
OpenMP adalah model portabel dan
skalabel yang memberikan interface sederhana dan fleksibel bagi programer
shared memory dalam membangun aplikasi paralel. Program multithread dapat
ditulis dalam berbagai cara. Beberapa diantaranya memungkinkan untuk melakukan
interaksi yang kompleks antar thread. OpenMP mencoba untuk memberikan kemudahan
pemrograman serta membantu dalam menghindari kesalahan program, melalui
pendekatan terstruktur. Pendekatan ini dikenal sebagai model pemrograman
fork-join.
OpenMP bekerja berdasarkan model shared
memory, maka secara default data dibagi diantara thread-thread dan dapat
terlihat dari setiap thread. Terkadang program akan membutuhkan variabel dengan
nilai thread spesifik. Jika setiap thread memiliki variabel duplikat akan
sangat berpotensi memiliki nilai yang berbeda-beda pada setiap variabel
duplikat tersebut.
Sinkronisasi (pengkoordinasian) aksi
dari thread adalah sesuatu yang sangat penting untuk menjamin data yang harus
dibagi dan untuk mencegah terjadinya data race condition. Secara default OpenMP
telah menyediakan mekanisme untuk menunggu thread dalam suatu tim thread
sehingga semua thread menyelesaikan tugasnya dalam region, kemudian dapat
melanjutkan ke proses selanjutnya. Mekanisme ini dikenal sebagai barrier.
C.
Pengantar Pemrograman CUDA GPU
GPU ( Graphical Processing Unit )
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, 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.
Tidak ada komentar:
Posting Komentar