【发布时间】:2018-12-01 09:35:20
【问题描述】:
我正在编写代码,我需要初始化变量并顺序执行一系列任务,并且只执行一次。之后,我目前正在使用 pthreading 运行并行进程,然后返回到顺序代码对数据进行排序并执行二进制搜索。并行进程只是同时从多个(大约 35 个)套接字进行多次读取。我被要求使用 MPI 实现相同的设置,我目前的理解是,如果我使用 MPI,每个单独的进程都将执行整个程序,并且并行处理不限于放置 MPI_Init_thread 和 MPI_Finalize 的行。我的理解正确吗?或者有没有办法在使用 MPI 时在并行代码之前和之后执行顺序代码?
【问题讨论】:
-
你的理解是正确的。您可以添加几行代码并仅在等级 0 上执行某些工作(请记住,其他 MPI 任务仍然存在并且可能正在旋转)。另一种方法是启动 1 个 MPI 任务,然后在需要额外 MPI 任务以实现并行性时
MPI_Comm_spawn()。请记住MPI_Comm_spawn()语义不是很直观,如果您在资源管理器下运行,这可能效果不佳,因此从所有 MPI 任务开始是最简单的选择。
标签: sockets parallel-processing pthreads mpi