HDF5 は単独で複数のスレッドを処理できますか、それとも外部で同期する必要がありますか? OpenMP の例は後者を示唆しています。
前者の場合、書き込むデータスペースを定義する適切な方法は何ですか?
HDF5 は単独で複数のスレッドを処理できますか、それとも外部で同期する必要がありますか? OpenMP の例は後者を示唆しています。
前者の場合、書き込むデータスペースを定義する適切な方法は何ですか?
エニコーン、
HDF5 は外部同期なしで複数のスレッドを処理できますが、書き込みはシリアルのままです。最新バージョン (2011 年 4 月 5 日時点で 1.8.6) をコンパイル./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);
お役に立てれば!