Pembahasan Materi Softskill Pengantar
Komputasi Modern yang keempat adalah mengenai Parallel Computation.
Parallelism Concept
Komputasi paralel adalah
suatu bentuk komputasi dimana instruksi-instruksi dijalankan secara
berkesinambungan. Masalah yang besar dapat dibagi menjadi beberapa masalah yang
lebih kecil(submasalah), untuk kemudian diselesaikan secara serempak. Komputasi
paralel telah digunakan untuk melakukan komputasi yang mensyaratkan unjuk kerja
yang tinggi(high-performance computing).
Teknik komputasi ini semakin berkembang
dewasa ini, hal ini disebabkan oleh batasan fisik di dalam penskalaan
frekuensi(frequency scaling). Komputasi paralel telah menjadi paradigma yang
mendominan di dalam arsitektur komputer, yaitu misalnya prosesor multicore.
Program komputer paralel lebih susah
untuk dibangun dibandingkan dengan program komputer serial, hal ini disebabkan keserempakan
menimbulkan masalah yang potensial di dalam membagi pekerjaan menjadi
subpekerjaan dan menggabungkan kembali subpekerjaan tersebut menjadi hasil oleh
perangkat lunak, diantaranya kondisi berebut (race condition).
Komunikasi dan sinkronisasi diantara
unit pemroses(processing unit) menjadi satu diantara tantangan terbesar untuk
menghasilkan program paralel dengan performa yang baik.
Architectural Parallel Computer
Taksonomi Flynn
dan
Model Pemrosesan Parallel. Keempat kelompok komputer tersebut adalah
:
1. Komputer SISD (Single Instruction
stream-Single Data stream)
Pada komputer jenis ini semua instruksi
dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping
dalam eksekusi setiap bagian instruksi (pipelining). Pada umumnya komputer SISD
berupa komputer yang terdiri atas satu buah pemroses (single processor). Namun
komputer SISD juga mungkin memiliki lebih dari satu unit fungsional (modul
memori, unit pemroses, dan lain-lain), selama seluruh unit fungsional tersebut
berada dalam kendali sebuah unit pengendali.
2. Komputer SIMD (Single Instruction
stream-Multiple Data stream)
Pada komputer SIMD terdapat lebih dari
satu elemen pemrosesan yang dikendalikan oleh sebuah unit pengendali yang sama.
Seluruh elemen pemrosesan menerima dan menjalankan instruksi yang sama yang
dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan data yang
berbeda yang berasal dari aliran data yang berbeda pula.
3. Komputer MISD (Multiple Instruction
stream-Single Data stream)
Komputer jenis ini memiliki n unit
pemroses yang masing-masing menerima dan mengoperasikan instruksi yang berbeda
terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit
pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi
pemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis ini kecuali
dalam bentuk prototipe untuk penelitian.
4. Komputer MIMD (Multiple Instruction
stream-Multiple Data stream)
Pada sistem komputer MIMD murni
terdapat interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran dari
dan ke memori berasal dari space data yang sama bagi semua pemroses. Komputer
MIMD bersifat tightly coupled jika tingkat interaksi antara pemroses tinggi dan
disebut loosely coupled jika tingkat interaksi antara pemroses rendah.
Paralel prosessing komputasi
adalah
proses atau pekerjaan komputasi di komputer dengan memakai suatu bahasa
pemrograman yang dijalankan secara paralel pada saat bersamaan. Secara umum
komputasi paralel diperlukan untuk meningkatkan kecepatan komputasi bila
dibandingkan dengan pemakaian komputasi pada komputer tunggal.
Pengantar Message Passing, OpenMP
Message Passing Interface (MPI).
MPI
adalah
sebuah standard pemrograman yang memungkinkan pemrogram untuk membuatsebuah
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 - pertimbangandiantaranya adalah latensi dari
jaringan dan lama sebuah tugas dieksekusi oleh prosesor
MPI ini merupakan standard yang
dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah
komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja
pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada
mekanismesuatu proses yang bisa mengakses secara langsung memori yang lain.
Pembagian data antar proses dilakukan dengan message passing, yaitu dengan
mengirim dan menerima pesan antar proses.MPI menyediakan fungsi-fungsi untuk
menukarkan antar pesan.
Kegunaan MPI yang lain adalah
1. menulis kode paralel secara
portable,
2. mendapatkan performa yang tinggi
dalam pemrograman paralel, dan
3. menghadapi permasalahan yang
melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan
model data paralel.
OpenMP (Open Multi-Processing)
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++.
Pengantar Pemrograman CUDA 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
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.
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.
Sumber :