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
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