我想在一个函数中使用多进程,我该如何做到这一点。如你所知,MPI_Init需要两个参数:“int argc,char ** argv”。这是否意味着我必须在函数定义中添加这两个参数?如何初始化函数中的MPI?
我的要求是我想在功能上并行一步而不是主程序中的一步。
例如,
func(mat &A, vec &x) {
some computation on A;
auto B = sub_mat(A, 0, 10);
B*x; // I want to parallelize this computation
}
main(){
mat A;
vec x;
func(A, x);
}
我只是想在B * X使用MPI,但我不知道如何初始化MPI?顺便说一句,如果我可以初始化MPI int func,那么A在每个进程中都存在吗?
帮我&谢谢!
你似乎对MPI是什么有一个基本的误解。 MPI提供跨行列的通信和同步机制(即至少在所有有趣的实现中,rank *是一个进程......)。特别是,整个可执行文件需要在每个等级中重复 - “main”和“func”。您尝试的并行性可能更好地通过线程实现,可能使用OpenMP。 – 2012-07-29 20:03:49