Alternatives au hdf5

15

J'utilise HDF5 depuis des années, mais à mesure que la taille de l'ensemble de données augmente, je commence à rencontrer les mêmes problèmes répertoriés ici

http://cyrille.rossant.net/moving-away-hdf5/

Pouvez-vous m'indiquer un format comme HDF5 avec - Un bon support pour les écritures parallèles - Un support pour un accès en bloc de matrices énormes

Mon cas d'utilisation typique est une matrice entière de 100k x 100k. Je voudrais l'avoir comme un fichier entier d'un point de vue logique, mais je dois l'écrire morceau par morceau avec des travailleurs parallèles.

MG
la source
3
Pouvez-vous expliquer de quels types de jeux de données vous avez besoin pour exporter? Cela peut être utile aux personnes qui souhaitent répondre à votre question. J'ai considéré HDF5 ainsi que netcfd. Mais ceux-ci peuvent être plus adaptés à certains ensembles de données.
Charles
2
VTK compressé prend en charge les morceaux. Vous pouvez enregistrer plusieurs fichiers en parallèle et les fusionner en utilisant le méta-fichier PVD. Quelle est la taille de votre jeu de données?
Krzysztof Bzowski
Après vos modifications - VTK fragmenté n'est pas une bonne décision.
Krzysztof Bzowski
Qu'avez-vous fini par utiliser?
aidan.plenert.macdonald
@ aidan.penert.macdonald J'ai gardé avec hdf5, en utilisant des écritures parallèles avec MPI. Mais j'ai dû abandonner Python
MG

Réponses:

6

HDF5 est, dans une certaine mesure, un système de fichiers à part entière. En introduisant B-Trees et par la façon dont il gère les blocs, il duplique les fonctionnalités d'un système de fichiers. Lorsque vous exécutez votre code, vous l'exécutez probablement sur un système d'exploitation doté d'un système de fichiers éprouvé et évolutif. Par conséquent, je suggère d'écrire vos données brutes numériques dans un seul fichier en utilisant l'accès aux fichiers bruts ou MPI-IO et d'écrire les métadonnées (endianess, taille, attributs, etc.) dans un fichier JSON ou XML séparé. Si vous disposez de plusieurs jeux de données, vous pouvez les organiser dans un répertoire ou une hiérarchie de répertoires. Lorsque vous souhaitez distribuer l'ensemble de données, il vous suffit de l'intégrer dans un fichier ZIP.

Le seul inconvénient est que vous devez vous occuper de l' endianité , ce qui n'est cependant pas difficile .

Pour une inspiration sur la façon dont cela peut être fait, voir Dragly, et. Al. "A. Structure de répertoire expérimentale (Exdir): une alternative à HDF5 sans introduire un nouveau format de fichier". Neuroinform., 2018, 12 .

H. Rittich
la source