这就是我们使用MPI_Init函数的方式
int main(int argc, char **argv)
{
MPI_Init(&argc, &argv);
…
}
为什么MPI_Init使用指向argc和argv的指针而不是argv的值?
发布于 2012-04-21 08:03:48
根据这里所述的答案:
Passing arguments via command line with MPI
大多数MPI实现将删除此函数中所有与mpirun相关的参数,以便在调用该函数后,可以像正常(非mpirun)命令执行一样处理命令行参数。
即在
mpirun -np 10 myapp myparam1 myparam2
argc = 7(?)由于mpirun参数(似乎还添加了一些)以及myparam1和myparam2的索引是未知的
但在那之后
MPI_Init(&argc, &argv)
argc =3,myparam1在argv1,myparam2在argv2
显然这超出了标准,但我已经在linux mpich上测试过了,看起来确实是这样。如果没有这种行为,这将是非常困难的(不可能?)以区分应用程序参数和运行参数。
发布于 2010-04-16 07:41:06
我猜测可能会允许从命令行中删除mpi参数。通过指针传递参数count允许从main点修改它的值。
发布于 2010-04-17 23:22:22
仅传递两个指针的开销较小。
https://stackoverflow.com/questions/2642996
复制相似问题