2014-02-12 110 views
-1
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include "mpi.h" 
#define BUFFER_SIZE 65536 

int main (int argc, char **argv) { 
     int int_buff[BUFFER_SIZE]; 
     char char_buff[BUFFER_SIZE]; 
     int n, myid; 
     int buflen, ntimes; 
     double starttime, endtime; 

     MPI_Status status; 
     MPI_Init(&argc, &argv); 
     MPI_Comm_rank(MPI_COMM_WORLD, &myid); 
     buflen = 2; 

     if (myid == 0) { 
       int i; 
       for (i = 0 ; i++ ; i < 500 ) { 
       printf("Lala"); 
       } 
     } 
     MPI_Finalize(); 
     return EXIT_SUCCESS; 
} 

我正在使用mpiexec --hostfile hostfile -np 2 ping_pong。没有什么打印,但当我改变循环顶部for(;;)它的工作原理,为什么?MPI为什么这个简单的循环不起作用?

+2

如果你仍然不确定如何使用循环也许MPI可以等待。 – OlivierLi

回答

5

您的for循环中的表达式放置错误。的for loop语法是

for(INITIALIZATION; CONDITION; INCREMENT/DECREMENT) 
    Statement 

变化

for (i = 0 ; i++ ; i < 500 ) 

for (i = 0 ; i < 500; i++ ) 
+0

谢谢,这解决了它。 – user2966439

3

在你的代码有:

for (i = 0 ; i++ ; i < 500) 

你混了我++(做什么在每次迭代)和我< 500(迭代条件)。尝试:

for (i = 0 ; i < 500; i++) 
1

正如在其他答案中所述,您的for循环反转条件和增量部分。有趣的是,这仍然是一段有效的代码。

你的代码实际上做的是检查条件,第一次尝试进入循环,执行增量(副作用实际增加i,但返回预增值的值。与500相比,其结果会被忽略。

由于i从0开始,你的循环条件评估为假,并退出马上

相关问题