HDF5是否能够自己处理多个线程,还是必须外部同步? OpenMP示例建议后者。

如果前者,定义dataspace写入的正确方法是什么?

有帮助吗?

解决方案

Anycorn,

HDF5可以处理多个线程而无需外部同步,尽管书写仍然是串行的。您应该编译最新版本(截至2011年4月5日)并运行 ./configure--enable-threadsafe-with-pthreads=/pthreads-include-path/,/pthreads-lib-path/ 标志。

例如:

./configure --enable-threadsafe -with-pthreads=/usr/include,/usr/lib

关于定义编写数据台式,最简单的方法是使用多维数组,等级值和 H5Screate_simple 功能。我的通常遵循相同的步骤:

    //NUM = Number of spaces in this dimension
    //Create a 1 dimensional array
    hsize_t dsDim[1] = {NUM};
    //Create the 1x1xNUM data space (rank param = 1).
    hid_t dSpace = H5Screate_simple(1, dsDim, NULL);
    ...
    Create datasets using the dataspace
    ...
    //Release the data space
    H5Sclose(dSpace);

希望这可以帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top