KELOMPOK 6:
Aditia
Septiandi (
50414279 )
Ery
Febrianto (
53414654 )
Fila
Suci Wursima La Adji ( 54414229
)
Ivander
Svega ( 55414556
)
Muhammad
Januardi Santoso ( 57414381 )
Muhammad
Sukri Adiyanto ( 57414553 )
Prazentio
Fathybetara ( 58414501
)
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