Anda di halaman 1dari 9

1.

Parallel Computing = cara untuk mengurangi waktu dalam menyelesaikan masalah komputasi dengan
parallel computer

2. Parallel computer = sistem komputer yang mendukung parallel programming

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

5. Vektor komputer dibagi menjadi 2

5.1. Pipeline Vector Processor

=> menjalankan vector dari memori ke CPU dimana unit pipeline arithmeticnya di manipulasi

5.2. Processor array

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

6. Cache coherence problem

6.1 Processor synchronization

=> sinkronisasi dilakukan di prosesor untuk menjalankan komputasi

6.2 Barrier synchronization

=> sinkronisasi dilakukan di shared memory program

7. Multicomputer

Perbedaan Simetrik multiprocessing dan asimetric multiprocessing

=> Basic :

S -> Semua prosesor menjalankan OS


A -> Hanya master prosesor yang menjalankan OS

=> Proses :

S -> Proses memakai prosesor yang siap dari antrian

A -> Proses memakai prosesor yang di assign oleh master prosesor

=> Arsitektur :

S -> Prsesor memiliki arsitektur yang sama

A -> prosesor bisa sama bisa beda arsitekturnya

=> Komunikasi :

S -> Semua prosesor berkomunikasi dengan prosesor lain menggunakan shared memory

A -> Prosesor tidak berkomunikasi karena dikontrol master prosesor

=> Kegagalan :

S -> kalo satu prosesor gagal, kapasitas komputasi berkurang

A -> kalo master prosesor gagal, prosesor 'budak' jadi maser prosesor dan melanjukan eksekusi, kalo
budak gagal, proses dialihkan ke budak lainnya

8. Taksonomi Flynn

=> SISD ( Single instruction stream and single data stream )

---> Komputasi tunggal karena hanya menggunakan 1 prosesor

=> SIMD ( Single instruction stream and multiple data stream )

---> Menggunakan banyak prosesor yang menjalankan instruksi yang sama namun mengolah data yang
berbeda

=> MISD ( Multiple instruction stream and single data stream )

---> Mengolah data yang sama dengan algoritma yang berbeda untuk setiap prosesornya

=> MIMD ( Multiple instruction stream and multiple data stream)

---> Mengolah data yang berbeda dengan algoritma yang berbeda untuk setiap prosesornya
9. Shared Memory System

=> address space yang sama dipakai oleh banyak prosesor

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

---> Contoh : Symmetric Multiprocessing

10. Distributed memory system

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

11. Hybrid Systems

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

=> Resource utama komputasi -> Prosesor dan Memory

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

13. Single Program Multiple Data

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

if(my_id == 42) then do_something()

else do_something_else()

endif

14. Metodologi Foster

=> ada 4 Steps

a. Partitioning = Membagi komputasi dan data

---> Domain decomposition

a. Membagi data ke beberapa bagian

b. Menentukan cara menghubungkan komputasi dengan data

c. Fokus pada struktur data terbesar dan paling sering digunakan.

*Domain lebih ke membagi datanya*

---> Functional decomposition

a. Membagi komputasi ke beberapa bagian

b. Menenukan cara menghubungkan data dengan komputasi

c. Fokus pada tasks yang bisa di pipelined

*Functional lebih ke membagi tasknya*

b. Communication = menentukan value passed setiap task

---> Local Communication

a. Task memerlukan value dari sedikit task lain

b. Membuat illustrating data flow

---> Global Communication

a. Jumlah task yang banyak membuat data melakukan komputasi

b. Tidak membuat channel untuk mereka di deisgn awal


c. Agglomeration = Grouping task ke task yang lebih besar

---> Tujuan

a. Meningkatkan performance

b. Mempertahankan scalability program

c. Menyederhanakan program

---> Tujuan dalam MPI Programming

a. menyederhanakan komunikasi

b. membuat 1 task aglomerasi untuk setiap prosesor

---> Dengan membuat aglomerasi berdasarkan task primitf yang berkomunikasi satu dengan lainnya,
membuat komunikasi semakin sedikit karena data yang dibutuhkan ada di prosesor.

---> Kualitas Aglomerasi

a. Locallity dari algoritma paralel meningkat

b. Komputasi yang berulang memakan waktu lebih sedikit dari komunikasi yang berulang

c. Replikasi data tidak berpengaruh pada scalability

d. Agglomerated task memiliki biaya komputasi dan komunikasi yang sama

e. Jumlah task tergantung besarnya masalah

f. Jumlah task menyesuaikan sistem target

g. Biaya agglomerasi dan modifikasi code reasonable

d. Mapping = Assign proses ke prosesor

---> Centralized multiprosesor = mapping dilakukan oleh OS

---> Distributed Memory System = mapping dilakukan oleh user

---> Goals of Mapping

a. memaksimalkan kegunaan prosesor

b. Meminimalkan komunikasi antar prosesor

15. Message Passing

=> Karakteristik Proses


---> Angka di spesifikasi dari waktu startup

---> Tetap konstan selama eksekusi program

---> Semua eksekusi program yang sama

---> Semua punya ID number yang unik

---> Secara alternatif perform komputasi dan komunikasi

---> Menyampaikan pesan komunikasi dan sinkronisasi ke semuanya.

=> function

---> MPI_Comm_rank => menentukan rank dia dengan communicator

---> MPI_Comm_size => menentukan jumlah proses, disebut sebagai MPI Function

---> MPI_finalize => penutupan dan closing MPI

#Contoh Code

#include "stdafx.h"

#include <mpi.h>

int main(int argc, char* argv[]){

int id;

int p;

MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD, &id);

MPI_Comm_size(MPI_COMM_WORLD, &p);

printf("Rank = %d, Size = %d\r\n",id,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.

16. Sieve of Eratosthenes

=> teknik untuk menemukan bilangan prima hingga N bilangan yang efisien
=> Cara kerja

---> Inisialisasi array sejumlah N dengan values 0

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

---> lanjutkan sampai bilangannya habis.

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

=> INTINYA RUMUSNYA

A[i,j] = min(A[i,j],A[i,k]+A[k,j])

i = vertical

j = horizontal

K = iterasi ke berapa

DISELESAIKAN SAMPAI K = BANYAKNYA NODE

18. Performance Analysis


Jawaban :

Anda mungkin juga menyukai