mpi相关内容

通过 MPI 发送和接收二维数组

我正在尝试解决的问题如下: 我在大型二维矩阵上计算的 C++ 串行代码.为了优化这个过程,我希望分割这个大的 2D 矩阵并使用 MPI 在 4 个节点上运行(比如).节点之间发生的唯一通信是在每个时间步长结束时共享边值.每个节点与其邻居共享边数组数据 A[i][j]. 基于对 MPI 的阅读,我有以下方案要实现. if (myrank == 0){对于 (i= 0 到 x)对于(y= ..
发布时间:2021-11-26 13:21:07 C/C++开发

二维数组的 MPI 数据类型

我需要将一个整数数组(基本上是一个二维数组)从 root 传递给所有处理器.我在 C 程序中使用 MPI.如何为二维数组声明 MPI 数据类型以及如何发送消息(我应该使用广播还是分散) 解决方案 你需要使用 广播,因为您想向每个进程发送相同消息的副本.Scatter 分解消息并在进程之间分配块. 至于如何发送数据:HIndexed 数据类型适合您. 假设你的二维数组是这样定义的 ..
发布时间:2021-11-24 21:56:21 C#

通过 MPI 发送和接收二维数组

我正在尝试解决的问题如下: 我在大型二维矩阵上计算的 C++ 串行代码.为了优化这个过程,我希望分割这个大的 2D 矩阵并使用 MPI 在 4 个节点上运行(比如).节点之间发生的唯一通信是在每个时间步长结束时共享边值.每个节点与其邻居共享边数组数据 A[i][j]. 基于对 MPI 的阅读,我有以下方案要实现. if (myrank == 0){对于 (i= 0 到 x)对于(y= ..
发布时间:2021-11-24 21:11:02 C#

为什么 MPI_Init 接受指向 argc 和 argv 的指针?

这就是我们如何使用 MPI_Init 函数 int main(int argc, char **argv){MPI_Init(&argc, &argv);…} 为什么 MPI_Init 使用指向 argc 和 argv 的指针而不是 argv 的值? 解决方案 根据此处所述的答案: 使用 MPI 通过命令行传递参数 大多数 MPI 实现将删除此函数中所有与 mpirun 相 ..
发布时间:2021-11-17 21:13:12 其他开发

在 Ubuntu 18.04 上找不到 MPI_C 和 MPI cmake

- 找到 PkgConfig:/usr/bin/pkg-config(找到版本“0.29.1")-- 检查模块'libusb-1.0>=1.0.17'-- 找到 libusb-1.0,版本 1.0.21-- 检查模块'opencv>=3.0'--找到opencv,版本3.2.0-- 检查模块'libcaer>=2.0'-- 找到 libcaer,版本 3.3.7-- 找不到 MPI_C(缺少:MP ..
发布时间:2021-09-12 19:22:02 其他开发

MPI_Init() 在 Raspberry Pi 4 上立即崩溃

在全新的 Raspberry Pi 4 Ubuntu 上运行干净的 Ubuntu, ubuntu@ubuntu:~/mpi-hello-world/mpitutorial/tutorials/mpi-hello-world/code$ uname -aLinux ubuntu 5.4.0-1028-raspi #31-Ubuntu SMP PREEMPT Wed Jan 20 11:36:14 ..
发布时间:2021-09-12 19:13:55 其他开发

OpenMPI:简单的 2 节点设置

我在仅使用两个节点运行 OpenMPI 程序时遇到问题(其中一个节点是执行 mpiexec 命令的同一台机器,另一个节点是单独的机器). 我将调用运行 mpiexec 的机器、ma​​ster 和另一个节点 slave. 在 ma​​ster 和 slave 上,我都在 ~/mpi 下的主目录中安装了 OpemMPI 我在 ma​​ster 上有一个名为 ~/machines.txt ..
发布时间:2021-06-12 20:20:15 其他开发

MPI:Printf 语句没有在正确的时间执行

我有一个小程序. #include "mpi.h"#include int main(int argc, char *argv[]){整数等级,大小;内部缓冲区;错误;MPI_Status 状态;err = MPI_Init(&argc, &argv);如果(错误 == MPI_SUCCESS){MPI_Comm_size(MPI_COMM_WORLD, &size);MPI_Comm_rank ..
发布时间:2021-06-04 20:12:05 其他开发

用 OpenMPI 替换 MPICH 安装

我目前在我的机器上安装了 MPICH(版本 3.1.4)(运行 Mac OS X 10.10.5).我想删除它并安装 OpenMPI,但在网上找不到有关如何卸载 MPICH 的说明. 简单地删除MPICH的目录就足够了吗?如果是这样,我在哪里可以找到它?我以为我已经将它安装在 usr/local 中,并且确实在那里找到了一些与 MPI 相关的文件(在名为 include 的文件夹中),但似乎 ..
发布时间:2021-06-04 18:36:33 其他开发

如何通过mpi C++发送布尔数据类型?

我是 C++ 新手,尝试通过 MPI 发送 bool 数据类型,但 C++ 不支持这种数据类型. 我试图让它成为 MPI_BYTE 和 MPI_INT 但它什么也没打印. #include #include "mpi.h"使用命名空间标准;int main(int argc, char **argv){内部 R,P;MPI_Status 状态;布尔检查=假;MPI_Init(&argc, ..
发布时间:2021-06-04 18:36:30 其他开发

MPI_Reduce 与 (MPI_Gather + Reduction on Root) 的性能对比

使用 MPICH2 库的 CRAY 超级计算机.每个节点有 32 个 CPU. 我在 N 个不同的 MPI 等级上有一个浮动,其中每个等级都在不同的节点上.我需要对这组浮点数执行归约操作.对于任何 N 值,我想知道 MPI_Reduce 是否比 MPI_Gather 更快,并且在根上计算了减少.请假设对根等级进行的减少将使用可以利用 N 个线程的良好并行减少算法来完成. 如果 N 的任 ..
发布时间:2021-06-04 18:36:25 其他开发

如何在MPI中的struct中发送指针

我有这样的结构: typedef 结构体{整数 x;双*y;国际**z;}工业; 如何通过 MPI 将 *y 和 **z 之类的指针发送到其他进程?我知道很多答案都说从不通过 MPI 发送指针.但是如果我不能将 *y 更改为数组,因为它在主程序的其他部分使用,我应该怎么做才能通过 MPI 通过进程传输它们?特别是**z,我该怎么办?提前致谢! 解决方案 只需遵循第二个示例中的代码 这里 ..
发布时间:2021-06-04 18:36:19 其他开发

MPI Communicator MPI_Comm_split 无组

我正在课堂上使用 C 学习 MPI.我目前正试图弄清楚您何时使用 MPI_Comm_split 以及它的优势是什么.如果我不使用组或者我的所有进程都在一个组中,我还试图弄清楚使用它是否比仅使用 MPI_COMM_WORLD 有任何好处. 据我所知,MPI_Comm_split 为每种“颜色"提供了一个独特的通信器,这与使用 MPI_COMM_WORLD 不同(不确定这最后一部分是否正确).M ..
发布时间:2021-06-04 18:36:16 其他开发

循环中使用的 srun: srun:作业步骤中止:等待作业步骤完成最多 32 秒

我有一个 .sh 文件要由 srun 运行,因为我想查看脚本的动态打印输出.但是通过运行 srun job_spinup.sh southfr_exp 1 & 我总是在 2 个主循环后出现错误(由于时间限制错误而超时)......这是 .sh 文件中的主要代码.顺便说一下,我想运行一个 12 个月的模型并循环 20 次(所谓的旋转 20 次).但是错误发生在第二个循环(旋转)的 11 月...这是 ..
发布时间:2021-06-04 18:36:12 其他开发

具有相同类型字段的结构上的 MPI_Allreduce 是否可移植?

考虑这样的事情: typedef struct TS {双 a,b,c;}...S x,y;...MPI_Allreduce(&x, &y, 3, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); 上面的代码是否完全可移植(不使用 MPI_Type_struct 和全部;假定结构中的所有变量都属于同一类型)?也是在各个节点上使用不同硬件的情况下吗? 提前致谢,杰 ..
发布时间:2021-06-04 18:36:09 其他开发

MPI中的MPI_Probe和MPI_Get_count有什么区别

我发现 MPI_Probe 用于查找消息大小,并使用 MPI_Get_count 查找消息长度.消息长度和消息大小有什么区别?他们两个不是一样的吗?此外,MPI_Send 或 MPI_Recv 中的计数参数表示什么?这是否意味着从进程 x 向进程 y 发送/接收相同消息的次数? 解决方案 虽然 MPI_Probe 可用于查找消息的大小,但您必须使用 MPI_Get_count 来获取那个大 ..
发布时间:2021-06-04 18:36:06 其他开发

使用 MPI 从不同过程中收集小矩阵部分

我花了一些时间思考计算矩阵的方案,一切都说得通,但还有最后一部分我不知道如何处理. 这是我打算做的(场景): 要求计算一个 10(w)x5(h) 矩阵. 我有 10 个处理器可用. 在每个处理器上声明一个 1x5 矩阵,包括等级 0 的 proc. 计算每个处理器上的每个子矩阵的偏移量. MPI_Barrier 等待所有 10 个处理器完成计算. 显示完整矩阵. 一 ..
发布时间:2021-06-04 18:36:03 其他开发

从 MPICH 切换到 OpenMPI

我的 Ubuntu 20.04 中有 mpich 和 openmpi. $ dpkg -l |grep mpi |库...ii libmpich-dev:amd64 3.3.2-2build1 amd64 MPICH 开发文件ii libmpich12:amd64 3.3.2-2build1 amd64 MPICH 共享库...ii libopenmpi-dev:amd64 4.0.3-0ubu ..
发布时间:2021-06-04 18:36:00 其他开发