Materi PARALLEL COMPUTATION
4IA18
Nama Anggota:
1.
Yohanes Kurniawan (5C414440)
2. Haryono (54414835)
3. Dimas Ario (53414090)
4. Audya Elita Putri (51414801)
5. Muhamad Fikri (56414929)
6. Rachmadinna Poetri Priyandini (58414682)
MATERI 1
PARALLELISM
CONCEPT
1.
PENGERTIAN KOMPUTASI PARALEL
Secara umum Komputasi
paralel adalah salah satu teknik melakukan komputasi secara bersamaan
dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya
diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus
mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll)
ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui
di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika,
kimia dan lain-lain.
Untuk melakukan aneka jenis komputasi
paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak
komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel
untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak
pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur
distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai
harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti
dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan
diolah secara parallel.
Di dalam komputasi parallel ada yang
dinamakan dengan pemrograman parallel. Pemrograman paralel adalah teknik
pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara
bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor
tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila
komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer
terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang
digunakan adalah sistem terdistribusi.
Parallel processing berbeda dengan
multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel
processing disebut juga parallel computing. Pada system komputasi parallel
terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik
yang berbeda untuk mengakses data di unit memori, yaitu shared memory address
dan message passing. Berdasarkan cara mengorganisasikan memori ini computer
parallel dibedakan menjadi shared memory parallel machine dan distributed
memory parallel machine.
Prosesor dan memori ini didalam mesin
paralel dapat dihubungkan (interkoneksi) secara statis maupun dinamis.
Interkoneksi statis umumnya digunakan oleh distributed memory system (sistem
memori terdistribusi). Sambungan langsung peer to peer digunakan untuk
menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch
untuk menghubungkan antar prosesor dan memori.
Terdapat dua
hukum yang berlaku dalam komputasi parallel processing. yaitu:
a)
Hukum Amdahl
Amdahl berpendapat, “Peningkatan kecepatan secara
paralel akan menjadi linear, melipatgandakan kemampuan proses sebuah komputer
dan mengurangi separuh dari waktu proses yang diperlukan untuk menyelesaikan
sebuah masalah.”
b)
Hukum Gustafson
Pendapat yang
dikemukakan Gustafson hampir sama dengan Amdahl, tetapi dalam pemikiran
Gustafson, sebuah komputasi paralel berjalan dengan menggunakan dua atau lebih
mesin untuk mempercepat penyelesaian masalah dengan memperhatikan faktor
eksternal, seperti kemampuan mesin dan kecepatan proses tiap-tiap mesin yang
digunakan
2.
TUJUAN KOMPUTASI PARALEL
Tujuan utama dari
pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin
banyak hal yang bisa dilakukan secara bersamaan ( dalam waktu yang sama ),
semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang
adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda
akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila
anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda
butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.
Performa dalam
pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up)
yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda
memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman,
berdua anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan
kecepatan sebanyak 2 kali.
3.
PERBEDAAN
KOMPUTASI TUNGGAL DAN KOMPUTASI PARAREL
Untuk lebih memperjelas lebih dalam mengenai
perbedaan komputasi tunggal (menggunakan 1 processor) dengan komputasi paralel
(menggunakan beberapa processor), maka kita harus mengetahui terlebih dahulu
pengertian mengenai model dari komputasi. Ada 4 model komputasi yang digunakan,
yaitu:
a. SISD (Single Instruction, Single Data) adalah satu-satunya yang
menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya
digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai
model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan
komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer
yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP
1.
b. SIMD(Single Instruction, Multiple Data) menggunakan banyak
processor dengan instruksi yang sama, namun setiap processor mengolah data yang
berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang
terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor
kita menggunakan algoritma atau perintah yang sama, namun data yang diproses
berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama
hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40,
begitu pun untuk processor-processor yang lain. 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).
c. MISD(Multiple Instruction, Single Data) menggunakan banyak processor
dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data
yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa
menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang
berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan
kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang
digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat
ini belum ada komputer yang menggunakan model MISD.
d. MIMD( Multiple Instruction, Multiple Data) menggunakan banyak processor
dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang
berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan
komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah
IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM
BG/L.
Berikut ini adalah gambar perbedaa antara komputasi tunggal dengan
parallel komputasi :
·
komputasi tunggal/serial
·
komputasi parallel
4.
HUBUNGAN KOMPUTASI MODERN DENGAN PARALEL PROCESSING
Hubungan
antara komputasi modern dan parallel processing sangat berkaitan, karena
penggunaan komputer saat ini atau komputasi dianggap lebih cepat dibandingkan
dengan penyelesaian masalah secara manual. Dengan begitu peningkatan kinerja
atau proses komputasi semakin diterapkan, dan salah satu caranya adalah dengan
meningkatkan kecepatan perangkat keras. Dimana komponen utama dalam perangkat
keras komputer adalah processor. Sedangkan parallel processing adalah
penggunaan beberapa processor (multiprocessor atau arsitektur komputer dengan
banyak processor) agar kinerja computer semakin cepat.
Kinerja komputasi dengan menggunakan paralel processing itu menggunakan
dan memanfaatkan beberapa komputer atau CPU untuk menemukan suatu pemecahan
masalah dari masalah yang ada. Sehingga dapat diselesaikan dengan cepat
daripada menggunakan satu komputer saja. Komputasi dengan paralel processing
akan menggabungkan beberapa CPU, dan membagi-bagi tugas untuk masing-masing CPU
tersebut. Jadi, satu masalah terbagi-bagi penyelesaiannya. Tetapi ini untuk
masalah yang besar saja, komputasi yang masalah kecil, lebih murah menggunakan
satu CPU saja.
Nama
: Yohanes Kurniawan
Npm : 5C414440
/ 4IA18
MATERI 2
DISTRIBUSI
PROCESSING
DISTRIBUSI PROCESSING
Definisi umum dari pemrosesan terdistribusi merupakan cara untuk
mempercepat pengolahan data atau informasi dengan mendistribusikan pekerjaan
atau intruksi ke banyak komputer yang telah dipilih untuk memberi kekuatan
pemrosesan yang lebih cepat. Tujuan dari komputasi terdistribusi adalah
menyatukan kemampuan dari sumber daya (sumber komputasi atau sumber informasi)
yang terpisah secara fisik, ke dalam suatu sistem gabungan yang terkoordinasi
dengan kapasitas yang jauh melebihi dari kapasitas individual
komponen-komponennya.
Tujuan lain yang ingin dicapai dalam komputasi terdistribusi adalah
transparansi. Kenyataan bahwa sumber daya yang dipakai oleh pengguna sistem
terdistribusi berada pada lokasi fisik yang terpisah, tidak perlu diketahui
oleh pengguna tersebut. Transparansi ini memungkinkan pengguna sistem
terdistribusi untuk melihat sumber daya yang terpisah tersebut seolah-olah
sebagai satu sistem komputer tunggal, seperti yang biasa digunakannya. Dalam
prosesnya setiap komputer berinteraksi satu sama lain untuk mencapai tujuan
bersama.
Nama : Haryono
Npm :
54414835 / 4IA18
MATERI 3
Architectural Parallel Computing
Architectural
Parallel Computing – Model
Parallel
processing telah dikembangkan sebagai teknologi yang efektif di komputer modern
untuk memenuhi permintaan akan kinerja yang lebih tinggi, biaya lebih rendah
dan hasil yang akurat dalam aplikasi kehidupan nyata. Peristiwa serentak umum
terjadi di komputer saat ini karena praktik multiprogramming, multiprocessing,
atau multicomputing.
Komputer
modern memiliki paket perangkat lunak yang kuat dan ekstensif. Untuk
menganalisa perkembangan kinerja komputer, pertama kita harus memahami
perkembangan dasar perangkat keras dan perangkat lunak.
Tonggak
Perkembangan Komputer - Ada dua tahap utama pengembangan komponen komputer -
mekanik atau elektromekanis. Komputer modern berevolusi setelah
diperkenalkannya komponen elektronik. Elektron mobilitas tinggi di komputer
elektronik menggantikan bagian operasional di komputer mekanis. Untuk transmisi
informasi, sinyal listrik yang melaju hampir pada kecepatan lampu diganti
mekanis gigi atau tuas.
Elemen
komputer modern - Sistem komputer modern terdiri dari perangkat keras komputer,
set instruksi, program aplikasi, perangkat lunak sistem dan antarmuka pengguna.
Unsur
Sistem Komputer Modern
Masalah
komputasi dikategorikan sebagai komputasi numerik, penalaran logis, dan
pemrosesan transaksi. Beberapa masalah kompleks mungkin memerlukan kombinasi
dari ketiga mode pemrosesan.
Evolusi Arsitektur Komputer - Dalam empat
dekade terakhir, arsitektur komputer telah mengalami perubahan revolusioner.
Kami memulai dengan arsitektur Von Neumann dan sekarang kami memiliki multicomputers
dan multiprocessors.
Kinerja sistem komputer - Kinerja suatu sistem
komputer bergantung pada kemampuan mesin dan perilaku program. Kemampuan mesin
dapat ditingkatkan dengan teknologi perangkat keras yang lebih baik, fitur
arsitektur yang canggih dan pengelolaan sumber daya yang efisien. Perilaku
program tidak dapat diprediksi karena bergantung pada kondisi aplikasi dan
run-time
Multiprocessors dan
Multicomputers
Pada bagian ini, kita akan membahas dua jenis
komputer paralel -
· Multiprocessors
· Multicomputers
Shared-Memory
Multicomputers
Tiga model
multiprocessors memori bersama yang paling umum adalah -Uniform Memory Access
(UMA)
Dalam
model ini, semua prosesor berbagi memori fisik secara seragam. Semua prosesor
memiliki waktu akses yang sama untuk semua kata memori. Setiap prosesor mungkin
memiliki memori cache pribadi. Aturan yang sama diikuti untuk perangkat
periferal.
Bila semua
prosesor memiliki akses yang sama ke semua perangkat periferal, sistem ini
disebut multiprosesor simetris. Bila hanya satu atau beberapa prosesor yang
bisa mengakses perangkat periferal, sistem ini disebut multiprosesor asimetris.
UMA Multiprosesor
Akses
Memori Non-seragam (NUMA)
Dalam model multiprosesor NUMA, waktu akses berbeda
dengan lokasi kata memori. Di sini, memori bersama didistribusikan secara fisik
di antara semua prosesor, yang disebut kenangan lokal. Koleksi semua kenangan
lokal membentuk ruang alamat global yang bisa diakses oleh semua pengolah.
NUMA Model untuk Sistem Multiprosesor
Arsitektur
Memori Cache Only (COMA)
Model COMA adalah kasus khusus model NUMA. Di sini,
semua kenangan utama yang terdistribusi diubah menjadi kenangan cache.
Model
COMA Multiprosesor
Distributed - Memory Multicomputers - Sistem
multicomputer memori terdistribusi terdiri dari beberapa komputer, dikenal
sebagai node, saling terhubung melalui jaringan message passing. Setiap node
bertindak sebagai komputer otonom yang memiliki prosesor, memori lokal dan
kadang-kadang perangkat I / O. Dalam kasus ini, semua kenangan lokal bersifat
pribadi dan hanya dapat diakses oleh prosesor lokal. Inilah sebabnya, mesin
tradisional disebut mesin tidak-remote-memory-access (NORMA).
Model Generik dari sebuah Pesan yang Melewati
Multiprosesor
Komputer
Multivektor dan SIMD
Pada bagian ini, kita
akan membahas superkomputer dan prosesor paralel untuk pemrosesan vektor dan
paralelisme data.
Vektor
superkomputer
Pada komputer vektor,
prosesor vektor terpasang pada prosesor skalar sebagai fitur opsional. Komputer
host pertama memuat program dan data ke memori utama. Kemudian unit kontrol
skalar menerjemahkan semua instruksi. Jika instruksi yang didekode adalah
operasi skalar atau operasi program, prosesor skalar menjalankan operasi yang
menggunakan pipa fungsional skalar.Di sisi lain, jika instruksi yang
diterjemahkan adalah operasi vektor maka instruksi akan dikirim ke unit kontrol
vektor.
Arsitektur komputer Vector Super
Superkomputer
SIMD
Di komputer SIMD, jumlah prosesor 'N' terhubung ke
unit kontrol dan semua prosesor memiliki unit memori masing-masing. Semua
prosesor dihubungkan oleh jaringan interkoneksi.
Model Operasional Komputer SIMD
Model
PRAM dan VLSI
Model ideal memberikan kerangka kerja yang sesuai
untuk mengembangkan algoritma paralel tanpa mempertimbangkan batasan fisik atau
rincian implementasi.
Model dapat ditegakkan untuk mendapatkan batas
kinerja teoritis pada komputer paralel atau untuk mengevaluasi kompleksitas
VLSI pada area chip dan waktu operasional sebelum chip dibuat.
Mesin
Random-Access Paralel
Sheperdson dan Sturgis (1963) memodelkan komputer
Uniprocessor konvensional sebagai random-access-machines (RAM). Fortune dan
Wyllie (1978) mengembangkan model parallel random access-machine (PRAM) untuk
memodelkan sebuah komputer paralel ideal dengan akses memori nol dan
sinkronisasi.
Model
PRAM
PRAM prosesor N memiliki unit memori bersama. Memori
bersama ini bisa dipusatkan atau didistribusikan antar prosesor. Prosesor ini
beroperasi pada siklus baca-memori, menulis-memori dan perhitungan yang
sinkron. Jadi, model ini menentukan bagaimana operasi baca dan tulis bersamaan
ditangani.
Berikut adalah operasi pembaruan memori yang mungkin
-
· Exclusive
read (ER) - Dalam metode ini, dalam setiap siklus hanya satu prosesor yang
diizinkan untuk membaca dari lokasi memori manapun.
· Eksklusif
menulis (EW) - Dalam metode ini, setidaknya satu prosesor diperbolehkan untuk
menulis ke lokasi memori pada suatu waktu.
· Concurrent
read (CR) - Ini memungkinkan beberapa prosesor membaca informasi yang sama dari
lokasi memori yang sama dalam siklus yang sama.
· Concurrent
write (CW) - Ini memungkinkan operasi tulis simultan ke lokasi memori yang
sama. Untuk menghindari konflik tulis, beberapa kebijakan disiapkan.
Model
Kompleksitas VLSI
Komputer paralel menggunakan chip VLSI untuk membuat
array prosesor, array memori dan jaringan switching berskala besar.
Saat ini, teknologi VLSI 2 dimensi. Ukuran chip VLSI
sebanding dengan jumlah ruang penyimpanan (memori) yang tersedia di chip itu.
Kita dapat menghitung kompleksitas ruang dari sebuah
algoritma oleh area chip (A) dari implementasi chip VLSI dari algoritma
tersebut. Jika T adalah waktu (latency) yang dibutuhkan untuk mengeksekusi
algoritma, maka A.T memberikan batas atas pada jumlah bit yang diproses melalui
chip (atau I / O). Untuk komputasi tertentu, ada batas bawah, f (s), sehingga
A.T2> = O (f (s))
Dimana A = daerah chip dan T = waktu
Trek Pengembangan Arsitektu
Evolusi komputer paralel yang saya sebarkan di
sepanjang jalur berikut -
Beberapa
Prosesor Trek
Jalur
multiprosesor
Trek
multicomputer
Beberapa
jalur data
Jalur
vektor
Trek
SIMD
Beberapa
jalur benang
Jalur
multithreaded
Jalur
dataflow
Di beberapa jalur
prosesor, diasumsikan bahwa benang yang berbeda dijalankan bersamaan pada
prosesor yang berbeda dan berkomunikasi melalui memori bersama (multiprocessor
track) atau sistem passing message (multicomputer track).
Dalam beberapa jalur
data, diasumsikan bahwa kode yang sama dijalankan pada sejumlah besar data. Hal
ini dilakukan dengan menjalankan instruksi yang sama pada urutan elemen data
(vector track) atau melalui eksekusi urutan instruksi yang sama pada kumpulan
data yang serupa (track SIMD).
Di beberapa jalur
benang, diasumsikan bahwa eksekusi interleaved dari berbagai benang pada
prosesor yang sama untuk menyembunyikan penundaan sinkronisasi di antara benang
yang dijalankan pada prosesor yang berbeda. Thread interleaving bisa kasar
(multithreaded track) atau fine (jalur dataflow).
Nama : Dimas Ario
Npm : 53414090 / 4IA18
MATERI 4
Thread Programming
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.
Nama : Audya Elita Putri
Npm : 51414801
/ 4IA18
https://myoanita.wordpress.com/2016/05/02/pengantar-thread-programming/
http://djuneardy.blogspot.co.id/2015/05/konsep-arsitektur-paralel-pemrosesan.html
disi.unal.edu.co
MATERI 5
Pengantar Massage Passing, OpenMP
Pengantar
Massage Passing
Message
Passing merupakan sebuah bentuk dari komunikasi yang digunakan di komputasi
paralel, OOT (Object Oriented Programming) atau Pemrograman Berbasis Objek dan
komunikasi interproses. 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 .
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
OpenMP merupakan antarmuka pemrograman aplikasi(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.
Nama : Muhamad Fikri
Npm : 56414929
/ 4IA18
MATERI 6
Pengantar Pemrograman
CUDA GPU
Pengantar
Pemrograman CUDA GPU
Pada
awal perkembangan komputer, CPU masih memegang peranan penting dalam pemrosesan
komputasi umum maupun grafis. Namun setelah perkembangan grafis yang semakin
meluas, kinerja CPU menjadi menurun karena harus melakukan rendering grafis.
Pada awal 1980 dibuat hardware khusus
untuk mengolah grafis yang dinamakan Graphical
Processing Unit (GPU). Pada mulanya GPU hanya digunakan untuk rendering grafis 2D maupun 3D. Seiring
dengan perkembangan grafis yang makin meluas serta kebutuhan untuk rendering yang mendekati waktu proses realtime, kemampuan GPU pun turut
meningkat. Akselerasi peningkatan GPU tersebut bahkan lebih cepat daripada
peningkatan CPU itu sendiri sehingga pada akhirnya GPU sekarang tidak hanya
untuk melakukan rendering saja melainkan bisa untuk proses komputasi secara
umum. Berbeda dengan Central Processing
Unit (CPU) yang harus siap untuk menjalankan berbagai instruksi program,
GPU dirancang untuk melakukan banyak operasi secara paralel. Hal ini
dikarenakan GPU dirancang untuk menghitung dan menyajikan pixel-pixel gambar
yang akan ditampilkan, dimana tiap pixelnya tidak saling berhubungan. Dengan
kemampuan eksekusi paralel secara massif tersebut maka GPU dapat dimanfaatkan
dengan CUDA.
Compute Unified Device Architecture
atau biasa disebut dengan CUDA merupakan teknologi pemrosesan paralel yang
cepat, murah, dan efisien yang dikembangkan oleh produsen kartu grafis Nvidia
sejak tahun 2006. CUDA memiliki arsitektur berbasis General Purpose Graphics Processing Unit (GPGPU) yang mempermudah utilitasi
GPU untuk memproses aplikasi grafis maupun non-grafis. Arsitektur tersebut
memungkinkan programmer maupun pengembang perangkat lunak untuk membuat program
yang berjalan pada GPU sehingga kemampuan prosesing GPU dapat dimanfaatkan
untuk mengakselerasi komputasi program. Program-program tersebut akan dipecah
menjadi banyak eksekusi paralel sehingga prosesnya menjadi lebih cepat.
Beberapa program saintifik yang dapat dilakukan untuk memanfaatkan akselerasi
ini diantaranya adalah Computational
Fluid Dynamics (CFD), Molecular Dynamics, Seismic Simulation, Image Processing dan
Video Processing, serta Simulasi
Finansial dan Saham. Selain itu, saat ini juga sudah banyak software yang
mendukung akselerasi dengan CUDA seperti MATLAB, Blender, Anaconda, dll.
Bahasa
yang digunakan untuk pemrograman CUDA adalah bahasa C. Pada pemrograman C
biasa, sintaks akan diproses oleh kompiler C, sedangkan sintaks dengan keyword
CUDA akan diproses oleh kompiler CUDA (nvcc). Adapun keunggulan yang dimiliki
CUDA yaitu:
1. Antarmuka
CUDA application menggunakan standar
bahasa C sehingga mudah dipelajari.
2. Data
transfer antara CPU dan GPU sangat
cepat sehingga dapat mengurangi latency pengiriman
data dari CPU ke GPU ataupun sebaliknya.
3. Mempunyai
shared memory pada setiap multiprosesor
dengan kecepatan akses tinggi.
4. Hemat
biaya dan daya listrik.
Nama : Rachmadinna Poetri Priyandini
Npm : 58414682
/ 4IA18
No comments:
Post a Comment
Ada komentar? Silakan tulis dengan sopan ya.. Terimakasih ☺