From e28653d51d18c48808d182bfeff12089d2f04650 Mon Sep 17 00:00:00 2001 From: 13518104 Kevin Austin Stefano <13518104@std.stei.itb.ac.id> Date: Sat, 6 Mar 2021 22:35:32 +0700 Subject: [PATCH] openmpi done --- output_mp/test_5 | 4 ---- src/MST_OpenMPI | Bin 17760 -> 17800 bytes src/MST_OpenMPI.c | 19 ++++++++++++++----- 3 files changed, 14 insertions(+), 9 deletions(-) delete mode 100644 output_mp/test_5 diff --git a/output_mp/test_5 b/output_mp/test_5 deleted file mode 100644 index 2734eef..0000000 --- a/output_mp/test_5 +++ /dev/null @@ -1,4 +0,0 @@ -5 -0-1 -1-3 -2-4 diff --git a/src/MST_OpenMPI b/src/MST_OpenMPI index b8d21e740d2d76f6fb897fba1617500d62afcc5c..9b36ae4f53fc8cb0ec5d40c676a0c760c6c3a556 100755 GIT binary patch delta 2227 zcmZuy4N%i%7=Pc5EhcVkWAJATwm}%6@+H$jDe@O~{prjw!8BN=fahIyfZ~}Sop_$b zSTpcBJ@TT{>#{7mv}q!jF_O}#JF(1<^9!!)nuQ2x2$%Zr`G2fTd++xA-uL-_pXd3% z>u;isUfP^Wxt6pKHGxDTu0YGhuEaose0T_ZBsS@RWAu9y`(m_8n_Su3w|naF;RU7@ zF;S<T{#Hd$LF@fnRoQBNr-2a8r!5p=PL|I9b%a`B>4+qxLvR%Ayvy^P*A?^@gn7Q@ zd~-g9U$k3j9#rZ!(I4QNZZ2*1+alcxXfVXaGd#~<@1laoXM^6dKJU7-XnTS4oD6P; z!-j<>i``Dx4pbnXZq74W<T)2y1!iM1y#@Kk*{1!rN5lX-jB`zk9u@3`0b>eH1x?iK z^h?%9>`vXmytnn}n=yg$DlR8%N-9RJR|T)Zny93NctPxO4Rb!%Wlp@9ep2Yl0XP&j zllH=IQO<}~O^C}un&||sf*Ym;y5AoWU8;a|CSFq#CIrChKnYV3Q8K~vUe{&3Zx|e9 zo{3Jq$MYUnzqf2$sG;YaPze*n#Fo-|@Jeh>$@BMlzH>4rCI}Xeily%G60UL>^#j<K z$_Ev){zpOoph6_H$5t?ouu#t7BRqf7br=1UKb8R1nIOkJWAasHNdCz%)R|{zv<+im z-}Y75J*gIhjGY9JO5D}|aL)<ckzu%Gj;CrEH}BGR>Ctni;GVm42lm7z(FJfkZkl>J z4oxrthT@X6#o{!$8iWhRLW0Gn_<0oaEwTF27(4k2ee+!c3C@I-DEnXt-n2}kjo`N= z$Ndx?>Z)M;%@AgX4fSk)jfY9`>092tEtIRQ!F!|@9e914kz&;v=lisE|FJxA1Dk+W zl34IX(O2*-B;t&7UiT@SkoeGqR0@%N)fdXy3f9fO#4dB6h_n?D_62rvvFAKn#+J_a zO^LDT?WBzJrN<yHVm<eYJ!A9Je&x0ehI8Hbl))6xCG6ZnEy|~a50b&(!9kwaV>S9P zom|9z#D3)ej^Rr1y!$54*CLJ}HY1+I`X5BRir9x(gUuX9yopnwR}fNri|4Zt{ePl8 zVg`<MEn*vDGopQ*f0{pxn=Bm4vxrrQw-I+Ens5es5gmwCfAM@Nq652Dk63_}+KYG) zF^EVAth6R6#s{Ivnn7FPm^Fnq!+@2cJ7L0VqgF86Y;-B)A&rEkNY$_b>3Vnv>3KM2 zvnA$Y@`V_iusZ!4ibAbgnXj1qSU8DCRs~+F941ir3ozSlR0VnV$MH*Z<GvJLN4g5y zkZ#1i<%t6HvSW<r_n_6k-geQDx0g{KJ`Pvyahe9)c8v3UIMBpc{g@b#6rou=3R)p8 zu}~${BjB$~Tpt0c=^Q?ab?I}%XgwUtW@rP_Xr+M!U;s~z{)z0*DE$%+<YdwST+FGV z8Bpwa&QL2q!01U_GvI*3M*HDAN2X!1(0E)93CI!{aWK>khh{R_;b>qaI+BG?udu}O zAZFvmj3koO%YH>6lGV_nV(11~sAQ;5r0pU-B6>R`TItAQt)yQrn_WS^f#^wt><!-r zaSe*L_rWlWQ5i84JDj0WbULuJ7<}FLAuWMAq^rgKMuD1}<cyo-TZt_|Z@b_OO50Fs zP%uQFWtT$8^nhTy+%HSRACd-SpG3~DTDIzw`9mg&Q6uxO$oyop#ORax*Tp<XMXG`k zCqtv4+sT-1IKV=c-_uEoEwcVpK?m%)Y8Z1G&5LBM;TTCA>Q}j-rCBFSlVNFYO7T|t zv^Gl8-6RYmuD6kIAhE<g!!DkQT7vgweRs5U-X;P0NX+tc7|3PJ$7P+5h5rIv?Glhv zV8~<4r)BAF`Oe{Z7FMsH&09euDr;V?UB0GzSylB~|Gp=?lzw-9rIP*#-E5{NG(`0< z!8#40AqZgsu=6qv0lD-c?18PwZL~^3LYV9Cp2t&~1>HqXO>LeeJPXw2)D+E;PWNGJ GzU^-qIkEr% delta 2181 zcmZWr3rtg27(S<^D1(-kg15CmTZ92o9t|Mid|jk+S#atAryD2^G`RSjZ0f{;@))Id z;Ql?_bS^P&KH?_Wn4m+QO4P+{VTnVT8Zl~C5?}ZN=k)GB_g>g0C+Yv)^Zoz%U*`c0 zZramGo8zc$OZ@JDYCDle^_K4A_Wcp^<V9?kY0?gd>ABGI2Wb<c`JjqB86PkHrD0F@ zh!1Oj_ik1BRJ6dmQRDE}e`O#<@My<KFzJ}qdos{pW!V}`NE>tHJMy<E3T~&*J=M>3 zTJTKrz;$gEHAAUxJ>3sibyMg{uQj+><yYhEpipTrg&Rdt>^)AI+ZjH0VW<1O^XTBB z;5y@53oVA(p`6V|_%<{kt`mamezvR2R|a7r(SCQIiz57LNQPx00iips!>pR1F=R^U z%;Adda3v&`MuWyUG2uewuyq~%SVK*Rz8UivC=*irV&X7(g~oRYmK&oYOib-^-V;2| z%Yszot$@Mu+u?g-8a)lyjp>0ELu@w0gr1@$&>I>-cX~&J6{w(zn-N(3L=@f5%UEaz z{K>r<R`g61UCthN;Q;HPtBbWjfa#_J`aWzkrReIh-XlSn3R7%^NOMtOz29Ku51`Kc zdQkGvJfaV-n<pj)_hGW0x^ir?oa=m(jrihacIgl+Ft)T0W{eJ}mGI8!&$Ng280ZN8 zh|u2$L6#``6C_#2`Y*=~_BBC?B})6Lv}w+2mQEuyS*)s@2hd_M=}(Wckz?pvJkEq~ zH(W#=cNd;m#?rqaCOkUDi5Bvnvc>6l<%YZJ)}p<;j^!mab_Yg~&sFUmC=E}jdi3yr z`Z+`TiFeS2yRh1QXeD#usYHogY{>IyTf_bvOO1xZ;^>C_JiINhV`;^qsn3f-N<nZJ zpM@*oL3xcVlxNY!xA-Eyn4ixtC_c3~G1ywmdPSP~H~2ZZt_yr2Uy$dC8LzjILcx>3 zFrRll%XK}@i@zz<+!`sIc&7H{Kw`uvRkPk*QMzdLYFkX%ON3g~udr~V@Yium6#X!> z8<^8LM3&om<ey^#**M>aZ7W06+!MuG#7l^~5bq;)AlBe6-#}D9KtC!%Y7wIm&ppER zh|}>Pm#Ih&IfNgzNMsC%;vPf+59V3KN<<&x4~Qexg!n%d#W=(+L;*1sn_Pjo3$a}d z^^s93({0!nnMm89J2IBG0JU=TAegOIIvFxiu7i0flVBanm*Gp4U%+9M{m^Z-+UH`z zIT(-dI(@xrn$};Pr3xA`l7u5wgoRXr*=D7GKqks~m}eV98(;%|uZ6EsZib^aYt)X% zqBs|A|Mihi2YpOM-(CF>X&)U>f}izRZa(mKlb%;I6OxU~Hlv~qme{9h&f`~)x7EHT z5IXHsAud6{M{rfb6hB%3tqu<FbE_jvZ6N#M8qUhSPaFp*UY@-vN%+!rr>vlM$W5JT zn58_t=uH|ius798Z@|x~NrsPfGRG;pSzu4&98WR*5TYZ=_{g#$wFJ>2@xi1(@hB-# zEPyQ<jxL4SYK~S*@*7F+Vcuv5TubB3ow(LO^rS>ti|>Rqt};t=pAzu^yYx6V%0M*0 zkLS!*OkGbf$7Gwr%P<aBjpsDeP#XomQ6pWz=5!g8jt$7N8s1b&lePqxH7I-%{>5OU z8Y8pO3^bji+a(X*fg_#E^(vM<Z1-_2l7XC3`1_$Uu|nZH75<<}COQ@VvgGroBnOx@ z`{R+-6BE(DP)`W-VGa>+0%azXV9W3~>c~TO8F8e_Kwe|IfO7Q0DvX0w8L?(|4cKgr zQ8rqy)U^p(GdT0-igsa`tgTTzZDXFy-zwTxtxR_*+7>Wma*iKS%ewz!wkMTUo6NF# zKF--V>YbPQHuavJa8&JWm|UX9``61S1q>dV0<dSL8wQWTAm+i6tR%y*{|#U-vgMJo f<3Tied$UAJP0*X29xyjkR-S=)XF9dQLTBth%nG8D diff --git a/src/MST_OpenMPI.c b/src/MST_OpenMPI.c index 389281e..747b792 100644 --- a/src/MST_OpenMPI.c +++ b/src/MST_OpenMPI.c @@ -131,11 +131,12 @@ void QuickSort(Edge T[], int i, int j, int rank, int max_rank, int rank_index){ makeStruct(&mpi_edge_type); int distributed_process = rank + pow2(rank_index); - rank_index++; + // rank_index++; // If the rank of distributed process is higher than max rank if (distributed_process >= max_rank) { SequentialQuickSort(T, i, j); + // MPI_Send(&T, j - i+1, mpi_edge_type, distributed_process, 1, MPI_COMM_WORLD); } else { int pivot; @@ -252,7 +253,12 @@ int compare_src(const void *a, const void *b) Edge *b1 = (Edge *)b; return a1->src > b1->src; } - +int compare_dest(const void *a, const void *b) +{ + Edge *a1 = (Edge *)a; + Edge *b1 = (Edge *)b; + return a1->dest > b1->dest; +} // Minimum Spanning Tree using Kruskal's Algorithm void KruskalMST(Graph *graph, Edge result[], int *e, int size, int rank) @@ -283,6 +289,8 @@ void KruskalMST(Graph *graph, Edge result[], int *e, int size, int rank) // QuickSortSrc(graph->edge, 0, graph->E, size, rank); // QuickSortSrc(result, 1, (*e)); qsort(result, *e, sizeof(result[0]), compare_src); + qsort(result, *e, sizeof(result[0]), compare_dest); + qsort(result, *e, sizeof(result[0]), compare_src); return; } @@ -347,16 +355,17 @@ int main() // Declare the array buffer to receive data from the source process Edge* temp = (Edge *) malloc (sizeof(Edge) *arrLength); + source = MPI_Recv(temp, arrLength, mpi_edge_type, src, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); - printf("Process %d\n", rank); + // printf("Process %d\n", rank); // Sort the received buffer with QuickSort QuickSort(temp, 1, arrLength, rank, size, idxcnt); - printf("Process %d\n", rank); + // printf("Process %d\n", rank); // Send the sorted array back to the source process source = MPI_Send(temp, arrLength, mpi_edge_type, src, 1, MPI_COMM_WORLD); // source = MPI_Send(temp, arrLength, mpi_edge_type, src, 1, MPI_COMM_WORLD); - printf("Process %d\n", rank); + // printf("Process %d\n", rank); free(temp); } MPI_Finalize(); -- GitLab