RegIPSL/CompHDF NC

De Wikicima
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(Compilación en paralelo de HDF5 y netCDF en hydra)
(netcdf-Fortran)
 
(No se muestran 27 ediciones intermedias realizadas por un usuario)
Línea 2: Línea 2:
 
Se siguen estas instrucciones de [https://gist.github.com/milancurcic/3a6c1a97a99d291f88cc61dae6621bdf acá]
 
Se siguen estas instrucciones de [https://gist.github.com/milancurcic/3a6c1a97a99d291f88cc61dae6621bdf acá]
   
Descargamos los códigos en el <code>$INSWORKDIR</code> (en este caso <code>INSWORKDIR=/home/lluis.fita/installs/<code>):
+
Descargamos los códigos en el <code>$INSWORKDIR</code> (en este caso <code>INSWORKDIR=/home/lluis.fita/installs</code>):
   
 
Compilaremos con intel, así que cargamos el entorno correspondiente:
 
Compilaremos con intel, así que cargamos el entorno correspondiente:
 
<pre style="shell">
 
<pre style="shell">
$ source /opt/load-libs.sh 1
+
source /opt/load-libs.sh 1
  +
export INSWORKDIR=/home/lluis.fita/installs
  +
mkdir $INSWORKDIR
 
</pre>
 
</pre>
   
 
== HDF5 ==
 
== HDF5 ==
   
HDF5 de la página [https://www.hdfgroup.org/downloads/hdf5/source-code/ HDF5source] (archivo $INSWORKDIR/hdf5/1.14.3/hdf5-1.14.3.tar.gz)
+
Código del HDF5 obtenido de la página [https://www.hdfgroup.org/downloads/hdf5/source-code/ HDF5source] (archivo <code>$INSWORKDIR/hdf5/1.14.3/hdf5-1.14.3.tar.gz</code>)
   
<pre stye="shell">
+
<pre style="shell">
$ cd $INSWORKDIR
+
cd $INSWORKDIR
$ mkdir hdf5
+
mkdir hdf5
$ mkdir -p 1.14.3/intel/parallel
+
mkdir -p 1.14.3/intel/parallel
$ cd 1.14.3/intel/parallel
+
cd 1.14.3/intel/parallel
$ mkdir ins
+
mkdir ins
$ cd hdf5-1.14.3
+
cd hdf5-1.14.3
$ tar xvfz ../../hdf5-1.14.3.tar.gz
+
tar xvfz ../../hdf5-1.14.3.tar.gz
 
</pre>
 
</pre>
   
Compilamos el codigo en el directorio <code>$HDF5</code> (estando en $INSWORKDIR/hdf5/1.14.3/intel/parallel/hdf5-1.14.3</pre>)
+
Compilamos el código en el directorio <code>$HDF5</code> (estando en <code>$INSWORKDIR/hdf5/1.14.3/intel/parallel/hdf5-1.14.3</code>)
 
<pre style="shell">
 
<pre style="shell">
 
export HDF5=$INSWORKDIR/hdf5/1.14.3/intel/parallel/ins
 
export HDF5=$INSWORKDIR/hdf5/1.14.3/intel/parallel/ins
CC=mpicc FC=mpif90 CFLAGS=-fPIC ./configure --enable-shared --enable-parallel --enable-fortran --enable-fortran2003 --prefix=$HDF5
+
CC=mpicc FC=mpif90 CFLAGS=-fPIC
make && make install
+
./configure --enable-shared --enable-parallel --enable-fortran --enable-fortran2003 --prefix=$HDF5 >& ./run_configure.log
  +
</pre>
  +
Se verifica que la configuración de la instalación no haya dado problemas (mirar el archivo <code>run_configure.log</code>). Si no hay problemas, ya se pude compilar:
  +
<pre style="shell">
  +
make >& run_make.log
 
</pre>
 
</pre>
   
  +
Se verifica que la compilación no haya dado problemas (mirar el archivo <code>run_make.log</code>). Si no hay problemas, ya se pude instalar:
  +
<pre style="shell">
  +
make install >& run_make-ins.log
  +
</pre>
  +
  +
Si no hubo problemas tendríamos que tener en <code>$HDF5/bin</code> (sólo cómo ejemplo):
  +
<pre style="shell">
  +
cd $HDF5/bin
  +
ls
  +
h5clear h5format_convert h5pcc h5repart
  +
h5copy h5fuse.sh h5perf h5stat
  +
h5debug h5import h5perf_serial h5tools_test_utils
  +
h5delete h5jam h5pfc h5unjam
  +
h5diff h5ls h5redeploy h5watch
  +
h5dump h5mkgrp h5repack ph5diff
  +
</pre>
   
 
== NETCDF ==
 
== NETCDF ==
  +
  +
Las librerías netCDF tienen 2 interfaces, una para c y otra para Fortran. Otra vez realizamos la instalación desde el directorio <code>$INSWORKDIR</code>.
  +
  +
=== netcdf-c ===
  +
Se descarga directamente de la ultima versión del repositorio (Nov 22)
   
 
<pre style="shell">
 
<pre style="shell">
  +
cd $INSWORKDIR
  +
mkdir -p netcdf/intel/parallel
  +
cd netcdf/intel/parallel
  +
git clone https://github.com/Unidata/netcdf-c.git
  +
cd netcdf-c
  +
</pre>
   
$ git clone https://github.com/Unidata/netcdf-c.git
+
Se instalarán las librerías en <code>NETCDF=$INSWORKDIR/netcdf/intel/parallel/ins</code>
  +
<pre style="shell">
  +
mkdir $INSWORKDIR/netcdf/intel/parallel/ins
  +
export NETCDF=$INSWORKDIR/netcdf/intel/parallel/ins
  +
export CC=mpicc
  +
export LDFLAGS=-L$HDF5/lib
  +
export LIBS=-lhdf5
  +
export CPPFLAGS=-I$HDF5/include
  +
autoreconf -if
  +
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HDF5/lib
  +
./configure --prefix=$NETCDF --enable-parallel-tests >& run_configure.log
  +
</pre>
   
  +
Se mira si la configuración de compilación fue bien (mirar contenido en <code>run_configure.log</code>) y se compila
  +
<pre style="shell">
  +
make >& run_make.log
 
</pre>
 
</pre>
  +
  +
Se verifica que la compilación fuera bien (mirar contenido en <code>run_configure.log</code>) y se instalan las librerías
  +
<pre style="shell">
  +
make install >& run_make_ins.log
  +
</pre>
  +
  +
Para verificar que todo salió bien miramos en <code>$NETCDF/bin</code>
  +
<pre type="shell">
  +
cd $NETCDF/bin
  +
ls
  +
nc4print nc-config nccopy ncdump ncgen ncgen3 ocprint
  +
</pre>
  +
  +
=== netcdf-Fortran ===
  +
La interfaz Fortran de las librerías se compila una vez se compiló la interfaz para 'c'.
  +
  +
Agarramos el código.
  +
<pre style="shell">
  +
wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.6.1.tar.gz
  +
</pre>
  +
  +
Desde el directorio de instalación <code>$INSWORKDIR</code>, preparamos la configuración de la instalación. El contenido de <code>$LIBS</code>, sale de tomar la salida de <code>$NETCDF/bin/nc-config --libs</code>
  +
  +
<pre style="shell">
  +
cd $INSWORKDIR/netcdf/intel/parallel/
  +
tar xvfz ../../v4.6.1.tar.gz
  +
cd netcdf-fortran-4.6.1/
  +
export CC=mpicc
  +
export FC=mpif90
  +
export LDFLAGS=-L$NETCDF/lib
  +
export CPPFLAGS=-I$NETCDF/include
  +
export LIBS=-lnetcdf
  +
export LIBS='-L/home/lluis.fita/installs//netcdf/intel/parallel/ins/lib -L/home/lluis.fita/installs//hdf5/1.14.3/intel/parallel/ins/lib -lnetcdf
  +
-lhdf5_hl -lm -lz -lsz -lxml2 -lcurl -lhdf5'
  +
./configure --prefix=$NETCDF --enable-parallel-tests >& run_configure.log
  +
</pre>
  +
  +
Se comprueba que no hubiera ningún error en el archivo <code>run_configure.log</code>.

Última revisión de 11:32 23 nov 2023

Contenido

[editar] Compilación en paralelo de HDF5 y netCDF en hydra

Se siguen estas instrucciones de acá

Descargamos los códigos en el $INSWORKDIR (en este caso INSWORKDIR=/home/lluis.fita/installs):

Compilaremos con intel, así que cargamos el entorno correspondiente:

source /opt/load-libs.sh 1
export INSWORKDIR=/home/lluis.fita/installs
mkdir $INSWORKDIR

[editar] HDF5

Código del HDF5 obtenido de la página HDF5source (archivo $INSWORKDIR/hdf5/1.14.3/hdf5-1.14.3.tar.gz)

cd $INSWORKDIR
mkdir hdf5
mkdir -p 1.14.3/intel/parallel
cd 1.14.3/intel/parallel
mkdir ins
cd hdf5-1.14.3
tar xvfz ../../hdf5-1.14.3.tar.gz

Compilamos el código en el directorio $HDF5 (estando en $INSWORKDIR/hdf5/1.14.3/intel/parallel/hdf5-1.14.3)

export HDF5=$INSWORKDIR/hdf5/1.14.3/intel/parallel/ins
CC=mpicc FC=mpif90 CFLAGS=-fPIC 
./configure --enable-shared --enable-parallel --enable-fortran --enable-fortran2003 --prefix=$HDF5 >& ./run_configure.log

Se verifica que la configuración de la instalación no haya dado problemas (mirar el archivo run_configure.log). Si no hay problemas, ya se pude compilar:

make >& run_make.log

Se verifica que la compilación no haya dado problemas (mirar el archivo run_make.log). Si no hay problemas, ya se pude instalar:

make install >& run_make-ins.log

Si no hubo problemas tendríamos que tener en $HDF5/bin (sólo cómo ejemplo):

cd $HDF5/bin
ls
h5clear   h5format_convert  h5pcc          h5repart
h5copy    h5fuse.sh         h5perf         h5stat
h5debug   h5import          h5perf_serial  h5tools_test_utils
h5delete  h5jam             h5pfc          h5unjam
h5diff    h5ls              h5redeploy     h5watch
h5dump    h5mkgrp           h5repack       ph5diff

[editar] NETCDF

Las librerías netCDF tienen 2 interfaces, una para c y otra para Fortran. Otra vez realizamos la instalación desde el directorio $INSWORKDIR.

[editar] netcdf-c

Se descarga directamente de la ultima versión del repositorio (Nov 22)

cd $INSWORKDIR
mkdir -p netcdf/intel/parallel
cd netcdf/intel/parallel
git clone https://github.com/Unidata/netcdf-c.git
cd netcdf-c

Se instalarán las librerías en NETCDF=$INSWORKDIR/netcdf/intel/parallel/ins

mkdir $INSWORKDIR/netcdf/intel/parallel/ins
export NETCDF=$INSWORKDIR/netcdf/intel/parallel/ins
export CC=mpicc 
export LDFLAGS=-L$HDF5/lib 
export LIBS=-lhdf5 
export CPPFLAGS=-I$HDF5/include
autoreconf -if
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HDF5/lib
./configure --prefix=$NETCDF --enable-parallel-tests >& run_configure.log

Se mira si la configuración de compilación fue bien (mirar contenido en run_configure.log) y se compila

make >& run_make.log

Se verifica que la compilación fuera bien (mirar contenido en run_configure.log) y se instalan las librerías

make install >& run_make_ins.log

Para verificar que todo salió bien miramos en $NETCDF/bin

cd $NETCDF/bin
ls
nc4print  nc-config  nccopy  ncdump  ncgen  ncgen3  ocprint

[editar] netcdf-Fortran

La interfaz Fortran de las librerías se compila una vez se compiló la interfaz para 'c'.

Agarramos el código.

wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.6.1.tar.gz

Desde el directorio de instalación $INSWORKDIR, preparamos la configuración de la instalación. El contenido de $LIBS, sale de tomar la salida de $NETCDF/bin/nc-config --libs

cd $INSWORKDIR/netcdf/intel/parallel/
tar xvfz ../../v4.6.1.tar.gz
cd netcdf-fortran-4.6.1/
export CC=mpicc
export FC=mpif90
export LDFLAGS=-L$NETCDF/lib
export CPPFLAGS=-I$NETCDF/include
export LIBS=-lnetcdf
export LIBS='-L/home/lluis.fita/installs//netcdf/intel/parallel/ins/lib -L/home/lluis.fita/installs//hdf5/1.14.3/intel/parallel/ins/lib -lnetcdf 
  -lhdf5_hl -lm -lz -lsz -lxml2 -lcurl -lhdf5'
./configure  --prefix=$NETCDF --enable-parallel-tests >& run_configure.log

Se comprueba que no hubiera ningún error en el archivo run_configure.log.

Herramientas personales