Skip to main content
Sign in
Snippets Groups Projects
Commit 3c3a5da5 authored by tancos02's avatar tancos02
Browse files

Adding readme, img, makefile, and exec

parent c2f2329e
No related branches found
No related tags found
No related merge requests found
Makefile 0 → 100644
all : mpi_dijkstra
mpi_dijkstra: src/mpi_dijkstra.o src/func.o
mpicc src/mpi_dijkstra.o src/func.o -o mpi_dijkstra
mpi_dijkstra.o: src/mpi_dijkstra.c
mpicc -c src/mpi_dijkstra.c -o src/mpi_dijkstra.o
func.o: src/func.c
mpicc -c src/func.c -o src/func.o
clean:
rm -f src/mpi_dijkstra.o src/func.o mpi_dijkstra core *~
\ No newline at end of file
# Announcement # OpenMPI
Beberapa file yang harus ada dalam repositori tersebut diantaranya: ## Nama - NIM :
* Direktori src yang berisi source code yang anda buat. - Paulus H.D. Siahaan - 13517111
* File output yang berisi hasil uji dijkstra algorithm pada data uji. - Harry Rahmadi Munly - 13517033
* Makefile. Buatlah sehingga kompilasi program dapat dilakukan hanya dengan pemanggilan command ’make’ saja.
* File README.md yang berisi: ## Petunjuk penggunaan program
* Petunjuk penggunaan program. 1. Install library openmpi pada komputer
* Pembagian tugas. Sampaikan dalam list pengerjaan untuk setiap mahasiswa. Sebagai contoh: XXXX mengerjakan fungsi YYYY, ZZZZ, dan YYZZ. 2. Ketik "make" tanpa tanda kutip pada direktori penyimpanan program untuk kompilasi program
* Laporan pengerjaan, dengan struktur laporan sesuai dengan deskripsi pada bagian sebelumnya. 3. Ketik "mpiexec -n <<jumlah node>> mpi_dijkstra" tanpa tanda kutip dan ubah <<jumlah node>> dengan jumlah node yang diinginkan.
4. Masukkan nilai n dengan syarat n>jumlah node dan n<=3000
5. Program akan mengeluarkan runtime dari setiap node dan hasil jarak terpendek ada pada out.txt
## Pembagian tugas
- Paulus : Membantu fungsi yang berhubungan dengan openmpi, Inisialisasi matriks, Percobaan pada server
- Harry : Membuat fungsi dijkstra, Membuat dijkstra serial
## Jawaban Pertanyaan
### Solusi paralel
Solusi paralel pada program ini adalah program ini membagikan data menjadi beberapa bagian lalu, pada setiap node dijalankan djikstra untuk data yang diterima. Setelah itu setiap solusi lokal dari simpul digabung untuk dicari solusi globalnya yang menjadi jalur terpendek.
### Analisis solusi
Solusi ini mungkin tidak terlalu baik dikarenakan memakan waktu juga pada saat mencari solusi global. Mungkin ada solusi yang lebih baik dimana proses mencari solusi globalnya bisa dipersingkat.
### Jumlah thread
Jumlah thread yang digunakan adalah 2. Karena dari hasil percobaan, semakin sedikit thread, maka semakin cepat waktu kinerjanya Dikarenakan jika menggunakan 1 thread menyebabkan segmentation fault pada kasus n = 3000, maka kami menggunakan 2 thread.
### Perbandingan dengan serial
Pada dijkstra serial, semuanya membutuhkan waktu yang lebih sedikit dibandingkan dijkstra paralel. Bisa dilihat dari folder img, foto trial_serial menunjukkan hasil percobaan data serial dan foto trial_100, trial_500, dll menunjukkan hasil foto paralel dengan np = 2.
### Analisis perbandingan
Kemungkinan dijkstra paralel lebih lambat dikarenakan dijkstra paralel membutuhkan waktu yang sedikit lama untuk saling mengirim data antar thread, tetapi memiliki keuntungan dimana dijkstra paralel dapat mengerjakan kasus dengan jumlah n yang besar tanpa masalah.
img/trial1.png

10.7 KiB

img/trial3.png

18.7 KiB

img/trial4.png

21.9 KiB

img/trial5.png

24.8 KiB

img/trial6.png

30.1 KiB

img/trial_1000.png

44 KiB

img/trial_100_1.png

14.7 KiB

img/trial_100_2.png

13.9 KiB

img/trial_100_3.png

14.5 KiB

img/trial_3000.png

43.7 KiB

img/trial_500.png

44.4 KiB

img/trial_serial.png

24.7 KiB

File added
out.txt 0 → 100644
v dist 0->v
---- ---------
1 23
2 20
3 20
4 44
5 5
6 18
7 27
8 18
9 4
10 51
11 23
12 34
13 55
14 23
15 19
16 15
17 21
18 28
19 16
20 10
21 13
22 23
23 33
24 32
25 31
26 10
27 31
28 21
29 45
30 45
31 48
32 28
33 25
34 20
35 39
36 13
37 24
38 11
39 46
40 37
41 22
42 14
43 29
44 40
45 29
46 30
47 28
48 20
49 65
50 12
51 16
52 57
53 87
54 18
55 51
56 40
57 21
58 2
59 22
60 21
61 69
62 23
63 23
64 7
65 47
66 54
67 29
68 42
69 19
70 33
71 39
72 41
73 26
74 68
75 8
76 35
77 25
78 3
79 28
80 29
81 45
82 16
83 20
84 36
85 45
86 12
87 24
88 73
89 23
90 29
91 39
92 21
93 8
94 44
95 61
96 55
97 20
98 52
99 41
File added
...@@ -98,7 +98,7 @@ int Find_jarak_min(int jarak_local[], int known_local[], int n_local) { ...@@ -98,7 +98,7 @@ int Find_jarak_min(int jarak_local[], int known_local[], int n_local) {
/* /*
Menuliskan setiap jarak dari titik 0 ke setiap simpul ke out.txt Menuliskan setiap jarak dari titik 0 ke setiap simpul ke out.txt
*/ */
void Print_jarak(int jarak_global[], int n) { void Print_jarak(int n, int jarak_global[]) {
int v; int v;
FILE *fptr; FILE *fptr;
fptr = fopen("out.txt","w"); fptr = fopen("out.txt","w");
... ...
......
File changed. Contains only whitespace changes. Show whitespace changes.
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment