正在加载图片...
&&(contemp))t γ处理器0广播特定数据* void bcast( int *P) if( temp==N+)temp=D["myid+i] MPI Bcast(P, N, MPI INT,0 MPI COMM WORLD) *调整超顶点标识* 两者中取最小的数学函数 void CC to CO int min(int a, int b) for(i=0,<n;i++) C["n+i]=[*n+il ∮为各顶点找最小的邻接超顶点,对应算法步骤 (2.1) *产生新的超顶点,对应算法步骤(2.5) id d to CO void Cd to DO min(C[myidn+il, DICImyid"n+iD: if(A(LF=I &&(Do=Dn*myid+i 释放动态内存 &&(D]kC[n’myid+1D){ void freeallo CIn*myid+=DO if(C[*myid+i-N+D) CIn myid+iDn myid+i; free(C) 主函数 为各超顶点找最小邻接超顶点,对应算法步骤| void main(int arge, char *argv) (22)°/ void to cO int i,j k; 以下变量用来记录运行时间* for(F0;<N; j++) double starttime if(D[==n·myid+i) &&(C] +i MPI Init( &argc, &argv)} /*处理器 0 广播特定数据*/ void bcast(int *P) { MPI_Bcast(P,N,MPI_INT,0, MPI_COMM_WORLD); } /*两者中取最小的数学函数*/ int min(int a,int b) { return(a<b?a:b); } /*为各顶点找最小的邻接超顶点,对应算法步骤 (2.1)*/ void D_to_C() { int i,j; for(i=0;i<n;i++){ C[n*myid+i]=N+1; for(j=0;j<N;j++) if((A(i,j)==1) &&(D[j]!=D[n*myid+i]) &&(D[j]<C[n*myid+i])){ C[n*myid+i]=D[j]; } if(C[n*myid+i]==N+1) C[n*myid+i]=D[n*myid+i]; } } /*为各超顶点找最小邻接超顶点,对应算法步骤 (2.2)*/ void C_to_C() { int i,j; for(i=0;i<n;i++){ temp=N+1; for(j=0;j<N;j++) if((D[j]==n*myid+i) &&(C[j]!=n*myid+i) &&(C[j]<temp)){ temp=C[j]; } if(temp==N+1) temp=D[n*myid+i]; C[myid*n+i]=temp; } } /*调整超顶点标识*/ void CC_to_C() { int i; for(i=0;i<n;i++) C[myid*n+i]=C[C[myid*n+i]]; } /*产生新的超顶点,对应算法步骤(2.5)*/ void CD_to_D() { int i; for(i=0;i<n;i++) D[myid*n+i]= min(C[myid*n+i],D[C[myid*n+i]]); } /*释放动态内存*/ void freeall() { free(A); free(D); free(C); } /*主函数*/ void main(int argc,char *argv) { int i,j,k; double l; int group_size; /*以下变量用来记录运行时间*/ double starttime,endtime; MPI_Init(&argc,&argv);
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有