Skip to content
Snippets Groups Projects
Commit 3ecdcd3b authored by M Algah Fattah Illahi's avatar M Algah Fattah Illahi
Browse files

update readme

parent b7eacd50
Branches
No related merge requests found
...@@ -15,4 +15,7 @@ hello_omp: ./src/hello_openmp.c ...@@ -15,4 +15,7 @@ hello_omp: ./src/hello_openmp.c
parallel_omp: ./src/paralel_openmp.c parallel_omp: ./src/paralel_openmp.c
gcc -g -Wall -fopenmp -o ./bin/parallel_omp ./src/paralel_openmp.c ./src/util.c ./src/dijkstra.c gcc -g -Wall -fopenmp -o ./bin/parallel_omp ./src/paralel_openmp.c ./src/util.c ./src/dijkstra.c
./bin/parallel_omp $(nt) $(nv) ./bin/parallel_omp $(nt) $(nv)
\ No newline at end of file
parcud: ./src/paralel.cu
nvcc
\ No newline at end of file
# Announcement <!-- # Announcement
Beberapa file yang harus ada dalam repositori tersebut diantaranya: Beberapa file yang harus ada dalam repositori tersebut diantaranya:
* Direktori src yang berisi source code yang anda buat. * Direktori src yang berisi source code yang anda buat.
...@@ -7,4 +7,63 @@ Beberapa file yang harus ada dalam repositori tersebut diantaranya: ...@@ -7,4 +7,63 @@ Beberapa file yang harus ada dalam repositori tersebut diantaranya:
* File README.md yang berisi: * File README.md yang berisi:
* Petunjuk penggunaan program. * Petunjuk penggunaan program.
* Pembagian tugas. Sampaikan dalam list pengerjaan untuk setiap mahasiswa. Sebagai contoh: XXXX mengerjakan fungsi YYYY, ZZZZ, dan YYZZ. * Pembagian tugas. Sampaikan dalam list pengerjaan untuk setiap mahasiswa. Sebagai contoh: XXXX mengerjakan fungsi YYYY, ZZZZ, dan YYZZ.
* Laporan pengerjaan, dengan struktur laporan sesuai dengan deskripsi pada bagian sebelumnya. * Laporan pengerjaan, dengan struktur laporan sesuai dengan deskripsi pada bagian sebelumnya. -->
# Tugas IF3230 Dijkstra CUDA
## Petunjuk Penggunaan Program
Dalam direktori root lakukan kompilasi program dengan makefile:
* Untuk melakukan kompilasi dijkstra versi serial:
`make serial`
`bin/serial [number of vertices]`
* Untuk melakukan kompilasi dijkstra versi paralel (CUDA):
`make paralel_cuda nt=[jumlah thread] nv=[jumlah nodes]`
## Pembagian Tugas
* 13517035 - Hilmi Naufal Yafie : Paralel Dijkstra CUDA, Laporan, Eksplorasi
* 13517122 - M. ALgah Fattah I. : Paralel Dijksta CUDA, Laporan, Eksplorasi
## Laporan Pengerjaan
### Deskripsi Solusi Paralel
Solusi paralel yang kami buat adalah paralelisasi dalam menjalankan algoritma dijkstra secara keseluruhan. Sebagaimana yang diketahui, algoritma dijkstra dapat mencari jarak terdekat dari suatu node ke semua node lain. Oleh karena pada persoalan yang diberikan kita diminta untuk mencari jarak dari semua node ke semua node lain, paralelisasi yang kami lakukan adalah setiap thread menjalankan dijkstra dari titik asal (source) yang berbeda-beda, lalu kemudian menuliskan hasil jarak antara titik-titik lain dengan source tersebut pada baris yang bersangkutan di matriks yang merepresentasikan hasil akhir.
Misalkan ada 3 anak proses dan ada 3 node pada graf yang di-proses, maka diparalelisasi sehingga thread pertama memproses node A, thread kedua memproses node B, dan thread ketiga memproses node C. Misalkan pula sebuah matriks akhir `result` yang menyimpan matriks akhir, maka thread pertama akan menuliskan ke baris pertama `result` yang merepresentasikan jarak dari node A ke node-node lain, dst.
### Analisis Solusi
Dalam konteks memparalelisasi algoritma dijkstra, menurut kami jika beban komputasi didistribusi kepada thread-thread yang dikerjakan oleh core pada gpu, maka waktu untuk melakukan perhitungan jarak secara total akan menjadi lebih singkat
### Hasil Uji
Berikut Merupakan hasil uji yang kami lakukan untuk node 100, 500, 1000, dan 3000 baik untuk Serial Dijkstra dan Paralel Dijkstra (dalam microseconds):
* **Serial Dijkstra**
| N | Percobaan 1 | Percobaan 2 | Percobaan 3 | Rata-rata |
| ------------- |:-------------:| -----:| ------------- |:-------------:|
| 100 | 11.085 | 11.06 | 11.177 | 11.1073333333 |
| 500 | 1209.287 | 1195.14 | 1189.376 | 1197.93433333 |
| 1000 | 9638.09 | 9648.635 | 9691.299 | 9659.34133333 |
| 3000 | 289041.44 | 290054.272 | 289371.232 | 289488.981333 |
* **Paralel Dijkstra OpenMP**
| N | Percobaan 1 | Percobaan 2 | Percobaan 3 | Rata-rata |
| ------------- |:-------------:| -----:| ------------- |:-------------:|
| 100 | 0.279115 | 0.28755525 | 0.296497 | 0.28772241666 |
| 500 | 141.22473825 | 160.160105 | 155.14105175 | 152.175298333 |
| 1000 | 2646.930331 | 2650.61712975 | 2651.74764425 | 2649.765035 |
| 3000 | 232189.652940250002 | 238495.246832749981 | 241372.985165749997 | 237352.628313 |
**Thread yang digunakan untuk Paralel Dijkstra OpenMP = 4**
### Analisis Uji
Dari seluruh percobaan yang dilakukan, didapatkan bahwa program paralel selalu lebih cepat daripada program serial.
Hal ini tentu karena paralelisasi lebih mengutilisasi resource yang ada dengan thread yang lebih dari 1 menjadikan proses lebih cepat.
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment