gpt4 book ai didi

c++ - MPI_分散: Why do I have to allocate memory in all the processes?

转载 作者:行者123 更新时间:2023-12-02 09:49:23 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com