并行化编程的全面指南:从规划到实施
1. 理想测试系统的进一步要求
对于大多数情况而言,之前描述的测试系统已足够。但对于大型高性能计算(HPC)项目,还有更多有用的功能。这类项目通常有大量的测试套件,可能需要在批处理系统中运行以获取更多资源。
协作测试系统(CTS)(https://sourceforge.net/projects/ctsproject/ )就是为满足这些需求而开发的系统。它使用 Perl 脚本运行一组固定的测试服务器(通常为 10 个),将测试并行地发送到批处理系统。每个测试完成后,会启动下一个测试,避免一次性向系统发送过多作业。CTS 系统还能自动检测批处理系统和 MPI 类型,并为每个系统调整脚本。报告系统使用 cron 作业,在夜间早期启动测试,跨平台报告在早上生成并发送。
2. 查找和修复内存问题
良好的代码质量至关重要。并行化常常会暴露出代码中的缺陷,如未初始化的内存或内存覆盖。
- 未初始化的内存 :在设置值之前就被访问的内存。为程序分配内存时,它会获取这些内存位置上的任何值。如果在设置值之前使用,会导致不可预测的行为。
- 内存覆盖 :将数据写入变量未拥有的内存位置。例如,写入超出数组或字符串边界的数据。
为了发现这些问题,建议使用内存正确性工具彻底检查代码。其中最好的工具之一是免费的 Valgrind 程序。Valgrind 是一个在机器代码级别运行的工具框架,通过合成 CPU 执行指令。在 Valgrind 框架下开发了许多工具。
操作步骤如下:
1. 使用包管理器在系统上安装
超级会员免费看
订阅专栏 解锁全文
1142

被折叠的 条评论
为什么被折叠?



