作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 MPI(c++ 语言)并行化 Conways 的《生命游戏》。我必须从输入中读取一个(非常大的)矩阵,然后将其按行分散到切片中,然后并行处理每个切片。我遵循的想法是只让一个进程处理 I/O 内容。特别是,进程 0 从文件中读取并将初始数据保存到 RxC 矩阵中,以便分散在 (R/P)xC“切片矩阵”中的进程中。现在,当我执行例程 MPI_Scatter 时,编译器会提示,因为“大矩阵”仅在第一个进程中分配。为了使事情顺利进行,我必须在所有过程中分配大矩阵,即使这些矩阵仍然是空白的。这是正常现象,还是我做错了什么?有没有办法避免为每个进程分配一个空白的、无用的矩阵?谢谢大家!
最佳答案
您不需要在任何地方分配“大矩阵”,但MPI_SCATTER
确实要求您在所有列上分配一些内存。
如果您要像这样分散数据:
分散前:
rank 0 - 1 2 3 4
分散后:
rank 0 - 1
rank 1 - 2
rank 2 - 3
rank 3 - 4
您需要为每个等级上的一个 int
分配空间(而不是全部 4 个)。
关于c++ - MPI_分散: Why do I have to allocate memory in all the processes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21789067/
我是一名优秀的程序员,十分优秀!