首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么MPI_Init接受指向argc和argv的指针?

为什么MPI_Init接受指向argc和argv的指针?
EN

Stack Overflow用户
提问于 2010-04-15 13:41:57
回答 3查看 20.6K关注 0票数 27

这就是我们使用MPI_Init函数的方式

代码语言:javascript
复制
int main(int argc, char **argv)
{
    MPI_Init(&argc, &argv);
…
}

为什么MPI_Init使用指向argc和argv的指针而不是argv的值?

EN

回答 3

Stack Overflow用户

发布于 2012-04-21 08:03:48

根据这里所述的答案:

Passing arguments via command line with MPI

大多数MPI实现将删除此函数中所有与mpirun相关的参数,以便在调用该函数后,可以像正常(非mpirun)命令执行一样处理命令行参数。

即在

代码语言:javascript
复制
mpirun -np 10 myapp myparam1 myparam2

argc = 7(?)由于mpirun参数(似乎还添加了一些)以及myparam1和myparam2的索引是未知的

但在那之后

代码语言:javascript
复制
MPI_Init(&argc, &argv)

argc =3,myparam1在argv1,myparam2在argv2

显然这超出了标准,但我已经在linux mpich上测试过了,看起来确实是这样。如果没有这种行为,这将是非常困难的(不可能?)以区分应用程序参数和运行参数。

票数 22
EN

Stack Overflow用户

发布于 2010-04-16 07:41:06

我猜测可能会允许从命令行中删除mpi参数。通过指针传递参数count允许从main点修改它的值。

票数 4
EN

Stack Overflow用户

发布于 2010-04-17 23:22:22

仅传递两个指针的开销较小。

票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2642996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档