From b2d3d9f332daf8cb0e068338d408da289b1234f8 Mon Sep 17 00:00:00 2001 From: EdwardAJ <13517115@std.stei.itb.ac.id> Date: Sun, 23 Feb 2020 09:59:12 +0700 Subject: [PATCH] Fix bug --- a | Bin 0 -> 8940 bytes a.out | Bin 0 -> 8632 bytes dijkstra.c | 152 -------------------------------------------- mpi.c | 48 ++++++++++---- output.txt | 10 +++ prog | Bin 9500 -> 13756 bytes reset.c | 96 ---------------------------- ser.c | 98 ---------------------------- sr.c | 64 ------------------- test/aingcupu/share | 10 +-- 10 files changed, 52 insertions(+), 426 deletions(-) create mode 100755 a create mode 100755 a.out delete mode 100644 dijkstra.c create mode 100644 output.txt delete mode 100644 reset.c delete mode 100644 ser.c delete mode 100644 sr.c diff --git a/a b/a new file mode 100755 index 0000000000000000000000000000000000000000..3240b4b80ce5cb727ef1cd6d34c9bdbbaa8c7f64 GIT binary patch literal 8940 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 RyfShNNS2OQG%M<seFKAoplJXA literal 0 HcmV?d00001 diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..aa967d0561cbd75ce32e612948d14b97910abb8e GIT binary patch literal 8632 zcmeHMU1%It6h3Rx8f)8Zv`EzyC&ks&pClCvRZLAv2DezXHYo&4xXos_-G$vvn4QH2 zEJT9hvJIq&pl^K@6n$*p0u`blDt+=nOCD4bS)mjkL>AZYyL%@)JBfmi!aZ>2obTRq z&%O7%GcYsf+dqH%>u!-)hseTRBGL_&9U||DLr)%rCZS558hy!q!#({PTiYep4!1?j z^F0EUns6s4+C%jCczc@|jJ0t&S{b2~pSkGMYf3cVxxLs7x^9_%;!fjh(<uvKs8q=> zr%Ibm(R{~12=nbX5djVcbeViRO+z!E%4YI&84qpIe3K^MQ4>#0-Zy2-`esVLmn&W{ z0nvQRCSR}VCk{(nZgePBF20#7rd6(Zepci5^Z3N%<C#;4qdA&A%`4CKs6N-R(TUMe z56+Lg1?L#GJXhRvS{bHPF|SJVh16_b&G{bi_W3q%6F3|n2>B16vr_r#f6Es)>vK#3 z;&48$FE~?%D3vO;?h@km^$nSP{U#qxcs-hnP+#l0I(g#Nm))@w!874Rcmt+fGYPn^ zaIS-RZig7)h;+ep!3Os#pg6$1*Ct^{V0o78zv_tG13TF#at`)h=qV^AW|Vwz4}AXq zNro_f*EXGa?8JfYh7OiX-e5kL8cfgU)4-I6p<KtW*FWpMb?3SFFW*<+d4Jyr?xSb} zl_GnP75YSg*#-f>3mmt`2|~hoxKH+RkDbr_gr&z?b7TJT`I4V03>+W8I&vulK^}v0 zz7L%ye}@dd3T(wPU>UFsSOzQumI2FvW#GRva3)##Ik{MiA6}`felF`jB7=6mfwSt? znXuyiv3RMzt9$7f0AfCcNiGfF(PmE-Z==bXGxbX6m1?<8ue$FFqTbdcf3Ldr#g$ma zt#4dwG#bgJ9cLN8_(go`M)xCQB4&Qa%(b3pRK>l$>ei4z7BAH>@zZ*$;ma`9axGbP zZzpG7sa5yAhk5v-UUAo}ZcWcq+xQ9@4zFMeXX-{H@in>|3GSwm_)cGM;wo}->A=S@ zqvMUlN3hFTHg5cav01*kZu~&+A$m9IJx=dSc;4AWddeAg5^22q_Rl#_!aL+VuQ7He z!FOKR@_m=zxzEB<Uo_u<^!X0I8}Gq!{Z<dq{`sIA!k4W1{_~7|%h-2~4aZvFGGH07 z3|Iy%1C{~HfMvikU>UFsSOzQumVy5V13d@hy7JgF!s47RhN~3n!zf<A?#Z%v@tzSi zhXS;Jo@hUiH(gBAci@)-&=26}3K?`XC8kg}>`;ZQ%3RFMl>H29;?qp~)P;<H8YyNA zGE|t(73B#3Uv$V?FE0no@U`9r{_c=*=w1{ygZe6CyJNaSsQ+j@pmFp62M6>S%=#cP zf2_dL)iQ`{7$1q?7b5t01f!^^>!GX-vlh#mD`X_v?w~@vb?>URccu3pP}?Nc(Agw% L%Xzd04|wu7ZK6g> literal 0 HcmV?d00001 diff --git a/dijkstra.c b/dijkstra.c deleted file mode 100644 index e5e12d4..0000000 --- a/dijkstra.c +++ /dev/null @@ -1,152 +0,0 @@ -#include "mpi.h" -#include <stdio.h> -#include <stdbool.h> -#include <stdlib.h> -#include <limits.h> - -int N = 10; - -long getVertexWithMinDistance(long dist[], bool pickedVertices[]) { - long minDistance = LONG_MAX; - int vertexWithMinDistance = -1; - - for (int vertex = 0; vertex < N; vertex++) { - if (!pickedVertices[vertex] && dist[vertex] <= minDistance) { - minDistance = dist[vertex]; - vertexWithMinDistance = vertex; - } - } - return vertexWithMinDistance; -} - -long* dijkstra(int graph[N][N], int sourceVertex) { - - // Distance from single source to all of the nodes - long *dist = (long*) malloc(sizeof(long) * N); - bool pickedVertices[N]; - - for (int vertex = 0; vertex < N; vertex++) { - if (vertex == sourceVertex) { - dist[vertex] = 0; - } else { - // Initialize all distance to be infinity. - dist[vertex] = LONG_MAX; - } - pickedVertices[vertex] = false; - } - - for (int iteration = 0; iteration < N - 1; iteration++) { - // Get minimum distance - int vertexWithMinDistance = getVertexWithMinDistance(dist, pickedVertices); - - // Mark the vertice as picked - pickedVertices[vertexWithMinDistance] = true; - - // Update distance value - for (int vertex = 0; vertex < N; vertex++) { - if ((!pickedVertices[vertex]) && - (graph[vertexWithMinDistance][vertex]) && - (dist[vertexWithMinDistance] != LONG_MAX) && - (dist[vertexWithMinDistance] + graph[vertexWithMinDistance][vertex] < dist[vertex])) { - // Change dist[] - dist[vertex] = dist[vertexWithMinDistance] + graph[vertexWithMinDistance][vertex]; - } - } - } - - return dist; - - // // Print solution - // for (int vertex = 0; vertex < N; vertex++) { - // // printf("%d to %ld\n", vertex, dist[vertex]); - // printf("%d to %d\n", vertex, graph[sourceVertex][vertex]); - // } -} - -int main(int argc, char *argv[]) { - - // Test function - - // for (int i = 0; i < N; i++) { - // for (int j = 0; j < N; j++) { - // scanf("%d", &graph[i][j]); - // } - // } - - // graph = { 0, 4, 0, 0, 0, 0, 0, 8, 0, - // 4, 0, 8, 0, 0, 0, 0, 11, 0, - // 0, 8, 0, 7, 0, 4, 0, 0, 2, - // 0, 0, 7, 0, 9, 14, 0, 0, 0, - // 0, 0, 0, 9, 0, 10, 0, 0, 0, - // 0, 0, 4, 14, 10, 0, 2, 0, 0, - // 0, 0, 0, 0, 0, 2, 0, 1, 6, - // 8, 11, 0, 0, 0, 0, 1, 0, 7, - // 0, 0, 2, 0, 0, 0, 6, 7, 0 }; - - // dijkstra(graph, 1); - - // // Print function - // printf("Matrix: \n"); - // for (int i = 0; i < N; i++) { - // for (int j = 0; j < N; j++) { - // printf("%d ", graph[i][j]); - // } - // printf("\n"); - // } - - // Get matrix size from argument vector in , convert to int - N = strtol(argv[1], NULL, 10); - - // Initialize matrix - int graph[N][N]; - - // Seed with NIM: Edward Alexander Jaya - srand(13517115); - // Fill the matrix with rand() function - for (int i = 0; i < N; i++) { - for (int j = 0; j < N; j++) { - // Mod by 100 so the result won't be too big. - graph[i][j] = rand() % 100; - } - } - - MPI_Status Stat; - MPI_Init(&argc, &argv); - // rank is the id of processes, numtasks is the number of processes - int rank, numtasks; - MPI_Comm_size(MPI_COMM_WORLD, &numtasks); - MPI_Comm_rank(MPI_COMM_WORLD, &rank); - - double start_time, end_time, total_time = 0.0; - - int numOfTaskPerProcess = N / (numtasks - 1); - int destinationRank = 0; - int tag = 1; - int vertex = 0; - - // for each thread, synchronize before start - MPI_Barrier(MPI_COMM_WORLD); - - // Do not count the initial synchronization time - start_time = MPI_Wtime(); - - if (rank == 0) { - long* dataRecv; - // Receive - MPI_Recv(&dataRecv, N, MPI_LONG, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &Stat); - printf("Received from process %d ", MPI_ANY_SOURCE); - // To do: store in the array - free(dataRecv); - } else { - for (int vertex = (rank - 1) * numOfTaskPerProcess; vertex < (rank - 1) * numOfTaskPerProcess + numOfTaskPerProcess; vertex++) { - long* dataSend = dijkstra(graph, vertex); - MPI_Send(dataSend, N, MPI_LONG, 0, tag, MPI_COMM_WORLD); - } - } - - // Synchronize again and count the time - MPI_Barrier(MPI_COMM_WORLD); - end_time = MPI_Wtime(); - total_time = end_time - start_time; - MPI_Finalize(); -} diff --git a/mpi.c b/mpi.c index 861df39..77d3ef7 100644 --- a/mpi.c +++ b/mpi.c @@ -4,10 +4,10 @@ #include <stdlib.h> #include <limits.h> -int N = 1000; +int N = 0; int getmin_index(long **graph, bool pickedVertices[N], int sourceVertex) { - int minDistance = CHAR_MAX; + int minDistance = INT_MAX; int min_index = -1; for (int j = 0; j < N; j++) { @@ -70,6 +70,7 @@ int main(int argc, char *argv[]) { { graph[i] = (long*) malloc(sizeof(long) * N); } + int numtasks, rank, dest, source, rc, count, tag=1; double start_time, end_time, total_time; @@ -77,10 +78,11 @@ int main(int argc, char *argv[]) { // Fill the matrix with rand() function for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { - // Mod by 100 so the result won't be too big. - graph[i][j] = rand() % 100; + graph[i][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])){ @@ -96,6 +98,8 @@ int main(int argc, char *argv[]) { } } + // print(graph); + MPI_Status Stat; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD, &numtasks); @@ -109,36 +113,58 @@ int main(int argc, char *argv[]) { count = 0; if (!rank){ dataRecv = (long*) malloc(sizeof(long) * N*jobs); - while(count<numtasks-1){ + 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 < N*jobs; ++i) - { - graph[Stat.MPI_SOURCE*jobs-jobs][i] = dataRecv[i]; + 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(graph[rank*jobs-jobs], N*jobs, MPI_LONG, destinationRank, tag, MPI_COMM_WORLD); + 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; - MPI_Finalize(); + if (rank == 0) { printf("%f\n", total_time); + // 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) { free(graph[i]); } free(graph); + + MPI_Finalize(); + + return 0; } \ No newline at end of file diff --git a/output.txt b/output.txt new file mode 100644 index 0000000..bfd51d0 --- /dev/null +++ b/output.txt @@ -0,0 +1,10 @@ +0 490424743 74565607 288096063 35073978 450365432 83869292 560553895 389130630 373297152 +204263410 0 278829017 416166025 148143896 531037102 288132702 576185956 593394040 453968822 +417319369 741907867 0 213530456 361199855 776491309 9303685 886679772 314565023 699423029 +757254738 1092124427 638775151 0 792328716 1207620170 591784729 1129171046 664781583 1130551890 +56119514 455350765 130685121 344215577 0 415291454 139988806 525479917 445250144 338223174 +127671809 443930510 202237416 415767872 87521598 0 211541101 549356759 516802439 425744772 +1403832888 1199569478 1478398495 1615735503 1347713374 1413543162 0 1642756475 772226634 1569358817 +819484865 1269497844 894050472 971260270 854558843 1004784094 533832147 0 1208615495 927715814 +631606254 427342844 706171861 843508869 575486740 958379946 715475546 870529841 0 881311666 +204740089 520998790 279305696 492836152 164589878 77068280 288609381 187256743 593870719 0 diff --git a/prog b/prog index bc7444f0404da1a31988e24d3001a7225c403486..1494f0a73d5c8f86f2e87a916f10a9177b1d4b6a 100755 GIT binary patch literal 13756 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 literal 9500 zcmeHNZ*Y`H8Q+6Tr9k?U3Y4m~p@0Uh5ScOq4NQ|ZZ(Wq5p%6f{^Kx7+<m7S}FLyL_ zWJ(EFv%XwSJAkyqI2o;-4&w}QMl>o^{!}hym>O!V`M`(ZAiZ-^#mYcXhWPvK`(AQ6 zP-b+-Pq)MF^JkxZ_SxszXY;aqzx~IDH$NtXXQB{0CkP>?p&lp^A}Pv&32{HFM76BC znlG6f&8MFtcYN`TCvQtp&j181YpuCq?RXJAo)hO6mxgTu=IF|9%Zdlv;>4U%sIPny z7K5(%T~0q~uPdv8SM1CuEvq%2*xWkGD%7|49!K9sS0YE}2267GxzoWu>a&`H;g(<w zLWTM+yZYX66_BRiN6Rht1zO{=P-KfMP^fRe;n?>Hx1V%=8K)Z^mX(M+8;Ueop-5v? z)8pgO?doI9Sx6V^aC)4UaqZA?t*u#Glh=dzjf-n8zIk!Qo*RvgWkteP>-Of&(XiDL zkHOB{>&vO(M&<Ziq5t!jZdqHRdE4X`ebX?W_RVq?kS^3$mQxOBSz-TwvaiC`*XE8P zov)Akc=|YffoOAcG?HT#uD8q8m%n%O<Dh+;8w@y>rz=;i`ifb*B9~+31#tk)@+l@2 z3hm0*^$^a1N_LbBfz%O`09ycarL7zo2DHr<ViQo>L>~@<CLEe0L?!yC0Ix&MFS$Ja zcs{cL--Pk_cS}K<h;r1as0$OVv4!E#=7kO0!wsNWK8ectU*7V)@02}Q`BGQ-)bLGj z)ttHD!IeUkPS*8vIhs6_3appow84aK;XKR%_G!OQSPpEtJ9jkT4=;?i#8HEhFEqD= zv^g*d=z>Qo7r?O4X2?7CE&<Hx@h-ZEkb1_}0KqleTjRmz1&`+q6Q98t+C2cjG7j@y zntm>pq6hw89;lb<PqJskDbGu_V_2%hWvR?e+Pp|^+8m@UwmDc;@)UNeky;H>+U8{$ z@C{z|PVyMZhaJu^Inws_$|^Hse0OFc7fS8=K~;Y-iymrhKkiZHV73d>$bfnAnNy9O z+Mf2II%$`z#@Qup0b5|xj>{@BBm*U9!BnT!Rdr3C7@P?HajDXoOE`KUH)t>ZG5cZv z2k07*?Z*xI>&sA&6HCb1(DQ+upO)%I+U%zd5bCkb{;HA$hB+%EX$~358SI9QSW~}D zdwVIK)k_-lmW|~G>iebgo`e1U()RV7_Ij|ge!a4Oy|T2~$Fa8AXP4fCY1*@%rM*V# zvoJ~8I|ikl=*eumIWnS7DBoGAIZMuI?_Hj>sVB9~-l~${<L{r58iXE5^m3xBUJpF~ zD{`DzU|juiX&gQyPh6NFJ-slzw|!ZMFm~^!P@&al<x=lCWA}580xlB@5IWn3z}C|U zDtlj^_#>2IdG$~@^=0aHR*fKIeCpBvemuP9ZiHU#uHI}JBIUCBG^;QB8+b;C!S)SE z1+z*YWvuPHvD#s|^c<qzZ6xn@tmu|%=$TWQvlHR0DUHU1wL<9q^uo|Ic)O>n=3R^| zy^aH#3Y2d+ZC=4hf!&2&pTWvdw@>=wd+PmP;?Idt$v7;^bU~jwsb<t+W_!k$(W*YF zE<nMcR43r2cVud6ieD$P{Q@*ylJnn{>WY1gqoqnVX>eo{b*+M~w0WMh+UEJHk{d9_ zNQFSA%>joyP*rkCbE`pT?!$mzGyr?`+I1O7oR{`7t<N}&47fC5rJbbS6&^$_F;JtX zciZNG_T51CC+Kk9d0w;5XFF(03d>C;GMPR2!zb;<f5Qym^+<JW1G|x0_7P$#xfX5a ztB%+iN9-uX<fs@im8_-M!;aVwA!e*U{*h5;cG;y5U?FyWPy3%eDp^h0UbSx-;H!3u z;M#R%9!#4DxbU>Omsy%NJ4wNcOh0IqTtel42TGOQ?K_SNBe{nXcFAM(4Z5*IW_(_o zhfSN>(NSxcybiL~_U)DJL(`->QVF42by})@6%<z|P1U>7PHDnUvKL7_H?tGd$o99V z$<%VL`YrIWyt!z*MdsV=wCg*h`h!ZAgO>?`lRXMsZ1ZS)#$y~d4=QuFjeowQNOR+` z@8Cq=L1z0a6iVzy@boU2`A^!s{CVxN(iQ@hY=cT^YhW+F2%cSkpw>3`!r`;nrPAmn zruI$O^vPN~<zT5vVAQI2uq0xcx3quuX^phjOD4|>*rs>F?(90S^yYvc|H_r&7!5!| zB?X0d0j0y={K%Nb=Ids+4r#_Y{c&!o8@BHX7I8?s<uNB8G1m>AWvOAbMv`BNc9OW0 znTtRhQ%2^!gfS!YI(7SsZW;TLdHZ#HK)0{y_MmRRuiGx&{y?{{>-G)ZzNuT<A;ikm z17$#J){M;a0CqN!nZ1N1HSx1Fd!ASYvG<7aqc7V_jO)rW;7xvFKPC1}Vuy&mK&*=x zBbnV#>=3a%#C}F>7qPdA(d|vYBNibxNUVX_Ux;l4_H-~13~dWGlsCqr&E+kzXdu|y zT0XC#9AA$3c1LB&hu98+|JQv4kaZtFm{EvhtK+-bgYQX>)@2mQG42R)d~wiZ7fyHK zr(Ia#!bL7z=E5gkSm(lxE^KgN#D#4x+~vYOF1({%MS-FRiXJF>py+|32Z|mjdZ6fm zq6dl|D0-mifuaYB9=M|i${woNg#T)bvT7@e$197KFO$}@(HI`rR>x*_=JkZ5c!=)2 zx7y+}w?DAe3N&rCwj}(q2C*}PdkbAWoz;Apa~{Gs<E<GF;rYGVrdS1L^wq7f9{0y$ zAxLzJSf$H)g7e4xk*#Dd$!E5Po(qy$?J}PXMf_oxCtco(NGML3I+w;>$~Mv)TzX9~ z(m;BXORtZInzhoVf^{|eLtzTGfZrGkYMD0R&HivW8eq>(56Bk0&c_=`c94YKT74&p z)*N*}Q}I|lN|h`g3%_Y7v6`E#U|TSdhzIeT0Y6<Ow*=$sf-(HeVSOmx<O@Y=L-2JZ z5ELsLLf_bmUjz8X>Sli^BG#=EU*o;cM1j}hiK4p<&CZ!5XM@w}>BHqJ`wd)wLqgx* z;Bs0R9uO$J&*8hV0i+vuN2KStH1Co~^8$?hd><uv0u_*`E_G=0X{&(d19yJ^w+iSN z3urngU;ecM`bQ4UW$E&Bw2&XA&lJ#o1vKx_^YwpNK;I~k$8*g%{gVr5UMAw-==}E= z(DXNdn}CNM{f>)J2tFO~=96#CrKrq5MuZoT(^2`f#FwP|P*JLRl~;y(FY5oIuUuHG z@I!`Mx12S)v8;c)`LOM=<;JC~CdQI=jMQnW$<YMWluk{J>7>+{PDhP7i8$_P(J45N l;~X|lKISs<wkOvZQy*HnG<EXRO-vk7IwNm6uHa~te*r8S3a|hG diff --git a/reset.c b/reset.c deleted file mode 100644 index 971b136..0000000 --- a/reset.c +++ /dev/null @@ -1,96 +0,0 @@ -#include "mpi.h" -#include <stdio.h> -#include <stdbool.h> -#include <stdlib.h> -#include <limits.h> - -int N = 10; - -int getVertexWithMinDistance(int dist[], bool pickedVertices[]) { - int minDistance = INT_MAX; - int vertexWithMinDistance = -1; - - for (int vertex = 0; vertex < N; vertex++) { - if (!pickedVertices[vertex] && dist[vertex] <= minDistance) { - minDistance = dist[vertex]; - vertexWithMinDistance = vertex; - } - } - return vertexWithMinDistance; -} - - -void dijkstra(int graph[N][N], int sourceVertex) { - - // Distance from single source to all of the nodes - bool pickedVertices[N]; - - for (int vertex = 0; vertex < N; vertex++) { - pickedVertices[vertex] = false; - } - - for (int i = 0; i < N - 1; i++) { - // Get minimum distance - int vertexWithMinDistance = getVertexWithMinDistance(graph[i], pickedVertices); - - // Mark the vertice as picked - pickedVertices[vertexWithMinDistance] = true; - - // Update distance value - for (int vertex = 0; vertex < N; vertex++) { - if ((!pickedVertices[vertex]) && - (graph[vertexWithMinDistance][vertex]) && - (graph[i][vertexWithMinDistance] + graph[vertexWithMinDistance][vertex] < graph[i][vertex])) { - - graph[i][vertex] = graph[i][vertexWithMinDistance] + graph[vertexWithMinDistance][vertex]; - } - } - } - return; -} - -int main(int argc, char *argv[]) { - int graph[N][N]; - int rank, numtasks; - double start_time, end_time, total_time; - MPI_Status Stat; - MPI_Init(&argc, &argv); - MPI_Comm_size(MPI_COMM_WORLD, &numtasks); - MPI_Comm_rank(MPI_COMM_WORLD, &rank); - start_time = MPI_Wtime(); - - srand(13517115); - // Fill the matrix with rand() function - for (int i = 0; i < N; i++) { - for (int j = 0; j < N; j++) { - // Mod by 100 so the result won't be too big. - graph[i][j] = rand() % 100; - } - } - - // Print function - printf("Matrix: \n"); - for (int i = 0; i < N; i++) { - for (int j = 0; j < N; j++) { - printf("%d ", graph[i][j]); - } - printf("\n"); - } - - MPI_Barrier(MPI_COMM_WORLD); - end_time = MPI_Wtime(); - total_time = end_time - start_time; - MPI_Finalize(); - - if (rank == 0) { - MPI_Recv(&dataRecv, N, MPI_INT, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &Stat); - printf("%f\n", total_time); - } - - // long *data = dijkstra(graph, 0); - // for (int i = 0; i < N; ++i) - // { - // printf("%ld\n", data[i]); - // } - // free(data); -} \ No newline at end of file diff --git a/ser.c b/ser.c deleted file mode 100644 index 028dd9c..0000000 --- a/ser.c +++ /dev/null @@ -1,98 +0,0 @@ -#include "mpi.h" -#include <stdio.h> -#include <stdbool.h> -#include <stdlib.h> -#include <limits.h> - -int N = 100; - -int getmin_index(short graph[N][N], bool pickedVertices[N], int sourceVertex) { - int minDistance = CHAR_MAX; - int min_index = -1; - - for (int j = 0; j < N; j++) { - if (!pickedVertices[j] && graph[sourceVertex][j] <= minDistance) { - minDistance = graph[sourceVertex][j]; - min_index = j; - } - } - return min_index; -} - -void print(short graph[N][N]){ - printf("Matrix: \n"); - for (int i = 0; i < N; i++) { - for (int j = 0; j < N; j++) { - printf("%d ", graph[i][j]); - } - printf("\n"); - } -} - -void dijkstra(short graph[N][N], int sourceVertex) { - - // Distance from single source to all of the nodes - bool pickedVertices[N]; - - for (int vertex = 0; vertex < N; vertex++) { - pickedVertices[vertex] = false; - } - - for (int i = 0; i < N - 1; i++) { - // Get minimum distance - int min_index = getmin_index(graph, pickedVertices, sourceVertex); - - // Mark the vertice as picked - pickedVertices[min_index] = true; - - // 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[sourceVertex][vertex] = graph[sourceVertex][min_index] + graph[min_index][vertex]; - } - } - } - return; -} - -int main(int argc, char *argv[]) { - - // Get matrix size from argument vector in , convert to int - N = strtol(argv[1], NULL, 10); - - short graph[N][N]; - - srand(13517115); - // Fill the matrix with rand() function - for (int i = 0; i < N; i++) { - for (int j = 0; j < N; j++) { - // Mod by 100 so the result won't be too big. - graph[i][j] = rand() % 100; - } - } - for (int i = 0; i < N; i++) { - for (int j = 0; j < N; j++) { - if (!(i == j || graph[i][j])){ - graph[i][j] = CHAR_MAX; - } - } - } - for (int i = 0; i < N; i++) { - for (int j = 0; j < N; j++) { - if (i == j){ - graph[i][j] = 0; - } - } - } - - for (int i = 0; i < N; ++i) - { - dijkstra(graph, i); - printf("%d\n", i); - } - print(graph); -} \ No newline at end of file diff --git a/sr.c b/sr.c deleted file mode 100644 index d66d98a..0000000 --- a/sr.c +++ /dev/null @@ -1,64 +0,0 @@ - -// Copyright www.computing.llnl.gov -#include "mpi.h" -#include <stdio.h> - - -void clean(int arr[10][10]){ - for (int i = 0; i < 10; ++i) - { - for (int j = 0; j < 10; ++j) - { - arr[i][j] = 99; - } - } -} -int main(int argc, char *argv[]) { -int numtasks, rank, dest, source, rc, count, tag=1; -int inmsg[10][10], outmsg[10][10]; - -for (int i = 0; i < 10; i++) -{ - for (int j = 0; j < 10; j++) - { - outmsg[i][j] = 10*i+j; - } -} - -MPI_Status Stat; -MPI_Init(&argc,&argv); -MPI_Comm_size(MPI_COMM_WORLD, &numtasks); -MPI_Comm_rank(MPI_COMM_WORLD, &rank); -if (rank == 0) { - dest = 1; - source = 1; - rc = MPI_Send(&outmsg[5], 50, MPI_INT, dest, tag, MPI_COMM_WORLD); - rc = MPI_Recv(&inmsg[5], 50, MPI_INT, source, tag, MPI_COMM_WORLD, &Stat); - for (int i = 5; i < 10; i++) - { - for (int j = 0; j < 10; j++) - { - printf("%d\n", inmsg[i][j]); - } - } -} -else if (rank == 1) { - dest = 0; - source = 0; - rc = MPI_Recv(&inmsg[5], 50, MPI_INT, source, tag, MPI_COMM_WORLD, &Stat); - printf("%s\n", "pass"); - for (int i = 5; i < 10; i++) - { - for (int j = 0; j < 10; j++) - { - printf("%d\n", inmsg[i][j]); - } - } - clean(inmsg); - rc = MPI_Send(&inmsg[5], 50, MPI_INT, dest, tag, MPI_COMM_WORLD); -} -rc = MPI_Get_count(&Stat, MPI_INT, &count); -printf("Task %d: Received %d char(s) from task %d with tag %d \n", -rank, count, Stat.MPI_SOURCE, Stat.MPI_TAG); -MPI_Finalize(); -} diff --git a/test/aingcupu/share b/test/aingcupu/share index 79186e8..b24918c 100644 --- a/test/aingcupu/share +++ b/test/aingcupu/share @@ -1,5 +1,5 @@ -scp asd 13517109@167.205.35.151:~ -scp asd 13517109@167.205.35.152:~ -scp asd 13517109@167.205.35.153:~ -scp asd 13517109@167.205.35.154:~ -scp asd 13517109@167.205.35.155:~ +scp asd 13517115@167.205.35.151:~ +scp asd 13517115@167.205.35.152:~ +scp asd 13517115@167.205.35.153:~ +scp asd 13517115@167.205.35.154:~ +scp asd 13517115@167.205.35.155:~ \ No newline at end of file -- GitLab