2010-06-25 306 views
4

HDF5能夠自行處理多個線程,還是必須進行外部同步? OpenMP示例說明了後者。HDF5寫入線程併發

如果前者定義要寫入的數據空間的正確方法是什麼?

+1

很好的問題和很好的答案請upvote和接受 – fabrizioM 2011-04-05 22:11:21

回答

7

Anycorn,

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); 

希望這有助於!