NetCDF

From Alliance Doc
Jump to navigation Jump to search
This site replaces the former Compute Canada documentation site, and is now being managed by the Digital Research Alliance of Canada.

Ce site remplace l'ancien site de documentation de Calcul Canada et est maintenant géré par l'Alliance de recherche numérique du Canada.

This page is a translated version of the page NetCDF and the translation is 100% complete.
Other languages:

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.

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

Question.png
[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.