HDF5 est-il capable de gérer plusieurs threads seul ou doit-il être synchronisé en externe? L'exemple OpenMP suggère ce dernier.HDF5 écriture thread simultané
Si le premier, quelle est la bonne façon de définir l'espace de données à écrire?
HDF5 est-il capable de gérer plusieurs threads seul ou doit-il être synchronisé en externe? L'exemple OpenMP suggère ce dernier.HDF5 écriture thread simultané
Si le premier, quelle est la bonne façon de définir l'espace de données à écrire?
Anycorn,
HDF5 peut gérer plusieurs threads sans synchronisation externe, bien que les écritures seront toujours en série. Vous devez compiler la dernière version (1.8.6 du 05/04/2011) et exécuter ./configure
avec les indicateurs --enable-threadsafe
et -with-pthreads=/pthreads-include-path/,/pthreads-lib-path/
.
Par exemple:
./configure --enable-threadsafe -with-pthreads=/usr/include,/usr/lib
En ce qui concerne la définition d'un espace de données pour l'écriture, la façon la plus simple est de construire un hyperplan rectangulaire de base en utilisant un tableau multidimensionnel, une valeur de rang et la fonction H5Screate_simple
. Les miens suivent habituellement les mêmes étapes:
//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);
Espérons que cela aide!
bonne question et bonne réponse s'il vous plaît upvote et accepter – fabrizioM