4

HDF5 は単独で複数のスレッドを処理できますか、それとも外部で同期する必要がありますか? OpenMP の例は後者を示唆しています。

前者の場合、書き込むデータスペースを定義する適切な方法は何ですか?

4

1 に答える 1

7

エニコーン、

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

お役に立てれば!

于 2011-04-05T21:37:08.727 に答える