【发布时间】:2020-07-18 03:02:54
【问题描述】:
假设我正在使用 MPI,我希望能够将整数矩阵的多行从主进程发送到其他进程。这样做相对容易,如下所示:
MPI_Send(&matrix[start_row][0], amount_of_cells, MPI_INT, target_process, 1, MPI_COMM_WORLD);
现在假设在我们的矩阵中,每个单元格都保存一个对大小为 2 的整数数组的引用,而不是每个单元格都保存一个整数。我们如何将新矩阵的多行发送到子进程?
我正在考虑做与上面的代码相同的事情,但将 amount_of_cells 变量加倍,因为每个单元格都包含对大小为 2 的整数数组的引用。但是,它似乎不起作用,我有点这里的损失。
关于如何解决这个问题的任何提示或建议会有帮助吗?
旧矩阵:
_________
| 1 | 2 |
--------
| 3 | 4 |
_________
新矩阵:
___________________
| [1, 0] | [2, 0] |
--------------------
| [3, 0] | [4, 0] |
___________________
因此,每个单元格都保存对使用malloc() 创建的大小为 2 的整数数组的引用,而不是整数。我怎样才能将这个新矩阵的行发送到子进程?
我正在考虑定义我自己的 MPI 数据类型,这可能是一个起点。
【问题讨论】:
-
您最好的选择是更改您分配二维数组的方式,并将它们分配到连续内存中。如果这不是一个选项,那么您可以定义自己的数据类型。
-
是的,我就是这么想的
标签: c multiprocessing mpi