模拟输出因硬件平台而异

计算科学 并行计算 高性能计算
2021-12-18 17:30:35

我们最近将 Python/Fortran 模拟代码移植到了新的超级计算机上。我们在新平台上运行的一些(不是全部)测试(模拟)产生的结果与我们在“旧”集群上得到的结果大不相同。我们看到在两个各自系统上的输出变量之间的数值差异,远大于我们对不同硬件平台和编译器的预期。我们检查了通常的嫌疑人(I/O 文件、模拟设置……),但没有发现明显的罪魁祸首。O(1)

因此我的问题是:是否有(Python)工具可以帮助我们进行调试过程?例如检查输出目录并递归比较输出文件夹(理想情况下进入 netCDF、GRIB 等以比较变量值)、得出诊断图、标志差异等的东西?

2个回答

你的两次跑步有多相同?至少相同数量的处理器?

如果您正在进行并行缩减,那么一个平台可以使用不同的算法,因此由于缺乏关联性,您会得到不同的结果。之后,如果您的计算本质上不稳定,则错误会放大。这当然也意味着在任何一个平台上结果都是没有意义的,但我们暂时把它放在一边。

您是否考虑过它们都错了或都“正确”的可能性?

做一个快速的后向误差计算(对您的情况进行必要的调整)在两次模拟结束时,您就可以说出其中一个是否正确,或者两者是否都是完全合理的解决方案,但只是在前向错误中表现出心理上令人痛苦的差异.Lufu1u2