HDF5
Généralités
HDF5 (pour Hierarchical Data Format) est une bibliothèque de formatage des données scientifiques et qui en facilite le stockage, la lecture, la visualisation, la manipulation et l'analyse. Elle traite tous les types de données et sa conception permet autant des entrées-sorties flexibles et efficaces que la prise en charge de forts volumes de données. Elle est portable et extensible et peut accompagner les applications dans leur évolution. La suite HDF5 Technology comprend des outils et des applications pour la gestion, la manipulation, la visualisation et l'analyse de données en format HDF5. HDF (appelée aussi HDF4) est une bibliothèque et un format de fichier multiformat pour le stockage et la gestion sur plusieurs ordinateurs. HDF4 est le format original et même si elle est toujours supportée, la version HDF5 est recommandée.
Description
HDF a été conçue pour
- de forts volumes de données et des données complexes, mais peut être utilisée pour de bas volumes et des données simples
- toutes les tailles et tous les types de systèmes (portable)
- stockage et entrée-sortie flexibles et efficients
- applications peuvent évoluer et traiter de nouveaux modèles
HDF comprend :
- un format de fichier pour le stockage de données HDF4/HDF5
- un modèle pour organiser et accéder des données HDF4/HDF5 avec diverses applications
- plusieurs logiciels dont des bibliothèques, des modules linguistiques et plusieurs outils spécifiques au format
Références :
- Site web du projet : https://www.hdfgroup.org/solutions/hdf5/
- Documentation : https://support.hdfgroup.org/documentation/
- Téléchargement : https://www.hdfgroup.org/downloads/hdf5
Points forts
- Les données sont indépendantes de l'architecture matérielle (endianness).
- Les données structurées en unités physiques permettent le suivi de l'information pertinente.
- Utilisable en parallèle (MPI-IO)
- Les données peuvent être compressées à l'écriture (zlib ou szip).
- Interfaces pour C, C++, Fortran 90, Java et Python
- Gère tous les types de données (plus que NetCDF ).
- Lecture et écriture en format .mat de Matlab.
- Gratuit pour la plupart des plateformes
Points faibles
- Interface plus compliquée que celle de NetCDF .
- HDF5 n'exige pas UTF-8; ASCII est habituellement employé.
- Les ensembles de données ne peuvent être libérés sans qu'une copie du fichier soit créée avec un autre outil.
Guide de démarrage
Nous abordons ici les détails de configuration.
Modules d'environnement
Les modules suivants sont disponibles sur Cedar et Graham via CVMFS :
- hdf
- version 4.1 et précédentes
- hdf5
- plus récente version de HDF5
- hdf5-mpi
- pour utiliser MPI
Exécutez module avail hdf
pour connaître les versions disponibles pour le compilateur et les modules MPI que vous avez chargés. Pour la liste complète des modules HDF4/HDF5, exécutez module -r spider '.*hdf.*'
.
Utilisez code>module load hdf/version ou module load hdf5/version
pour configurer l'environnement selon la version sélectionnée. Par exemple, pour charger HDF5 version 1.8.18, lancez
[name@server ~]$ module load hdf5/1.8.18
Scripts de soumission de tâche
Pour des exemples de scripts pour l'ordonnanceur Slurm, consultez Exécuter des tâches. Nous vous recommandons d'utiliser la commande module load ...
dans votre script.
Lier à des bibliothèques HDF
Voici des exemples en mode séquentiel et en mode parallèle ː
Mode séquentiel
[name@server ~]$ module load hdf5/1.8.18
[name@server ~]$ gcc example.c -lhdf5
Mode parallèle
[name@server ~]$ module load hdf5-mpi/1.8.18
[name@server ~]$ mpicc example.c -lhdf5
Exemple
Consultez un exemple de lecture et écriture dans un ensemble de données. Des nombres entiers sont d'abord écrits avec des dimensions data space de DIM0xDIM1, puis le fichier est fermé. Le fichier est ensuite rouvert, les données sont lues et affichées.
Compilez et exécutez avec
[name@server ~]$ module load hdf5-mpi
[name@server ~]$ mpicc h5ex_d_rdwr.c -o h5ex_d_rdwr -lhdf5
[name@server ~]$ mpirun -n 2 ./h5ex_d_rdwr
Utilitaires
Vous trouverez la liste complète sur le site web du Hdfgroup. Soulignons les utilitaires suivants ː
- HDF5 ODBC Connector
- interface SQL pour le format HDF5 data en Excel, Tableau et autres
- HDFView
- fureteur Java et paquet objets pour HDF5-1.10 (identification d'objets 64-bits) et HDF 4.2.12 (et suivantes)
- quelques outils en ligne de commande
- gif2h5/h52gif
- h5cc, h5fc, h5c++
- h5debug
- h5diff
- h5dump
- h5import
- h5check
- vérification de la validité d'un fichier HDF5
- h5edit
- outils d'édition