Parallel Computing = cara untuk mengurangi waktu dalam menyelesaikan masalah komputasi dengan
parallel computer
3. Parallel programming adalah program yang bisa menunjukkan pembagian porsi dari program yang
dijalankan secara bersamaan pada prosesor ang berbeda
4. Vektor komputer adalah komputer yang set instruksinya termasuk operasi vektor dan skalar
=> menjalankan vector dari memori ke CPU dimana unit pipeline arithmeticnya di manipulasi
=> komputer vektor yang diimplementasi sebagai komputer sekuensial yang terhubung ke processing
element yang identik dan sinkron dan dapat melakukan operasi yang sama dengan data berbeda secara
serentak.
7. Multicomputer
=> Basic :
=> Proses :
=> Arsitektur :
=> Komunikasi :
S -> Semua prosesor berkomunikasi dengan prosesor lain menggunakan shared memory
=> Kegagalan :
A -> kalo master prosesor gagal, prosesor 'budak' jadi maser prosesor dan melanjukan eksekusi, kalo
budak gagal, proses dialihkan ke budak lainnya
8. Taksonomi Flynn
---> Menggunakan banyak prosesor yang menjalankan instruksi yang sama namun mengolah data yang
berbeda
---> Mengolah data yang sama dengan algoritma yang berbeda untuk setiap prosesornya
---> Mengolah data yang berbeda dengan algoritma yang berbeda untuk setiap prosesornya
9. Shared Memory System
=> Menggunakan konsep uniform memory access, distributed shared memory, cache coherent NUMA.
=> Programming modelnya komunikasi secara implisit melalui shared data, sinkronisasinya eksplisit,
menggunakan Pthreads / OpenMP/ PGAS / MPI.
=> Setiap node memiliki local memorinya masing masing yang terhubung dengan jaringan komunikasi.
=> Menggunakan konsep Non-uniform memory access, Remote direct memory access, dan No Remote
memory access.
=> Programming modelnya distribusi data, komunikasi dan sinkronisasinya eksplisit, menggunakan MPI /
PGAS / PVM.
=> Kombinasi keduanya dimana karena banyak High Processing Computing maka sistem dicluster
berdasarkan SMPnya.
=> Menggunakan konsep NUMA, shared memory inside each node, distributed memory between nodes.
=> Programming modelnya message passing antara semua core dan node, multi threading di dalam
node, PGAS antara semua core.
12. Parallelization
=> Artinya -> Distribusi pekerjaan diantara prosesor serta Sinkronisasi kerjaan yang telah didistribusi.
=> Bila memori sudah didistribusi maka data sudah terdistribusi dan komunikasi antar data di lokal dan
remote prosesor.
=> Programmer writes one program which is executed on all processors (contrary e.g to a client-server
model)
=> Basic paradigm for implementation of parallel programs
=> MPMD (- Multiple Programs, Multiple Data) can be emulated with SPMD, e g.
else do_something_else()
endif
---> Tujuan
a. Meningkatkan performance
c. Menyederhanakan program
a. menyederhanakan komunikasi
---> Dengan membuat aglomerasi berdasarkan task primitf yang berkomunikasi satu dengan lainnya,
membuat komunikasi semakin sedikit karena data yang dibutuhkan ada di prosesor.
b. Komputasi yang berulang memakan waktu lebih sedikit dari komunikasi yang berulang
=> function
---> MPI_Comm_size => menentukan jumlah proses, disebut sebagai MPI Function
#Contoh Code
#include "stdafx.h"
#include <mpi.h>
int id;
int p;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD, &id);
MPI_Comm_size(MPI_COMM_WORLD, &p);
MPI_Finalize();
return 0;
}
=> Benchmarking => mengukur keuntungan dari eksekusi Paralel
=> Barrier => titik dimana tidak ada proses yang dapat lewat sampai semua proses mencapainya, untuk
mencegah race condition.
=> Message passing = tiap prosesor dalam suatu program message passing menjalankan sebuah
subprogram yang umumnya sama di tiap prosesor
=> MPI = spesifikasi API yang memungkinkan terjadinya komunikasi antar komputer pada network
dalam usaha untuk menyelesaikan suatu tugas.
=> Paradigma message = passing dengan implementasi MPI memberikan suatu pendekatan unik dalam
membangun suatu software dalam domain fungsi tertentu.
=> Solusi transfer MPI = Proses dapat dikelompokkan ke dalam grup. Tiap message dikirim dalam suatu
konteks dan diterima dengan konteks yang juga sama.
=> teknik untuk menemukan bilangan prima hingga N bilangan yang efisien
=> Cara kerja
---> Ambil bilangan prima awal, yaitu 2, dan ubah values dari semua bilangan kelipatan 2 menjadi 1,
sehingga nanti semua bilangan kelipatan 2 memiliki nilai prima 1 ( bukan bilangan prima )
---> Setiap elemen pembagi ( bilangan prima awal ) dan yang tidak berubah valuesnya / tetap 0 adalah
bilangan prima.
=> Blocking = prosedur disebut blocking bila mereturn indikasi bahwa user diperbolehkan menggunakan
ulang resource yang dikhususkan dalam call pada procedure.
=> NonBlocking = bila prosedur ga nonblock maka akan kembali secepatnya namun user tidak bisa
menggunakan ulang resouce yang terspesifikasi dalam call ke prosedur sebelum komunikasi diselesaikan
dengan prosedur sesuai
17. Allpairs shortest path ( FLOYD WARSHALL )
A[i,j] = min(A[i,j],A[i,k]+A[k,j])
i = vertical
j = horizontal
K = iterasi ke berapa