PARALLEL COMPUTATION
TUGAS SOFTSKILL
4
“PARALLEL
COMPUTATION”
PENGANTAR
KOMPUTASI MODERN
Disusun oleh :
Afifah Kurniawati 50416277
Badra Danendra 51416289
Maulidya Sakinah 54416313
Noviyanti 55416512
Kelas : 4IA23
FAKULTAS
TEKNOLOGI INDUSTRI
JURUSAN
TEKNIK INFORMATIKA
UNIVERSITAS
GUNADARMA
2020
A.
Parallelism Concept
Komputasi paralel merupakan
salah satu teknik komputasi, dimana proses komputasinya dilakukan oleh beberapa
resources (komputer) yang independen, secara bersamaan. Komputasi paralel
biasanya diperlukan pada saat terjadinya pengolahan data dalam jumlah besar (di
industri keuangan, bio informatika, dll) atau dalam memenuhi proses komputasi
yang sangat banyak, diperlukan perangkat lunak pendukung yang biasa disebut
sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node
dalam satu mesin paralel.
Pemakai harus membuat
pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin
paralel semua program yang dijalankan di atasnya otomatis akan diolah secara
paralel. 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.
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 (distributed computing). Tujuan utama dari pemrograman paralel
adalah untuk meningkatkan performa komputasi semakin banyak hal yang bisa
dilakukan secara bersamaan.
Singkatnya untuk perbedaan antara komputasi tunggal
dengan komputasi paralel, bisa digambarkan pada gambar dibawah ini:
Komputasi
Tunggal
Komputasi
Paralel
Dari perbedaan kedua gambar diatas, dapat disimpulkan bahwa kinerja
komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data
yang banyak dari pada komputasi tunggal.
B.
Distributed Processing
Distributed Processing adalah
mengerjakan semua proses pengolahan data secara bersama antara komputer pusat
dengan beberapa komputer yang lebih kecil dan saling dihubungkan melalui jalur
komunikasi. Setiap komputer tersebut memiliki prosesor mandiri sehingga mampu
mengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi
digabungkan menjadi satu penyelesaian total.
Jika salah satu prosesor
mengalami kegagalan atau masalah yang lain akan mengambil alih tugasnya. 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. Beberapa contoh dari
Distributed Data Processing System adalah:
ATM, kompoter yang dirancang untuk tugas-tugas
melaksanakan proyek, analisis finansial, penjadwalan waktu dan akuntansi.
Pengolahan data pada server
yahoo yang tersebar hampir seluruh dunia secara distribusi, setiap wilayah
mempunyai server masing-masing. Seperti di Indonesia mempunyai server
tersendiri sehingga pengolahan data tidak di pusat melainkan di wilayah
masing-masing.
Pernyataan di atas adalah
jaringan saraf tiruan pendekatan yang menekankan sifat paralel pengolahan
saraf, dan sifat distribusikan representasi saraf. Ini memberikan kerangka
matematika umum bagi para peneliti untuk beroperasi dalam rangka melibatkan
delapan aspek utama:
·
Satu set unit
pengolahan, diwakili oleh set bilangan bulat.
·
Aktivasi untuk
setiap unik, diwakili oleh vektor waktu tergantung fungsi.
·
Fungsi output untuk
setiap unit, diwakili oleh vektor fungsi pada aktivasi.
· Pola konektivitas
antar unik, diwakili oleh matriks bilangan real yang menunjukkan kekuatan
koneksi.
·
Aturan propogasi
menyebarkan aktivasi melalui koneksi, diwakili oleh fungsi pada output dari
unit.
·
Aturan aktivasi
untuk menggabungkan input ke unit untuk menentukan aktivasi baru, diwakili oleh
fungsi pada aktivasi saat ini dan propogasi.
·
Sebuah aturan
belajar untuk memodifikasi koneksi berdasarkan pengalaman, diwakili oleh
perubahaan bobot berdasarkan pada sejumlah variabel.
·
Lingkungan yang
menyediakan sistem dengan pengalaman, diwakili oleh set vektor aktivasi untuk
beberapa bagian dari unit.
Paralel distributed computing dapat dibentuk dari:
1. Ada : digunakan konsep pertemuan yang menggabungkan fitur RPC dan monitor.
2. PVM (Paralel Virtual Machine) untuk mendukung workstation cluster.
3. MPI (Message Passing Interaface) programming GUI untuk paralel computers.
Paralel distributed computing dapat dibentuk dari:
1. Ada : digunakan konsep pertemuan yang menggabungkan fitur RPC dan monitor.
2. PVM (Paralel Virtual Machine) untuk mendukung workstation cluster.
3. MPI (Message Passing Interaface) programming GUI untuk paralel computers.
C.
Architectural Parallel Computer
Michael J.Flynn menciptakan satu diantara sistem klasifikasi untuk komputer
dan program paralel yang dikenal dengan sebutan Taksonomi Flynn. Flynn
mengelompokkan komputer dan program berdasarkan banyaknya set instruksi yang
dieksekusi dan banyaknya set data yang digunakan oleh instruksi tersebut. Arsitektur
paralel komputer menurut Klasifikasi Flynn’s:
·
SISD (Single Instruction Single Data)
Komputer ini memiliki hanya satu prosesor dan satu
instruksi yang dieksekusi secara serial. Komputer ini adalah tipe komputer
konvensional. Beberapa contoh komputer yang menggunakan model SISD adalah
UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
·
SIMD (Single Instruction Multiple Data)
Komputer ini memiliki lebih dari satu prosesor, tetapi
hanya mengeksekusi satu instruksi secara paralel pada data yang berbeda pada
level lock step. Komputer vektor adalah salah satu komputer paralel yang
menggunakan arsitektur ini. 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).
·
MISD (Multiple Instruction Single Data)
Komputer ini memiliki satu prosesor dan mengeksekusi
beberapa instruksi secara paralel tetapi praktiknya tidak ada komputer yang
dibangun dengan arsitektur ini karena sistemya tidak mudah dipahami. Sampai
saat ini belum ada komputer yang menggunakan model MISD.
·
MIMD (Multiple Instruction Multiple Data)
Komputer ini memiliki lebih dari satu prosesor dan
mengeksekusi lebih dari satu instruksi secara paralel. Tipe komputer ini yang
paling banyak digunakan untuk membangun komputer paralel. Beberapa kompiuter
yang menggunakan model MIMD adalah IBM POWERS, HP/Compaq AlphaServer, Intel IA32,
AMD Opteron, dan IBM BG/L.
D.
Konsep Dasar Thread Programming
Thread adalah urutan instruksi terprogram terkecil yang dapat dikelola
secara independen oleh scheduler yang biasanya merupakan bagian dari sistem
operasi. Thread hampir sama dengan proses, namun dalam kebanyakan kasus, sebuah
thread adalah komponen dari suatu proses. Threading dibagi menjadi 2, yaitu:
·
Static Threading
Static Threading merupakan teknik yang memungkinkan
thread berbagi memori di komputer shared memory dan mengeksekusi program secara
independen. Dalam sistem operasi, jika terdapat banyal thread yang akan
dijalankan, thread tersebut akan ditempatkan pada processor dan dijalankan
secara bergantian.
·
Dynamic Multithreading
Dynamic Multithreading merupakan pengembangan dari teknik
Static Threading yang bertujuan untuk mengoptimasi dan memberikan kemudahan
serta memperbaiki kekurangan dari teknik sebelumnya. Teknik ini menyediakan
scheduler yang bertugas melakukan load balancing secara otomatis.
Dari gambar diatas menunjukkan ilustrasi dari sebuah proses yang berjalan,
di dalamnya terdapat dua eksekusi thread yang berjalan pada satu processor.
Dalam thread programming, antarmuka standar untuk implementasi thread
adalah POSIX Threads (Pthreads) yang merupakan kumpulan panggilan library
C-Function. Dalam model pemrograman seperti CUDA yang dirancang untuk paralel
computation, sebuah array dari thread menjalankan kode yang sama secara paralel
hanya menggunakan ID-nya untuk menemukan datanya di memori. Intinya, aplikasi
harus dirancang agar setiap thread melakukan operasi yang sama pada segmen
memori yang berbeda sehingga bisa beroperasi secara paralel dan menggunakan
arsitektur GPU.
E.
Konsep Dasar Massage Passing, Open MP
Massage Passing
Massage passing adalah proses pengiriman data, dimana data dari suatu
memori disalin ke memori pada prosesor lain. Karena proses pengiriman datanya
antar memori lokal maka teknik message passing biasanya digunakan untuk model
komputasi paralel dengan memori terdistribusi. Dalam model ini, proses atau
objek dapat mengirim dan menerima pesan (sinyal, fungsi, struktur data
kompleks, atau paket data) ke proses atau objek lain.
Operasi dasar yang dibutuhkan untuk mendukung paradigma message passing
adalah send dan receive. Operasi pengirim membutuhkan proses pengiriman untuk
menspesifikasikan lokasi data, ukuran, tipe, dan tujuan. Operasi penerima harus
melakukan penyesuaian dengan operasi pengirim. Konsep message passing membuat
lebih mudah untuk membangun sistem yang memodelkan atau mensimulasikan masalah
dunia nyata.
Terdapat dua
metode dalam pengiriman pesan yaitu :
1.
Synchronous Message Passing
Sistem pengiriman pesan secara sinkron mengharuskan
pengirim dan penerima untuk menunggu satu sama lain saat mentransfer pesan.
Pengirim menunggu untuk mengirim pesan sampai penerima siap menerima pesan.
Oleh karena itu tidak ada buffering. Selain itu pengirim tidak bisa mengirim
pesan untuk dirinya sendiri.
2.
Ansynchronous Message Passing
Sedangkan dalam komunikasi asinkron pengirim dan penerima
tidak saling menunggu dan dapat melakukan perhitungan sendiri saat pengiriman
pesan sedang dilakukan. 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 berdasarkan metode pengiriman pesan diatas,
pengiriman pesan (message passing) dapat dibedakan berdasarkan jumlah penerima
pesan yaitu : Point to Point dan Broadcast. Perbedaan mendasar keduanya adalah
jumlah penerima yang menerima pesan. Pada Point to Point penerimanya tunggal
sedangkan pada broadcast jumlah penerimanya banyak.
OpenMP (Open Multiprocessing)
OpenMP merupakan standar yang digunakan untuk pemrograman paralel multithreading pada arsitektur shared memory. OpenMP adalah sebuah
antarmuka pemrograman aplikasi (API) untuk menulis aplikasi multithread, berupa satu set direktif compiler dan library untuk pemrograman aplikasi paralel yang menyederhanakan
penulisan program multithread pada C, C++, dan Fortran pada berbagai
arsitektur, termasuk Unix dan Microsoft Windows platform. 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 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, Intel, IBM, Cray, HP, Fujitsu, Nvidia, NEC, Microsoft, dan banyak lagi.
F.
Konsep Dasar 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.
Sumber:










Komentar
Posting Komentar