程序设计常见错误详解:MPI并行编程指南
需积分: 50 118 浏览量
更新于2024-08-09
收藏 906KB PDF 举报
在"程序设计中的错误-中国电信5G技术白皮书"中,第11章详细讨论了在MPI(Message Passing Interface)程序设计过程中常见的错误及其解决方案。MPI是一种用于编写并行程序的工业标准接口,特别适用于高性能计算环境。以下是章节中提到的一些关键知识点:
1. **缺少 ierr 参数**:在Fortran程序中,MPI子程序的最后通常会有一个错误代码参数ierr,但在C调用中可能被忽略,导致在编译阶段不易察觉,运行时可能出现未知错误。因此,开发者需要确保在调用MPI函数时不会漏掉这个参数。
2. **对 status 的错误声明**:status是一个整数数组,而非单独的整数,许多编译器对此检查不严格。这可能导致在尝试使用status中的信息时,因为数组边界错误引发未预期的错误。正确声明status至关重要。
3. **字符串的错误声明**:在Fortran中,字符串和字符数组的声明不同。例如,一个包含10个字符的字符串应声明为`character*10 string10`,而不是`character string10 10`,后者会被视为字符数组,不能替换字符串。
4. **避免以MPI_开头的变量或常量**:为了避免与MPI自身的函数或常量名冲突,开发者应避免在程序中声明以MPI_开头的标识符。
5. **argc 和 argv 参数使用**:在MPI程序中,尽量不要依赖命令行参数(如argc和argv),因为并非所有MPI实现都强制传递这些参数。这可能导致在特定环境下程序运行失败。
6. **控制程序执行时机**:MPI_Init和MPI_Finalize之间的代码执行行为未被MPI标准定义,因此在这些区域的代码可能会产生不确定的结果。
7. **MPI_Recv 和 MPI_Bcast 匹配问题**:尽管在语义上,MPI_Bcast可以看作多次发送,但编程时不能将其与多个MPI_Send混淆。MPI_Bcast是集合操作,每个进程都需要独立的MPI_Bcast调用,而非MPI_Recv。
8. **多线程支持**:不能假定MPI本身支持多线程,这意味着在编写程序时需要明确处理线程同步和通信问题。
这本书《高性能计算之并行编程技术——MPI并行程序设计》深入介绍了MPI,并强调了正确设计并行程序的重要性。它适合本科生和研究生学习,尤其是对FORTRAN和C编程有一定了解的人。书中逐步引导读者从基础知识开始,理解并行编程模型、并行算法,然后逐步学习MPI的基本功能和高级特性,直至MPI的最新发展和扩展。通过丰富的例子和讲解,帮助读者不仅掌握编程技巧,更培养他们的并行思维。
2019-07-21 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
![](https://profile-avatar.csdnimg.cn/9b6567d0a3e84fbea6edde733454bfb3_weixin_26711801.jpg!1)
物联网_赵伟杰
- 粉丝: 44
- 资源: 4050
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景