RegIPSL/CompHDF NC
(→netcdf-Fortran) |
|||
Línea 6: | Línea 6: | ||
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 |
</pre> |
</pre> |
||
Línea 14: | Línea 14: | ||
<pre style="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> |
||
Línea 41: | Línea 41: | ||
Si no hubo problemas tendríamos que tener en <code>$HDF5/bin</code> (sólo cómo ejemplo): |
Si no hubo problemas tendríamos que tener en <code>$HDF5/bin</code> (sólo cómo ejemplo): |
||
<pre style="shell"> |
<pre style="shell"> |
||
− | $ cd $HDF5/bin |
+ | cd $HDF5/bin |
− | $ ls |
+ | ls |
h5clear h5format_convert h5pcc h5repart |
h5clear h5format_convert h5pcc h5repart |
||
h5copy h5fuse.sh h5perf h5stat |
h5copy h5fuse.sh h5perf h5stat |
||
Línea 59: | Línea 59: | ||
<pre style="shell"> |
<pre style="shell"> |
||
− | $ cd $INSWORKDIR |
+ | cd $INSWORKDIR |
− | $ mkdir -p netcdf/intel/parallel |
+ | mkdir -p netcdf/intel/parallel |
− | $ cd netcdf/intel/parallel |
+ | cd netcdf/intel/parallel |
− | $ git clone https://github.com/Unidata/netcdf-c.git |
+ | git clone https://github.com/Unidata/netcdf-c.git |
− | $ cd netcdf-c |
+ | cd netcdf-c |
</pre> |
</pre> |
||
Se instalarán las librerías en <code>NETCDF=$INSWORKDIR/netcdf/intel/parallel/ins</code> |
Se instalarán las librerías en <code>NETCDF=$INSWORKDIR/netcdf/intel/parallel/ins</code> |
||
<pre style="shell"> |
<pre style="shell"> |
||
− | $ mkdir $INSWORKDIR/netcdf/intel/parallel/ins |
+ | mkdir $INSWORKDIR/netcdf/intel/parallel/ins |
− | $ export NETCDF=$INSWORKDIR/netcdf/intel/parallel/ins |
+ | export NETCDF=$INSWORKDIR/netcdf/intel/parallel/ins |
− | $ export CC=mpicc |
+ | export CC=mpicc |
− | $ export LDFLAGS=-L$HDF5/lib |
+ | export LDFLAGS=-L$HDF5/lib |
− | $ export LIBS=-lhdf5 |
+ | export LIBS=-lhdf5 |
− | $ export CPPFLAGS=-I$HDF5/include |
+ | export CPPFLAGS=-I$HDF5/include |
− | $ autoreconf -if |
+ | autoreconf -if |
− | $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HDF5/lib |
+ | export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HDF5/lib |
− | $ ./configure --prefix=$NETCDF --enable-parallel-tests >& run_configure.log |
+ | ./configure --prefix=$NETCDF --enable-parallel-tests >& run_configure.log |
</pre> |
</pre> |
||
Se mira si la configuración de compilación fue bien (mirar contenido en <code>run_configure.log</code>) y se compila |
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"> |
<pre style="shell"> |
||
− | $ make >& run_make.log |
+ | 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 |
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"> |
<pre style="shell"> |
||
− | $ make install >& run_make_ins.log |
+ | make install >& run_make_ins.log |
</pre> |
</pre> |
||
Para verificar que todo salió bien miramos en <code>$NETCDF/bin</code> |
Para verificar que todo salió bien miramos en <code>$NETCDF/bin</code> |
||
<pre type="shell"> |
<pre type="shell"> |
||
− | $ cd $NETCDF/bin |
+ | cd $NETCDF/bin |
− | $ ls |
+ | ls |
nc4print nc-config nccopy ncdump ncgen ncgen3 ocprint |
nc4print nc-config nccopy ncdump ncgen ncgen3 ocprint |
||
</pre> |
</pre> |
||
Línea 101: | Línea 101: | ||
Agarramos el código. |
Agarramos el código. |
||
<pre style="shell"> |
<pre style="shell"> |
||
− | $ wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.6.1.tar.gz |
+ | wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.6.1.tar.gz |
</pre> |
</pre> |
||
Línea 107: | Línea 107: | ||
<pre style="shell"> |
<pre style="shell"> |
||
− | $ cd $INSWORKDIR/netcdf/intel/parallel/ |
+ | cd $INSWORKDIR/netcdf/intel/parallel/ |
− | $ tar xvfz ../../v4.6.1.tar.gz |
+ | tar xvfz ../../v4.6.1.tar.gz |
− | $ cd netcdf-fortran-4.6.1/ |
+ | cd netcdf-fortran-4.6.1/ |
− | $ export FC=mpif90 |
+ | export FC=mpif90 |
− | $ export LDFLAGS=-L$NETCDF/lib |
+ | export LDFLAGS=-L$NETCDF/lib |
− | $ export CPPFLAGS=-I$NETCDF/include |
+ | export CPPFLAGS=-I$NETCDF/include |
− | $ export LIBS=-lnetcdf |
+ | export LIBS=-lnetcdf |
− | $ ./configure --prefix=$NETCDF --enable-parallel-tests >& run_configure.log |
+ | ./configure --prefix=$NETCDF --enable-parallel-tests >& run_configure.log |
</pre> |
</pre> |
||
Revisión de 09:46 23 nov 2023
Contenido |
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/<code>):
Compilaremos con intel, así que cargamos el entorno correspondiente:
source /opt/load-libs.sh 1
HDF5
Código del HDF5 obtenido de la página HDF5source (archivo <code>$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
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
.
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
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
cd $INSWORKDIR/netcdf/intel/parallel/ tar xvfz ../../v4.6.1.tar.gz cd netcdf-fortran-4.6.1/ export FC=mpif90 export LDFLAGS=-L$NETCDF/lib export CPPFLAGS=-I$NETCDF/include export LIBS=-lnetcdf ./configure --prefix=$NETCDF --enable-parallel-tests >& run_configure.log
Se comprueba que no hubiera ningún error en el archivo run_configure.log
.