From b8ed09a4638eed376ddf8da15984d3bbee5baf1f Mon Sep 17 00:00:00 2001
From: Barbariansyah <bariansyahi@gmail.com>
Date: Fri, 27 Mar 2020 23:16:11 +0700
Subject: [PATCH] cuda malloc

---
 src/main.cu           | 8 ++++++--
 src/utils/dijkstra.cu | 3 ++-
 src/utils/matrix.cu   | 3 ++-
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/main.cu b/src/main.cu
index dfc5f9c..8cbb1c4 100644
--- a/src/main.cu
+++ b/src/main.cu
@@ -17,6 +17,7 @@ int main(int argc, char *argv[])
     }
 
     int node_count = atoi(argv[1]);
+    cudaDeviceSetLimit(cudaLimitMallocHeapSize, node_count * node_count * 2.5f * sizeof(long int));
     long int *adj_matrix = create_adj_matrix(node_count, node_count);
 
     long int *sub_dist = calculate_sub_matrix(adj_matrix, node_count);
@@ -31,13 +32,14 @@ int main(int argc, char *argv[])
         print_matrix(sub_dist, node_count, node_count);
     }
 
-    free(sub_dist);
-    free(adj_matrix);
+    cudaFree(sub_dist);
+    cudaFree(adj_matrix);
 }
 
 long int *calculate_sub_matrix(long int *matrix, int node_count)
 {
     long int *sub_dist = (long int *)malloc(node_count * node_count * sizeof(long int));
+    cudaMallocManaged(&sub_dist, node_count * node_count * sizeof(long int));
 
     for (int i = 0; i < node_count; i++)
     {
@@ -47,6 +49,8 @@ long int *calculate_sub_matrix(long int *matrix, int node_count)
         {
             set_el(sub_dist, node_count, j, i, temp_dist[j]);
         }
+
+        cudaFree(temp_dist);
     }
 
     return sub_dist;
diff --git a/src/utils/dijkstra.cu b/src/utils/dijkstra.cu
index 2949cdc..930dd5d 100644
--- a/src/utils/dijkstra.cu
+++ b/src/utils/dijkstra.cu
@@ -19,7 +19,8 @@ long int get_idx_min_dist(long int *dist, short *processed, int len)
 
 long int *dijkstra(long int *adj_matrix, int src, int size)
 {
-    long int *dist = (long int *)malloc(size * sizeof(long int));
+    long int *dist;
+    cudaMallocManaged(&dist, size * sizeof(long int));
     short processed[size];
 
     for (int i = 0; i < size; i++)
diff --git a/src/utils/matrix.cu b/src/utils/matrix.cu
index 3cb4c93..f7b9bb0 100644
--- a/src/utils/matrix.cu
+++ b/src/utils/matrix.cu
@@ -40,7 +40,8 @@ void print_matrix_to_file(long int *matrix, int width, int height, char *filenam
 
 long int *create_adj_matrix(int width, int height)
 {
-    long int *matrix = (long int *)malloc(width * height * sizeof(long int));
+    long int *matrix;
+    cudaMallocManaged(&matrix, width * height * sizeof(long int));
 
     for (int i = 0; i < height; i++)
     {
-- 
GitLab