我的C ++ mpi代码没有完成它的运行时间..它在第27次运行时遇到了什么?

时间:2013-12-21 16:12:16

标签: c++ parallel-processing mpi

我正在研究使用MPI优化Rastrigin功能的ABC算法。我的代码结构如下:

  1. 我定义了控制参数
  2. 我定义了我的变量和数组
  3. 我写了我的功能。
  4. 并在我的主要内部以for循环调用它们。
  5. 这是我认为我的问题所在的主要内容,我已经定义了总运行时间为30但是当我运行它时会遇到第27次运行。我在4个节点上运行它但它卡住了!有帮助吗?

    这是我的主要代码:

    int main (int argc, char* argv[])
    {
        int iter,run,j;
        double mean;
        mean=0;
        srand(time(NULL));
        MPI_Init (&argc, &argv); 
        MPI_Comm_rank (MPI_COMM_WORLD, &myRank); 
        MPI_Comm_size (MPI_COMM_WORLD, &numProc); 
        for(run=0;run<runtime;run++)
        {
            if(myRank==0){
                initial();
                MemorizeBestSource();
            }
    
            for (iter=0;iter<maxCycle;iter++)
            {
                SendEmployedBees();
                if(myRank==0){
                    CalculateProbabilities();
                    SendOnlookerBees();
                    MemorizeBestSource();
                    SendScoutBees();
                }
            }
            if(myRank==master){
                for(j=0;j<D;j++)
                    printf("GlobalParam[%d]: %f\n",j+1,GlobalParams[j]);
                printf("%d. run: %e \n",run+1,GlobalMin);
                GlobalMins[run]=GlobalMin;
                mean=mean+GlobalMin;
            }
        }
        if(myRank==master){
            mean=mean/runtime;
            printf("Means of %d runs: %e\n",runtime,mean);
    
            getch();
            MPI_Finalize ();
        }
    }
    

0 个答案:

没有答案