【发布时间】:2015-09-20 07:31:40
【问题描述】:
我有一个用 Fortran 编写的应用程序,它使用并行 HDF5 进行输入/输出。
使用匹配的后处理代码以*.h5 文件的形式读取其输出,并对其进行处理。
但是,当我尝试使用 valgrind 检查内存泄漏时,它会在读取大型数据集时停止。
更准确地说,对于大型数据集(例如 1069120 双精度数(其中双精度数定义为 H5kind_to_type(REAL64,H5_REAL_KIND)))调用 H5Dread_f 时会发生停顿,而对于较小的数据集则可以。
我尝试使用 --enable-using-memchecker 重新编译 HDF5 库,如 here 所述,但没有帮助。
有人有这方面的经验吗?
【问题讨论】:
-
您是否尝试过使用中等大小的数据集?可能仅仅是 valgrind 导致读取速度非常慢,并且具有逐渐变大数据集的测试将需要更长的时间才能完成。如果是这样,您没有看到挂起 - 只是缓慢。
-
这样做需要对涉及的两个代码进行重写。我可以做到,但这需要一些时间。我稍后再试。
-
在运行 valgrind 时运行
top。如果它正在吞噬 CPU,它可能没有挂起。 Valgrind 是出了名的慢,所以这并不奇怪。 -
我做到了,它没有卡住。正如你所说,它只是出了名的慢。谢谢。
标签: linux fortran mpi valgrind hdf5