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

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



