我有一个用Fortran编写的应用程序,它使用并行HDF5进行输入/输出。
一个匹配的后处理代码用于读取*.h5
文件形式的输出,并对其进行处理
然而,当我尝试使用valgrind来检查内存泄漏时,它在读取大型数据集时会停滞。
更确切地说,对于大型数据集,例如1069120个doubles(其中doubles被定义为H5kind_to_type(REAL64,H5_REAL_KIND)
(,在调用H5Dread_f
时会发生停滞,而对于较小的数据集,这是可以的。
我尝试使用--enable-using-memchecker
重新编译HDF5库,如本文所述,但没有帮助。
有人对此更有经验吗?
我找到了原因/解决方案:由于我的一个错误,我在这些HDF5例程中使用的块大小通常只有1个字节,当然太低了。
修复这一点也使valgrind变得更快、更实用。