HDF / HDF5

HDF / HDF5

  1. Généralités

  2. Différentes versions de HDF

  3. HDF5

    • Groups
    • Datasets
    • Attributes
  4. Lecture / écriture d’une sélection

    • Sélection d’hyperslabs
      • Exemple sans stride et sans block
      • Exemple avec strides et blocks
    • Sélection d’une liste de points indépendants
    • (Sélection d’une union d’hyperslabs)

Généralités 1/3

Problématique :

Les nombreux formats de données standardisés (FDS) proposent une réponse (partielle) à cette problématique :

Généralités 2/3

C’est quoi, HDF ?

Format de fichier standard et public créé initialement en 1987 par le N.C.S.A. (National Center for Supercomputing Applications) et maintenu par le HDF Group (2006) pour :

Généralités 3/3

Intérêts de HDF :

Différentes versions de HDF 1/2

HDF4 (1996)

Limitations :

HDF4 continue à être maintenue (mais plus enrichie)

Différentes versions de HDF 2/2

Pour résoudre ces problèmes → HDF5 (1998) :

HDF5

HDF5 améliore HDF4. Il simplifie la structure des fichiers pour proposer seulement deux types d’objets :

L’utilisateur peut aussi définir une structure d’attribut pour ajouter des informations (des métadonnées) sur chaque objet

Cette structuration en datasets et groups donne aux fichiers HDF5 une structure arborescente. Ainsi, le nom complet d’un objet du fichier HDF5 est construit comme un chemin dans un système de fichiers (/chemin/vers/le/fichier)

HDF5 Groups

Un groupe HDF5 est une structure contenant zéro ou plusieurs objets HDF5. Un groupe comporte deux parties :

HDF5 Datasets

Un dataset (ensemble de données) est stocké dans un fichier en deux parties : un en-tête et un tableau de données

L’en-tête contient des informations nécessaires pour interpréter les données ainsi que les métadonnées (qui décrivent ou annotent le jeu de données). L’en-tête contient par exemple le nom de l’objet, sa dimension, ...

Il existe quatre catégories d’informations essentielles dans l’en-tête : le nom, le datatype (type de données), le dataspace, et le format de stockage

HDF5 Datasets : datatype

Il existe deux catégories de types de données : les types de données atomiques (pouvant être spécifiques au système, i.e. natifs) et les types de données composés :

HDF5 Datasets : dataspace 1/2

Le dataspace décrit la dimensionnalité de l’ensemble de données. Les dimensions d’un ensemble de données peuvent être fixes (immuables), ou elles peuvent être illimitées, ce qui signifie qu’elles sont extensibles

Les propriétés d’un dataspace sont le rang (nombre de dimensions) du tableau de données, les dimensions réelles du tableau, et les tailles maximales des dimensions du tableau

HDF5 Datasets : dataspace 2/2

Un dataspace peut aussi décrire des parties d’un ensemble de données, permettant ainsi d'effectuer des opérations partielles d’E/S sur des sélections. Il y a actuellement quatre façons de faire une sélection partielle :

HDF5 Datasets : format de stockage

Le format HDF5 permet de stocker les données de différentes façons. Le format d’agencement de stockage par défaut est contigu, ce qui signifie que les données sont stockées de la même manière linéaire qu’en mémoire

Un autre format de stockage est également défini pour HDF5 : le stockage chunked (morcelé) : il consiste à diviser les données en ”morceaux” de taille égale stockés séparément

HDF5 Attributes

Les attributs sont des petits jeux de données nommés qui sont attachés à des datasets ou des groupes. Ils sont utilisés pour décrire la nature et/ou l’utilisation prévue d’un ensemble de données ou d’un groupe. Un attribut comporte deux parties : un nom et une valeur. La partie valeur contient une ou plusieurs entrées de données du même type de données

Le format HDF5 et la bibliothèque d’E/S sont conçus avec l’hypothèse que les attributs sont de petits ensembles de données. Ils sont toujours stockés dans l’en-tête de l’objet auquel ils sont attachés

...

01/07/13 - M. TOLA - Liris - /

#