Oleh:
DAFTAR ISI.................................................................................................................................. 2
I. PENDAHULUAN ................................................................................................................ 5
V. KESIMPULAN .................................................................................................................. 21
Dalam matematika, matriks adalah sekumpulan bilangan, simbol atau ekspresi yang disusun
dalam bentuk persegi panjang menurut baris dan kolom. Bilangan, simbol atau ekspresi yang
terdapat di dalam suatu matriks disebut elemen matriks. Salah satu operasi yang dapat dilakukan
dengan menggunakan matriks adalah perkalian. Perkalian matriks adalah salah satu operasi yang
sangat diperlukan dalam berbagai masalah komputasi namun terkadang membutuhkan waktu yang
lama untuk dapat melakukan perkalian matriks terlebih dengan cara manual. Untuk mempercepat
perkalian matriks dapat menggunakan pemrograman paralel.
Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi
perintah/operasi secara bersamaan baik dalam komputer yang memiliki satu processor maupun
komputer yang memiliki lebih dari satu processor. Semakin banyak hal yang bisa dilakukan secara
bersamaan (dalam waktu yang sama) maka semakin banyak pekerjaan yang bisa diselesaikan.
Pemrograman paralel dapat diterapkan pada MPI (Message Passing Interface) sehingga perkalian
matriks dapat dilakukan dengan hasil yang akurat dan dalam waktu yang singkat.
1.2 Tujuan
Matriks dalam matematika merupakan kumpulan bilangan, simbol atau ekspresi berbentuk
persegi panjang yang disusun menurut baris dan kolom. Bilangan-bilangan yang terdapat pada
suatu matriks disebut dengan elemen atau disebut juga anggota dari suatu matriks. Matriks banyak
dimanfaatkan untuk menyelesaikan berbagai permasalahan matematika misalnya dalam
menemukan solusi masalah persamaan linear, transformasi linear yakni bentuk umum dari fungsi
linear contohnya rotasi dalam 3 dimensi. Matriks juga seperti variabel biasa, sehingga matrikspun
dapat dimanipulasi misalnya dikalikan, dijumlah, dikurangkan, serta didekomposisikan.
Menggunakan representasi matriks, perhitungan dapat dilakukan dengan lebih terstruktur.
Perkalian matriks dilakukan dengan cara tiap baris dikalikan dengan tiap kolom, selanjutnya
dijumlahkan pada kolom yang sama.
Contoh perhitungan:
MPI adalah sebuah spesifikasi library untuk message passing, sedang OpenMP adalah
sebuah API (Application Program Interface) yang digunakan secara eksplisit sehingga
menjadikannya multi-thread, shared-memory parallelism. OpenMP sendiri sebenarnya adalah API
yang digunakan untuk FORTRAN, C, dan C++ programming.
MPI OpenMP
Distributed memory model Shared memory model
On Distributed network On Multicore processor
Message based Directive based
Flexible and expressive Easier to program and debug
MPI (Message Passing Interface) merupakan sebuah pustaka yang saat ini banyak
digunakan untuk melakukan paralelisasi pada permasalahanpermasalahan sains yang
membutuhkan kekuatan komputasi yang besar yang diselesaikan pada komputer klaster. Seiring
dengan kemajuan zaman sistem High-Performance Computer pada setiap node-nya saat ini
memiliki banyak core yang tidak hanya 1 atau 2 core di dalamnya bahkan hingga puluhan core
yang siap digunakan untuk melakukan komputasi yang besar dengan waktu komunikasi antar core
yang singkat sehingga mempersingkat waktu komputasi pada permasalahan yang besar secara
1. Processor Core i5
2. Memory 4 GB
3. Harddisk 500 GB
Spesifikasi software untuk kebutuhan implementasi dapat dilihat pada Tabel 3 berikut ini.
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
if (SIZE%P!=0) {
if (myrank==0) printf("Matrix size not divisible by number of processors\n");
MPI_Finalize();
exit(0);
}
if (myrank==0) {
fill_matrix(A);
fill_matrix(B);
}
start_time = MPI_Wtime();
MPI_Bcast (B, SIZE*SIZE, MPI_INT, 0, MPI_COMM_WORLD);
MPI_Scatter (A, SIZE*SIZE/P, MPI_INT, A[from], SIZE*SIZE/P, MPI_INT, 0,
MPI_COMM_WORLD);
end_time = MPI_Wtime();
MPI_Gather (C[from], SIZE*SIZE/P, MPI_INT, C, SIZE*SIZE/P, MPI_INT, 0,
MPI_COMM_WORLD);
MPI_Finalize();
return 0;
}
Berdasarkan scriptcode program perkalian matriks diatas, terdapat tiga fungsi selama proses
pembuatan sampai dengan penghitungan running time pengeksekusian program. Berikut
merupakan penjelasan tiga fungsi tersebut beserta syntax-syntax open MPI yang digunakan.
Dalam fungsi main ini penghitungan running time untuk perkalian matriks menggunakan fungsi
MPI_Wtime();, hasil running time nya merupakan hasil pengurangan jumlah running time pada
saat eksekusi berakhir dengan running time pada saat penciptaan proses dimulai yaitu 0 sec.
Jumlah
No. Screenshot
n
1 1
2 2
4 4
5 5
7 7
8 8
10 10
11 15
13 30
14 40
16 100
Berdasarkan hasil eksekusi dari program perkalian matriks dengan ordo 1600 x 1600 yang
menggunakan nilai proses yang berbeda yaitu mulai dari n=1 hingga n=100 menghasilkan waktu
eksekusi yang berbeda-beda. Perbedaan waktu eksekusi tersebut ditunjukkan dalam tabel dan
grafik dibawah ini:
100
80
60
40
20
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Berdasarkan hasil analisa yang telah dilakukan, dapat disimpulkan bahwa proses eksekusi
menggunakan multiproses tidak selalu lebih cepat daripada proses eksekusi menggunakan single
proses. Hal tersebut disebabkan oleh waktu eksekusi dihitung mulai dari penciptaan proses. Pada
saat penciptaan proses, ada kalanya waktu yang diperlukan lebih banyak daripada melakukan
operasi perkalian matriks sehingga menyebabkan waktu eksekusi lebih lama. Akan tetapi, jika
waktu eksekusi dihitung setelah penciptaan proses maka waktu eksekusi dengan menggunakan
multiproses akan selalu lebih cepat.