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