From 4363943c046262f1e5f00f955c2ab71cc3779002 Mon Sep 17 00:00:00 2001
From: Ft-N <ftnfata@gmail.com>
Date: Thu, 27 Feb 2020 10:41:08 +0700
Subject: [PATCH] (almost) done

---
 src/mp.c                                      | 123 +++++-------------
 src/omp_hello                                 | Bin 9240 -> 0 bytes
 src/omp_hello.c                               |  21 ---
 src/omp_hello.dSYM/Contents/Info.plist        |  20 ---
 .../Contents/Resources/DWARF/omp_hello        | Bin 9902 -> 0 bytes
 5 files changed, 33 insertions(+), 131 deletions(-)
 delete mode 100755 src/omp_hello
 delete mode 100644 src/omp_hello.c
 delete mode 100644 src/omp_hello.dSYM/Contents/Info.plist
 delete mode 100644 src/omp_hello.dSYM/Contents/Resources/DWARF/omp_hello

diff --git a/src/mp.c b/src/mp.c
index 8a642f2..0623060 100644
--- a/src/mp.c
+++ b/src/mp.c
@@ -1,4 +1,3 @@
-#include "mpi.h"
 #include <stdio.h>
 #include <stdbool.h>
 #include <stdlib.h>
@@ -9,30 +8,30 @@
 
 int N = 0;
 
