【发布时间】:2012-09-12 18:15:26
【问题描述】:
我有一个维度为 (N,M) 的 C 阶矩阵
mat = np.random.randn(N, M)
我想通过持久的 MPI 请求将 列 发送到另一个节点。但是,使用mpi4py,
sreq = MPI.COMM_WORLD.Send_Init((mat[:,idx], MPI.DOUBLE), send_id, tag)
由于切片不连续而失败。有人可以建议一种解决方法吗?我相信 C 语言中 MPI_Type_vector 允许在创建类型时指定 stride。我如何使用mpi4py 完成此操作?
【问题讨论】:
-
如果
numpy矩阵的存储方式与 C 中的 2D 数组相同(行在内存中连续分配),您可以像在 C 中那样构造一个跨步向量类型。
标签: python mpi mpi4py memory-layout