HDF5是否能够单独处理多个线程,或者它是否必须进行外部同步?OpenMP示例建议使用后者。
如果是前者,那么定义要写入的数据空间的正确方式是什么?
发布于 2011-04-06 05:37:09
任何玉米,
HDF5可以在没有外部同步的情况下处理多个线程,尽管写入仍然是串行的。您应该编译最新版本(自2011年4月5日起为1.8.6),并使用--enable-threadsafe和-with-pthreads=/pthreads-include-path/,/pthreads-lib-path/标志运行./configure。
例如:
./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);希望这能有所帮助!
https://stackoverflow.com/questions/3122091
复制相似问题