-int getmin_index(long **graph, bool pickedVertices[N], int sourceVertex) {
+int getmin_index(long *graph, bool pickedVertices[N], int sourceVertex) {
     int minDistance = INT_MAX;
     int min_index = -1;
 
     for (int j = 0; j < N; j++) {
-        if (!pickedVertices[j] && graph[sourceVertex][j] <= minDistance) {
-            minDistance = graph[sourceVertex][j];
+        if (!pickedVertices[j] && graph[sourceVertex*N+j] <= minDistance) {
+            minDistance = graph[sourceVertex*N+j];
             min_index = j;
         }
     }
     return min_index;
 }
 
-void print(long **graph){
+void print(long *graph){
     printf("Matrix: \n");
     for (int i = 0; i < N; i++) {
         for (int j = 0; j < N; j++) {
-            printf("%ld ", graph[i][j]);
+            printf("%ld ", graph[i*N+j]);
         }
         printf("\n");
     }
 }
 
-void dijkstra(long** graph, int sourceVertex) {
+void dijkstra(long* graph, int sourceVertex) {
 
     // Distance from single source to all of the nodes
     bool pickedVertices[N];
@@ -51,43 +50,40 @@ void dijkstra(long** graph, int sourceVertex) {
         // Update distance value
         for (int vertex = 0; vertex < N; vertex++) {
             if ((!pickedVertices[vertex]) && 
-                (graph[min_index][vertex]) && 
-                (graph[sourceVertex][min_index] != INT_MAX) &&
-                (graph[sourceVertex][min_index] + graph[min_index][vertex] < graph[sourceVertex][vertex])) {
+                (graph[min_index*N+vertex]) && 
+                (graph[sourceVertex*N+min_index] != INT_MAX) &&
+                (graph[sourceVertex*N+min_index] + graph[min_index*N+vertex] < graph[sourceVertex*N+vertex])) {
                 
-                graph[sourceVertex][vertex] = graph[sourceVertex][min_index] + graph[min_index][vertex];
+                graph[sourceVertex*N+vertex] = graph[sourceVertex*N+min_index] + graph[min_index*N+vertex];
             }
         }
     }
     return;
 }
 
+
 int main(int argc, char *argv[]) {
-	
+    
     // Get matrix size from argument vector in , convert to int
     int thread_count = strtol(argv[1], NULL, 10);
-    N = strtol(argv[2], NULL, 10)
+    N = strtol(argv[2], NULL, 10);
 
-    long** graph;
-    graph = (long**) malloc(sizeof(long*) * N);
-    for (int i = 0; i < N; ++i)
-    {
-        graph[i] = (long*) malloc(sizeof(long) * N);
-    }
+    long* graph;
+    graph = (long*) malloc(sizeof(long) * N*N);
 
     srand(13517115);
-	// Fill the matrix with rand() function
+    // Fill the matrix with rand() function
     for (int i = 0; i < N; i++) {
         for (int j = 0; j < N; j++) {
-            graph[i][j] = rand();
+            graph[i*N+j] = rand();
         }
     }
 
     // Assign with infinity
     for (int i = 0; i < N; i++) {
         for (int j = 0; j < N; j++) {
-            if (!(i == j || graph[i][j])){
-                graph[i][j] = INT_MAX;
+            if (!(i == j || graph[i*N+j])){
+                graph[i*N+j] = INT_MAX;
             }
         }
     }
@@ -95,80 +91,27 @@ int main(int argc, char *argv[]) {
     for (int i = 0; i < N; i++) {
         for (int j = 0; j < N; j++) {
             if (i == j){
-                graph[i][j] = 0;
+                graph[i*N+j] = 0;
             }
         }
     }
 
-    // Calculate start time
-    clock_t tStart = clock();
-
-    #pragma omp parallel num_threads (thread_count) {
-        
-    }
+    printf("start\n");
 
-    int numtasks, rank, dest, source, rc, count, tag=1;
-    double start_time, end_time, total_time;
-
-
-    int jobs = N/(numtasks-1);
-    long* dataRecv;
-    int destinationRank = 0;
-    count = 0;
-    if (!rank){
-        dataRecv = (long*) malloc(sizeof(long) * N*jobs);
-        while ( count < numtasks-1 ){
-            MPI_Recv(dataRecv, N*jobs, MPI_LONG, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &Stat);
-            printf("Received from process %d ", Stat.MPI_SOURCE);
-            for (int i = 0; i < jobs; ++i) {
-                for (int j = 0; j < N; ++j) {
-                    graph[Stat.MPI_SOURCE * jobs - jobs + i][j] = dataRecv[i * N + j];
-                }
-            }
-            count++;
-        }
-        free(dataRecv);
-    }
-    else{
-        long *dataSend = (long*) malloc(sizeof(long*) * N * jobs);
-        int count = 0;
-        for (int i = rank*jobs-jobs; i < rank*jobs; ++i)
-        {   
-            dijkstra(graph, i);
-            for (int j = 0; j < N; j++) {
-                dataSend[count * N + j] = graph[i][j];
-            }
-            count++;
-            // printf("Print job %d from rank %d\n", i, rank);
-        }
-        MPI_Send(dataSend, N*jobs, MPI_LONG, destinationRank, tag, MPI_COMM_WORLD);
-        free(dataSend);
-    }
-    
-    MPI_Barrier(MPI_COMM_WORLD);
-    end_time = MPI_Wtime();
-    total_time = end_time - start_time;
-    
-    if (rank == 0) {
-        printf("%f µs\n", total_time*100000);
-        // Write to file
-        FILE *f = fopen("output.txt", "w");
-        for (int i = 0; i < N; i++) {
-            for (int j = 0; j < N; j++) {
-                fprintf(f, "%ld ", graph[i][j]);
-            }
-            fprintf(f, "\n");
-        }
-        fclose(f);
-    }
-
-    for (int i = 0; i < N; ++i)
+    // Calculate start time
+    double start = omp_get_wtime();
+    int idx;
+    #pragma omp parallel for num_threads (thread_count)
+    for (idx = 0; idx < N; ++idx)
     {
-        free(graph[i]);
+        dijkstra(graph, idx);
     }
-    free(graph);
 
-    MPI_Finalize();
+    double end = omp_get_wtime();
+    double total = end - start;
+    printf("%f µs\n", total*100000);
+    printf("end\n");
+    free(graph);
 
     return 0;
-}
\ No newline at end of file
+}
diff --git a/src/omp_hello b/src/omp_hello
deleted file mode 100755
index 760831ee5f7157e95db478d660fb7269cf89ce15..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9240
zcmeHNTWnNC7@ln_RBX$Fh(#eeL2Bxyd)jg<511{ou+<7k3lbE@vuDqCSI%BI=d`pY
zBq+hSDUE#~#21Z;J{n`94_*>NBvE-VUg85W#t?&Mn;_4PA=K}mGt-_uv_5Nc{`8;u
zzxgjS^Uq9kI@9m}{_D<i#$t_(ooQf<tpfMm!`L~dL1JtjI1T3fK>yy<(bU2H)LKum
zdblW}IM-mv`EcsUaJ`A}kJq;`i7_^Y;Rq%R&OK|~Bgv<5yp}dh2C5IFo^TyCu`@x;
zx$BK)-1(+(ypLtPP0~VP<<KnSEt3s?Jf64gishg!9PeitZ&2D3ro7M7UE?!d&nc8f
zq(L~Iw$h)kCiR4aR2Lfx&aFJpIY!a)t-|q=GTvnwgfRBTl0@rT19QH+f4DzjhV`pk
zSGB%@b)~p!e4LkT?oJdlWt&$#XUTXf4DFBLxG4W>4QLdc+s41ei^HGB*G<MC!ohg7
z@0x|iFBZ<h;K06TQ@aP$9@awh1SV>4@@tAC^58?Z5$8<wsrm7nQMXGSRT}U(>bFt%
zp{D$h{u=PZs4pYH5d^#s@&ParompZU{~9p$xfHz#|L~C@TWZt5Ent1rb#%Ls(X$hF
z7MO_org2>8-Foe<r=Mb<v>M4@-u>u3Iu}SCW34L$KdvyffjTi?@(Z6s>W6->kdEf)
zmkqM-vT4|Qx#H;~rYS~3^$wCo%Ed~eCxMX_GUP>Z`oJnqQ|}FAKDICi*bPm%o>ffj
zTJZAyk^w(|m6V_8pE9t}uW52O(D9@2rFs9L`Rn+Y#I#NkMHz@P5M?0BK$L+f15pP4
zFBv$LuKtledsC~PzL~C$UQbV^uBXplZcb0KFYs~4F3~*F)o*GSQCCy9(^ETtgH(GB
z#boOC=criqE8l8rXA-Ek55;F-cJ+!39<S{Igm;a;+N!D9$wRYnu6~VZ7tkWCYxrtp
z(+fW7>gn0qmveJ-SFg-<9L3k~T*phIJTA(YMVS$07Ukg7hAve7LvtM)P*3L(jm`WC
z|NH|a{YnyjgwOm$(laD|OVSaNE|El^y)&PZROn%8%eKo}&M6l)FYj1JR_n-W<s8Zt
z;(HsmEcWU_78{Sp;w{UYr_t#aw5<n!cn3j1$H<7N2};%$f1{y^KG$29HBqN<LP<n^
z!{8sKA7Mdv`RQn`_dAc4@1)=TzSkoC(U<;$pE6VR4X9~^w`4sl>jwFEVT-KS%3AqF
zb(Dc915pN|3`7}-G7x1T%0QHXC<9Rjq6|bCh%)fs&A_US@xwH_)k%8n6OZ9MQz&Ke
zc>TP?rkN98mE?Q(KX-sv49Bo-%cjP5G~ywSk60crjTX6oE#i_&3#j~NvLH?8>Ljn=
zDcj2t>LxVm37<a5c;)uW6kJk_<ITU37xUa2x6Dz`!kfB5!|E&=g%W#GT*|N>dOK`n
z=hvf{q5GEe>yL>mlh+}uw@ZrndkEhG&Nar^`{xcHCq3PHBv7dTA9w=trT`{Ay>+U4
z9K!oh1Tpy+<b6pGWb#)SqVQMuIfThSh{^vQ>E8#L{1t{M{MEe<Ve${+EHz3>Lv8~r
zf6CKJU^Sk51r{&2V(uHHUd{gzV3^~_r`{0W8^SO8n7R>UqJ;B2E`;#O5MBdJmvd{u
z4}#ml>%b3zLCK}`8sq*>;EQY(F1AW&`!2e1=NkiCR&7>)o2m_Z*D=u#xt8PVR`!(P
zWDVOIH|X@dVoVtNZp%I4l`Hzd@UE_bl4m(3!|v)gy~0?*D_E{RWECwuO*?#>KCowV
z@8<5Vp#ot%eOsksMRy%jXLQc+?<96PVKRNpaP(Z+MhC9GeVgu8PMyqdIk98w$aa%g
vGF!6~`R?swC9@keQqqTY-86gM{_z)%Cdy1^L#B&TlMvI+l@i^)GJyX9gp=wE

diff --git a/src/omp_hello.c b/src/omp_hello.c
deleted file mode 100644
index c2f9454..0000000
--- a/src/omp_hello.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <omp.h>
-
-void Hello(void); /* Thread function */
-
-int main(int argc, char *argv[]) {
-   int thread_count = strtol(argv[1], NULL, 10);
-   printf("hi1\n");
-   #pragma omp parallel num_threads(thread_count)
-   Hello();
-
-   return 0;
-}
-
-void Hello(void) {
-   int my_rank = omp_get_thread_num();
-   int thread_count = omp_get_num_threads();
-
-   printf("Hello from thread %d of %d\n", my_rank, thread_count);
-}
\ No newline at end of file
diff --git a/src/omp_hello.dSYM/Contents/Info.plist b/src/omp_hello.dSYM/Contents/Info.plist
deleted file mode 100644
index ae70f05..0000000
--- a/src/omp_hello.dSYM/Contents/Info.plist
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-	<dict>
-		<key>CFBundleDevelopmentRegion</key>
-		<string>English</string>
-		<key>CFBundleIdentifier</key>
-		<string>com.apple.xcode.dsym.omp_hello</string>
-		<key>CFBundleInfoDictionaryVersion</key>
-		<string>6.0</string>
-		<key>CFBundlePackageType</key>
-		<string>dSYM</string>
-		<key>CFBundleSignature</key>
-		<string>????</string>
-		<key>CFBundleShortVersionString</key>
-		<string>1.0</string>
-		<key>CFBundleVersion</key>
-		<string>1</string>
-	</dict>
-</plist>
diff --git a/src/omp_hello.dSYM/Contents/Resources/DWARF/omp_hello b/src/omp_hello.dSYM/Contents/Resources/DWARF/omp_hello
deleted file mode 100644
index 2610f74a9ebd17b990b29944e12ff394c91893a1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9902
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

-- 
GitLab