NetCDF
Généralités
NetCDF (pour Network Common Data Form) est :
- une interface pour un accès aux données orienté tableaux et
- une bibliothèque qui fournit une implémentation de cette interface.
Son format de données autodocumenté et indépendant de l'architecture matérielle permet la création, l'accès et le partage de données scientifiques.
Plusieurs modifications ont été apportées à la bibliothèque avec la version 4 mise en production en 2008; il ne sera pas question ici des versions précédentes. NetCDF 4.x est rétrocompatible, mais les versions antérieures ne peuvent utiliser les nouveaux fichiers.
- Site web du projet : https://www.unidata.ucar.edu/software/netcdf
- Documentation : https://www.unidata.ucar.edu/software/netcdf/docs
- Fichiers à télécharger : https://www.unidata.ucar.edu/downloads/netcdf/index.jsp
- FAQ : https://www.unidata.ucar.edu/software/netcdf/docs/faq.html
Points forts
- Les données sont indépendantes de l'architecture matérielle ([hhttps://fr.wikipedia.org/wiki/Endianness boutisme ou endianness]).
- Les données structurées en unités physiques permettent le suivi de l'information pertinente.
- NetCDF4 écrit et lit en parallèle si construit avec une version parallèle de HDF5.
- Les données peuvent être compressées à l'écriture.
- Interface plus simple que HDF5.
- Gratuit pour la plupart des plateformes.
Points faibles
- L'interface Python ne permet pas la parallélisation (version 1.0.5).
- Certains fichiers produits avec HDF5 ne peuvent être lus par NetCDF.
Guide de démarrage
Nous abordons ici les détails de configuration.
Modules d'environnement
Les modules suivants sont disponibles via CVMFS :
- netcdf
- pour lier avec les programmes contenant uniquement des instructions en C
- netcdf-c++
- pour lier avec les programmes contenant des instructions en C et en C++
- netcdf-fortran
- pour lier avec les programmes contenant des instructions en Fortran
D'autres modules utilisent MPI pour permettre des entrées/sorties en parallèle :
- netcdf-mpi
- pour lier avec les programmes contenant des instructions en C et faisant appel à des bibliothèques MPI
- netcdf-c++-mpi
- pour lier avec les programmes contenant des instructions en C et C++ et faisant appel à des bibliothèques MPI
- netcdf-fortran-mpi
- pour lier avec les programmes contenant des instructions en Fortran et faisant appel à des bibliothèques MPI
Exécutez module avail netcdf
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 NetCDF, exécutez module -r spider '.*netcdf.*'
.
Utilisez module load netcdf/version
pour configurer l'environnement selon la version sélectionnée. Par exemple, pour charger la bibliothèque NetCDF version 4.1.3 pour C, lancez
[name@server ~]$ module load netcdf/4.1.3
Soumettre un script
Consultez Exécuter des tâches pour des exemples de scripts soumis à l'ordonnanceur Slurm. Nous vous recommandons d'inclure la commande module load ...
dans votre script.
Lier des programmes à des bibliothèques NetCDF
Les exemples qui suivent montrent comment lier des bibliothèques NetCDF à des programmes en C et en Fortran.
NetCDF en série
Programme en C ː
[name@server ~]$ module load netcdf/4.4.1
[name@server ~]$ gcc example.c -lnetcdf
Programme en Fortran ː il faut spécifier deux bibliothèques dans l'ordre approprié.
[name@server ~]$ module load gcc netcdf-fortran
[name@server ~]$ gfortran example.f90 -I$EBROOTNETCDFMINFORTRAN/include -lnetcdf -lnetcdff
NetCDF en parallèle
Programme en C faisant appel à MPI ː
[name@server ~]$ module load netcdf-mpi
[name@server ~]$ gcc example.c -lnetcdf
Exemple
Dans cet exemple, un fichier NetCDF est créé et contient une seule variable bidimensionnelle nommée data dont les dimensions sont x et y.
Pour compiler l'exemple,
[name@server ~]$ module load netcdf
[name@server ~]$ gcc ex_netcdf4.c -lnetcdf
Utilitaires
Plusieurs utilitaires peuvent lire et écrire des fichiers selon différents formats.
- ncdump
- Cet outil génère la représentation texte CDL d'un ensemble de données netCDF avec l'option d'exclure certaines ou toutes les données variables. Le résultat peut en principe être utilisé en entrée avec ncgen. ncdump et ncgen peuvent donc être employés pour convertir une représentation binaire en représentation texte et vice versa. Consultez la section ncdump du site web UCAR.
- ncgen
- À l'inverse de ncdump, cet outil génère un fichier binaire NetCDF. Consultez la section ncgen.
- nccopy
- Copie un fichier netCDF en pouvant modifier le format binaire, la taille des blocs, la compression et d'autres paramètres de stockage. Consultez la section nccopy.
Pour vous aider à trouver les commandes pour lier et compiler, utilisez les utilitaires nf-config
et nc-config
; consultez la documentation.
PnetCDF
PnetCDF est une autre bibliothèque pour la lecture et l'écriture de fichiers au format NetCDF. Les noms de ses procédures sont différents de ceux de NetCDF. La bibliothèque offre aussi des procédures non-blocantes. Consultez le site web PnetCDF pour plus d'information.