D. Pengantar Thread Programming
Sebuah thread di dalam pemrograman komputer adalah sebuah
informasi terkait tentang penggunaan sebuah program tunggal yang dapat menangani
beberapa pengguna secara bersamaan.Thread ini memungkinkan program untuk
mengetahui bagaimana user masuk ke dalam program secara bergantian dan user
akan masuk kembali menggunakan user yang berbeda. Multiple thread dapat
berjalan bersamaan dengan proses lainnya membagi sumberdaya menjadi memori,
disaat proses lain tidak membaginya.
Treading dibagi
menjadi 2 :
- Static Threading : Teknik ini biasa digunakan untuk komputer dengan chip multiprosesor 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.
- Dynamic Multireading : Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan untuk kemudahan protokol komunikasi, load balancing dan kerumitan lain yang ada pada static threading. Concurrency platform ini menyediakan scheduler yang melakukan load balancing secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara umum mendukung 2 fitur : nested parallesm dan parallel loops.
E. Pengantar Message Passing, Open MP
Message Passing merupakan suatu teknik bagaimana mengatur
suatu alur komunikasi messaging terhadap proses pada sistem. Massage passage
dalam ilmu komputer adalah sutau bentuk komunikasi yang di gunakan dalam
komputasi paralel, pemograman berorientasi objek dan komunikasi interproses. Pada model ini,
proses atau benda dapat mengirim dan menerima pesan yang terdiri dari nol atau
lebih byte, struktur data yang kompleks, atau segmen kode ke proses lainnya dan
dapat melakukan sinkronisasi.
Terdapat paradigma Massaging Passing :
- Banyak contoh dari paradigma sekuensial di pertimbangkan bersama-sama.
- Programer membayangkan beberapa prosesor, masing-masing dengan memori dan menulis sebuah program untuk berjalan pada setiap prosesor.
- Proses berkomunikasi dengan mengirimkan pesan satu sama lain.
MPI (Message Passing
Interface) adalah sebuah standard
pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang
dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi
dapat dibagi untuk dikirimkan ke masing-masing compute node yang kemudian masing-masing
compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head
node.Untuk merancang aplikasi paralel tentu membutuhkan banyak
pertimbangan-pertimbangan diantaranya adalah latensi dari jaringan dan lama
sebuah tugas dieksekusi oleh prosesor.
MPI digunakan secara luas mengingat:
MPI digunakan secara luas mengingat:
- telah memiliki standar; dirancang berkinerja tinggi pada mesin-mesin paralel;
- tersedia secara bebas maupun komersial;
- dikembangkan banyak pihak;
- informasi penerapan dan pengujian dalam berbagai bahasa pemrograman dan sistem telah tersedia.
MPI menyediakan
fungsi-fungsi untuk menukar antar pesan. Kegunaan MPI antara lain :
- Menulis kode paralel secara portable.
- Mendapat performa yang tinggi dalam pemograman paralel.
- Menghadapi masalah yang melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan model data paralel.
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
menggunakan 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++.
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 belumbanyak
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