使用Boost为MPI设计共享内存

时间:2011-03-24 18:03:14

标签: c++ boost mpi shared-memory boost-mpi

我想问一下是否有人知道初学者的 boost :: mpi 文档? (我已经从互联网网站上阅读了Boost.MPI文档。)

关于我的系统,我有一个大约90节的风筝,每个结有两个CPU,两个内核(4个内核在一起)和4Gb内存。

我想为每个结定义共享内存,并存储向量std::vector<bool> occupation;。然后,每个流程都需要根据他的rank()数字来计算某些内容。

现在,所有多进程都需要等待所有内核完成计算,然后将向量std::vector<uint32_t> remove;发送到主进程(rank() == 0),这将更新向量{{1}然后向所有结发送新的occupation向量。

最好只使用occupation代替mpi.h

我想听听你的意见,因为我没有这方面的MPI经验。

2 个答案:

答案 0 :(得分:0)

如果您的编译器支持共享内存部分,请考虑使用OpenMP,然后为每个节点设置一个进程,执行四个进程,在当前设置中进行处理。 MPI并非真正为共享内存而设计。

答案 1 :(得分:0)

正如larsmans所提到的,你无法真正与MPI共享内存。但听起来你并不真的需要分布式共享内存;听起来所有的任务都需要在开始时获取occupation的副本,进行计算,以remove的形式将结果发送回主节点,然后主节点广播更新occupation的副本。 MPI可以做到这一点。

一种启动方式是让主进程使用broadcast进行数据的初始发送,让工作进程使用send将更新发送回主服务器,然后使用掌握recv来自每项任务的数据;完成后,循环重复。