C++MPI报错集合

这篇博客记录了MPI新手在使用过程中遇到的一些常见错误,包括数据类型不匹配、访问冲突、段错误以及内存管理问题,旨在帮助读者避免重复踩坑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MPI的资料真是太少了,调试的方法也少得可怜,作为MPI新人,记录一下日常报错和解决过程,避免反复踩坑.
————————————————————————————————————————

job aborted:
[ranks] message

[0] fatal error
Fatal error in MPI_Scatter: Message truncated, error stack:
MPI_Scatter(sbuf=0x000002C764C6F210, scount=300, MPI_DOUBLE, rbuf=0x000002C764C59B70, rcount=30, MPI_DOUBLE, root=0, MPI_COMM_WORLD) failed
Message truncated; 240 bytes received but buffer size is 240

[1-9] terminated

---- error analysis -----

[0] on DESKTOP-OC33V33
mpi has detected a fatal error and aborted parallelProject.exe

---- error analysis -----

原因:不是很记得了,印象中是就算读数据的只有一个进程(然后广播分发到另一个变量里),其他进程的该变量也需要声明空间。
————————————————————————————————————————

job aborted:
[ranks] message

[0-4] terminated

[5] process exited without calling finalize

[6-9] terminated

---- error analysis -----

[5] on DESKTOP-OC33V33
parallelProject.exe ended prematurely and may h
03-23
### MPICH2 的下载、安装、配置与使用教程 #### 一、MPICH2 下载 为了获取 MPICH2 软件包,需访问其官方网站或其他可信资源站点。以版本 1.4.1p1 为例,可以从官方发布的存档页面找到对应的压缩包进行下载[^1]。 --- #### 二、MPICH2 安装过程 完成文件下载后,解压到目标目录(如 `C:\Program Files\`),随后进入该目录执行必要的构建操作。以下是具体说明: 1. **环境准备** 确保已安装支持的编译工具链,例如 MinGW 或 Cygwin,在 Windows 平台上推荐搭配 Visual Studio 开发环境。 2. **运行 Make 命令** 执行以下命令来启动编译流程,并记录日志以便排查错误: ```bash make |& tee m.txt ``` 若无报错,则表明成功生成可执行程序及其依赖库[^2]。 3. **验证安装成果** 进入 MPICH2 的 bin 文件夹路径(默认为 `C:\Program Files\MPICH2\bin`),通过 CMD 测试基础功能是否正常工作[^4]。 --- #### 三、Visual Studio 中配置 MPICH2 为了让 VS2022 支持 MPI 编程项目开发,需要调整若干设置项如下所示: 1. **附加包含目录 (Include)** 展开左侧导航栏中的 “Configuration Properties -> C/C++”,于右侧面板内的 “Additional Include Directories” 字段追加 MPICH2 头文件位置,形似 `"C:\Program Files\MPICH2\include;"`[^3]。 2. **链接器选项(Linker Settings)** 同样定位至属性管理界面里的 Linker 分支节点,编辑 Library Directory 参数指向对应 lib 子目录地址,比如:`"C:\Program Files\MPICH2\lib"`[^5]。 3. **全局宏定义(Macros)** 添加 `_MPI` 和其他可能涉及的关键字作为预处理器指令的一部分,从而激活特定的功能模块实现无缝集成效果。 --- #### 四、基本使用方法示例 编写一段简单的 Hello World 类型的应用演示如何调用核心 API 函数创建分布式计算场景实例代码片段如下: ```c #include <mpi.h> #include <stdio.h> int main(int argc, char *argv[]) { int rank, size; // 初始化 MPI 环境 MPI_Init(&argc, &argv); // 获取当前进程编号以及总数量 MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); printf("Process %d of %d says hello!\n", rank, size); // 结束会话释放资源 MPI_Finalize(); } ``` 保存上述源码之后利用 mpicc 工具对其进行交叉编译处理得到最终产物形式即 exe 可独立运行实体文件对象单元结构体数组列表集合等等概念均有所体现于此处描述之中。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值