From d21430a05d29bfa702c5666ba31447c915bb454d Mon Sep 17 00:00:00 2001
From: mivanrm <mivanrm12@gmail.com>
Date: Wed, 4 Mar 2020 20:39:02 +0700
Subject: [PATCH] finish openmp implementation

---
 src/dijkstra   | Bin 0 -> 18016 bytes
 src/dijkstra.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 138 insertions(+)
 create mode 100755 src/dijkstra
 create mode 100644 src/dijkstra.c

diff --git a/src/dijkstra b/src/dijkstra
new file mode 100755
index 0000000000000000000000000000000000000000..e1e00c6a7dc83818dba20b839be1513c761d1a50
GIT binary patch
literal 18016
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
Xl;s*+TDxY~f9fVf;^qv643zy30&Qt;

literal 0
HcmV?d00001

diff --git a/src/dijkstra.c b/src/dijkstra.c
new file mode 100644
index 0000000..49f505f
--- /dev/null
+++ b/src/dijkstra.c
@@ -0,0 +1,138 @@
+#include <omp.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <time.h>
+#include <assert.h>
+
+int minDistance(int dist[], int sptSet[], int V)
+{
+	// Initialize min value
+	int min = INT_MAX, min_index;
+	for (int v = 0; v < V; v++)
+		if (sptSet[v] == 0 && dist[v] <= min)
+			min = dist[v], min_index = v;
+
+	return min_index;
+}
+
+int *dijkstra(int **graph, int src, int V)
+{
+	int dist[V]; // The output array. dist[i] will hold the shortest
+	// distance from src to i
+
+	int sptSet[V]; // sptSet[i] will be true if vertex i is included in shortest
+	// path tree or shortest distance from src to i is finalized
+
+	// Initialize all distances as INFINITE and stpSet[] as false
+	for (int i = 0; i < V; i++)
+		dist[i] = INT_MAX, sptSet[i] = 0;
+
+	// Distance of source vertex from itself is always 0
+	dist[src] = 0;
+
+	// Find shortest path for all vertices
+	for (int count = 0; count < V - 1; count++)
+	{
+		// Pick the minimum distance vertex from the set of vertices not
+		// yet processed. u is always equal to src in the first iteration.
+
+		int u = minDistance(dist, sptSet, V);
+
+		// Mark the picked vertex as processed
+		sptSet[u] = 1;
+
+		// Update dist value of the adjacent vertices of the picked vertex.
+		for (int v = 0; v < V; v++)
+
+			// Update dist[v] only if is not in sptSet, there is an edge from
+			// u to v, and total weight of path from src to v through u is
+			// smaller than current value of dist[v]
+			if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX && dist[u] + graph[u][v] < dist[v])
+				dist[v] = dist[u] + graph[u][v];
+	}
+
+	int *ansArray;
+	ansArray = (int *)malloc(V * sizeof(int));
+	for (int i = 0; i < V; i++)
+	{
+		ansArray[i] = dist[i];
+	}
+	return ansArray;
+}
+
+int **initGraf(int n)
+{
+	srand(13517143);
+	int random, **graf;
+
+	graf = (int **)malloc(n * sizeof(int *));
+	for (int i = 0; i < n; ++i)
+		graf[i] = (int *)malloc(n * sizeof(int));
+	for (int i = 0; i < n; i++)
+	{
+		for (int j = i; j < n; j++)
+		{
+			random = rand() % 100;
+			if (i == j)
+			{
+				graf[i][i] = 0;
+			}
+			else
+			{
+				graf[i][j] = random;
+				graf[j][i] = random;
+			}
+		}
+	}
+	return graf;
+}
+void printGraf(int **graf, int n)
+{
+	for (int i = 0; i < n; i++)
+	{
+		for (int j = 0; j < n; j++)
+		{
+			printf("%d\t", graf[i][j]);
+		}
+		printf("\n");
+	}
+}
+void freeMatrix(int **matrix,int n){
+	for(int i=0;i<n;i++){
+		free(matrix[i]);
+	}
+	free(matrix);
+}
+
+int main(int argc, char *argv[])
+{
+	int thread_count = strtol(argv[1], NULL, 10);
+	int node_count = strtol(argv[2],NULL,10);
+	int **graf,**answerMatrix,*arrayTemp;
+	graf= initGraf(node_count);
+	double start; 
+	double end; 
+	start = omp_get_wtime(); 
+	
+	answerMatrix= (int **)malloc(node_count * sizeof(int *));
+	#pragma omp parallel num_threads(thread_count)
+	#pragma omp for
+	for(int i =0;i<node_count;i++){
+		arrayTemp=dijkstra(graf,i,node_count); 
+		answerMatrix[i]=arrayTemp;
+	}
+	for(int i=0;i<node_count;i++){
+		for(int j=0;j<node_count;j++){
+			printf("%d \t",answerMatrix[i][j]);
+		}
+		printf("\n");
+	}
+	end = omp_get_wtime(); 
+	printf("~Work took %f seconds\n~", (end - start)*1000000);
+	freeMatrix(answerMatrix,node_count);
+	freeMatrix(graf,node_count);
+
+
+	
+}
-- 
GitLab