Вопрос

HDF5 способен обрабатывать несколько потоков самостоятельно или он должен быть снаружи синхронизирован? Пример OpenMP предполагает последнее.

Если бывший, какой правильный способ определить DataSpace, чтобы написать?

Это было полезно?

Решение

Anycorn,

HDF5 может обрабатывать несколько потоков без внешней синхронизации, хотя пишеты все равно будут серийный. Вы должны скомпилировать последнюю версию (1.8.6 по состоянию на 4/5/2011) и запустите ./configure с --enable-threadsafe а также -with-pthreads=/pthreads-include-path/,/pthreads-lib-path/ Флаги.

Например:

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

Что касается определения DataSpace для письма, самый простой способ состоит в том, чтобы построить базовую прямоугольную гиперплоскость с использованием многомерного массива, значение ранга и 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