From 51de949a796f932f59f14fbe7acd4bbe7d236729 Mon Sep 17 00:00:00 2001 From: bmusuko <bram.musuko@gmail.com> Date: Sun, 5 Apr 2020 19:14:03 +0700 Subject: [PATCH] change folder structure and add readme --- Makefile | 4 ++-- README.md | 27 +++++++++++----------- djikstra_cuda.cu => src/djikstra_cuda.cu | 0 djikstra_serial.c => src/djikstra_serial.c | 0 4 files changed, 16 insertions(+), 15 deletions(-) rename djikstra_cuda.cu => src/djikstra_cuda.cu (100%) rename djikstra_serial.c => src/djikstra_serial.c (100%) diff --git a/Makefile b/Makefile index 2206f23..e235af3 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ compile: - nvcc djikstra_cuda.cu -o djikstra_cuda + nvcc src/djikstra_cuda.cu -o src/djikstra_cuda run: - ./djikstra_cuda ${n} + ./src/djikstra_cuda ${n} diff --git a/README.md b/README.md index adb1a91..b10de17 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,32 @@ -# Petunjuk Penggunaan Program +# Tugas Besar IF3230-CUDA-2020 + +## Petunjuk Penggunaan Program 1. ```make compile``` untuk melakukan kompilasi 1. ```make run n={jumlah_node}``` untuk menjalankan program -# Pembagian Tugas +## Pembagian Tugas * 13517089 mengerjakan fungsi dijkstra CUDA, Laporan, Testing, Debugging * 13517032 mengerjakan fungsi dijkstra CUDA, Testing, Laporan, Debugging -# Analisis +## Analisis -## Deskripsi Solusi Paralel +### Deskripsi Solusi Paralel Solusi paralel yang kami gunakan adalah dengan membagi pengerjaan dijkstra dilakukan oleh beberapa thread, dengan setiap thread mengerjakan satu node. Dalam proses berjalannya program, setiap thread memiliki memori sendiri, dan tidak terhubung dengan thread lainnya. -## Analisis Solusi - - - -## Jumlah Thread +### Analisis Solusi +Solusi yang kami tawarkan dengan memaksimalkan jumlah total thread, sehingga setiap node dapat dikerjakan oleh satu thread sudah tergolong efektif, Dengan solusi ini kita dapat memaksimalkan kinerja GPU seefisien mungkin, dengan menghidupkan banyak thread secara bersamaan. Pengembangan yang mungkin dapat dilakukan untuk membuat solusi kami lebih baik adalah mengatur pembagian tugas setiap thread yang masih dilakukan didalam main program dapat dipindahkan ke dalam thread, sehingga thread dapat langsung dihidupkan tanpa harus menunggu main program memberi instruksi untuk mengerjakan node tertentu. +### Jumlah Thread +jumlah thread dalam satu blok yang digunakan adalah sebanyak 256. Jumlah blok yang digunakan, kita menggunakan rumus jumlah_blok = (n + jumlah_thread - 1) / jumlah_thread. Kelompok kami menggunakan jumlah blok yang dinamis, karena semakin banyak n dari sebuah graf, maka akan semakin banyak pula total thread yang digunakan untuk mencari jarak terpendek, sehingga setiap node dapat dikerjakan oleh thread masing - masing. Dengan adanya total thread yang dinamis, dapat dilihat bahwa hasil waktu paralel dari pencarian djikstra untuk setiap n relatif sama. -## Hasil Pengujian +### Hasil Pengujian -### Serial +#### Serial | **Jumlah Node** | **Percobaan 1 (μs)** | **Percobaan 2 (μs)** | **Percobaan 3 (μs)** | **Rata-Rata (μs)** | |:-------------:|:-----------:|:-------------:|:-------------:|:-------------:| @@ -35,7 +36,7 @@ Solusi paralel yang kami gunakan adalah dengan membagi pengerjaan dijkstra dilak | 3000 | 135.388.760 | 132.192.663 | 134.560.810 | 134.047.411‬ | -### Paralel +#### Paralel | **Jumlah Node** | **Percobaan 1 (μs)** | **Percobaan 2 (μs)** | **Percobaan 3 (μs)** | **Rata-Rata (μs)** | |:-------------:|:-----------:|:-------------:|:-------------:|:-------------:| @@ -44,6 +45,6 @@ Solusi paralel yang kami gunakan adalah dengan membagi pengerjaan dijkstra dilak | 1000 | 243 | 241 | 237 | 240,3 | | 3000 | 254 | 245 | 236 | 245| -## Analisis Perbandingan Kinerja Serial dan Paralel +### Analisis Perbandingan Kinerja Serial dan Paralel Dari hasil percobaan yang telah kami lakukan, dapat dilihat bahwa proses djikstra yang dilakukan secara paralel jauh lebih cepat dibandingkan proses djikstra yang dilakukan secara serial. Hal ini dikarenakan djikstra secara paralel berjalan pada GPU yang pengerjaannya dipecah per node. Selain itu, GPU yang digunakan memiliki spesifikasi yang gahar, sehingga performa yang dihasilkan sangat memuaskan. diff --git a/djikstra_cuda.cu b/src/djikstra_cuda.cu similarity index 100% rename from djikstra_cuda.cu rename to src/djikstra_cuda.cu diff --git a/djikstra_serial.c b/src/djikstra_serial.c similarity index 100% rename from djikstra_serial.c rename to src/djikstra_serial.c -- GitLab