0

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

关于我的系统,我有一个大约 90 节的 claster,每个节有两个 CPU,两个内核(共 4 个内核)和 4Gb 内存。

我想为每个结定义共享内存并在那里存储一个向量std::vector<bool> occupation;。然后每个进程需要根据他的rank()数字计算一些东西。

现在,所有的多进程需要等到所有的核都完成计算,然后发送一个向量 ,std::vector<uint32_t> remove;到主进程(rank() == 0),主进程将更新向量occupation,然后将新occupation向量发送给所有节点。

可能最好简单地使用mpi.h而不是boost::mpi.

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

4

2 回答 2

0

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

一种开始的方法是让主进程用于broadcast执行数据的初始发送,让工作进程用于send将更新发送回主进程,并让主进程recv从每个任务中获取数据;完成后,循环会重复。

于 2011-03-24T19:37:24.810 回答
0

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

于 2011-03-24T18:37:10.197 回答