ORcompDCAO DCAO
De Wikicima
(Diferencias entre revisiones)
(Creación página de compilación en sala compus DCAO) |
(→Installation steps using modipsl) |
||
Línea 29: | Línea 29: | ||
** IOIPSL: 3379 |
** IOIPSL: 3379 |
||
** XIOS: 1043 |
** XIOS: 1043 |
||
− | * Preparing compilation environment for <code>hydra</code>. One need to add into <code>AA_make.gdef</code> specifications for <code>hydra</code> (at the end of file): |
+ | * Preparing compilation environment for <code>hydra</code>. One need to add into <code>AA_make.gdef</code> specifications for <code>DCAO_gfortran</code> (at the end of file): |
<pre> |
<pre> |
||
− | #-Q- ifort_hydra #- Global definitions for hydra, ifort |
+ | #-Q- DCAO_gfortran #- Global definitions for DCAO, mpi gfortran |
− | #-Q- ifort_hydra LIB_MPI = MPI1 |
+ | #-Q- DCAO_gfortran LIB_MPI = MPI1 |
− | #-Q- ifort_hydra LIB_MPI_BIS = MPI1 |
+ | #-Q- DCAO_gfortran LIB_MPI_BIS = MPI1 |
− | #-Q- ifort_hydra FCM_ARCH = ifort_hydra |
+ | #-Q- DCAO_gfortran FCM_ARCH = DCAO_gfortran |
− | #-Q- ifort_hydra M_K = make |
+ | #-Q- DCAO_gfortran M_K = make |
− | #-Q- ifort_hydra P_C = cpp |
+ | #-Q- DCAO_gfortran P_C = cpp |
− | #-Q- ifort_hydra P_O = -P -C -traditional $(P_P) |
+ | #-Q- DCAO_gfortran P_O = -fpreprocessed -P -C -traditional $(P_P) |
− | #-Q- ifort_hydra F_C = /usr/local/bin/mpif90 -c -cpp |
+ | #-Q- DCAO_gfortran F_C = gfortran -c -cpp |
− | #-Q- ifort_hydra #-D- MD F_D = -g |
+ | #-Q- DCAO_gfortran #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan |
− | #-Q- ifort_hydra #-D- MN F_D = |
+ | #-Q- DCAO_gfortran #-D- MN F_D = |
− | #-Q- ifort_hydra #-P- I4R4 F_P = -i4 |
+ | #-Q- DCAO_gfortran #-P- I4R4 F_P = |
− | #-Q- ifort_hydra #-P- I4R8 F_P = -i4 -r8 |
+ | #-Q- DCAO_gfortran #-P- I4R8 F_P = -fdefault-real-8 |
− | #-Q- ifort_hydra #-P- I8R8 F_P = -i8 -r8 |
+ | #-Q- DCAO_gfortran #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 |
− | #-Q- ifort_hydra F_O = -DCPP_PARA -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) -fp-model precise |
+ | #-Q- DCAO_gfortran w_w = -O3 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) |
− | #-Q- ifort_hydra F_L = /usr/local/bin/mpif90 |
+ | #-Q- DCAO_gfortran F_O = $(w_w) -J$(MODDIR) |
− | #-Q- ifort_hydra M_M = 0 |
+ | #-Q- DCAO_gfortran F_L = gfortran |
− | #-Q- ifort_hydra L_X = 0 |
+ | #-Q- DCAO_gfortran M_M = 0 |
− | #-Q- ifort_hydra L_O = |
+ | #-Q- DCAO_gfortran L_X = 0 |
− | #-Q- ifort_hydra A_C = ar -rs |
+ | #-Q- DCAO_gfortran L_O = |
− | #-Q- ifort_hydra A_G = ar -x |
+ | #-Q- DCAO_gfortran A_C = ar -rs |
− | #-Q- ifort_hydra C_C = cc -c |
+ | #-Q- DCAO_gfortran A_G = ar -x |
− | #-Q- ifort_hydra C_O = |
+ | #-Q- DCAO_gfortran C_C = cc -c |
− | #-Q- ifort_hydra C_L = cc |
+ | #-Q- DCAO_gfortran C_O = |
− | #-Q- ifort_hydra #- |
+ | #-Q- DCAO_gfortran C_L = cc |
− | #-Q- ifort_hydra NCDF_INC = /usr/local/include |
+ | #-Q- DCAO_gfortran #- |
− | #-Q- ifort_hydra NCDF_LIB = -L/usr/local/lib -lnetcdf -lnetcdff |
+ | #-Q- DCAO_gfortran NCDF_INC = /usr/include |
− | #-Q- ifort_hydra #- |
+ | #-Q- DCAO_gfortran NCDF_LIB = -L/usr/lib/x86_64-linux-gnu -lnetcdf |
+ | #-Q- DCAO_gfortran #- |
||
</pre> |
</pre> |
||
* Creation of the configuration \verb+arch+ files for the compilation of each component |
* Creation of the configuration \verb+arch+ files for the compilation of each component |
||
Línea 63: | Línea 63: | ||
** going there: |
** going there: |
||
<pre>$ cd ../modeles/XIOS/arch</pre> |
<pre>$ cd ../modeles/XIOS/arch</pre> |
||
− | ** Using CICLAD's ifort compilation as reference |
+ | ** Using generic gcc compilation as reference |
− | <pre>$ cp arch-ifort_CICLAD.fcm arch-ifort_hydra.fcm</pre> |
+ | <pre>$ cp arch-GCC_LINUX.fcm arch-DCAO_gfortran.fcm</pre> |
− | ** Adapting values (following ifort bug issue for version 12.0.3, [https://software.intel.com/en-us/forums/intel-c-compiler/topic/289446 ifort bug]): |
+ | <pre>################################################################################ |
− | <pre>%CCOMPILER /usr/local/bin/mpicc |
+ | ################### Projet XIOS ################### |
− | %FCOMPILER /usr/local/bin/mpif90 |
+ | ################################################################################ |
− | %LINKER /usr/local/bin/mpif90 -nofor-main |
||
− | %BASE_CFLAGS -std=c++0x |
+ | %CCOMPILER /usr/bin/mpicc |
− | %PROD_CFLAGS -O3 -D BOOST_DISABLE_ASSERTS |
+ | %FCOMPILER /usr/bin/mpif90 |
− | %DEV_CFLAGS -g -traceback |
+ | %LINKER /usr/bin/mpif90 -nofor-main |
− | %DEBUG_CFLAGS -DBZ_DEBUG -g -traceback -fno-inline |
||
− | %BASE_FFLAGS -D__NONE__ |
+ | %BASE_CFLAGS -ansi -w |
− | %PROD_FFLAGS -O3 |
+ | %PROD_CFLAGS -O3 -DBOOST_DISABLE_ASSERTS |
− | %DEV_FFLAGS -g -O2 -traceback |
+ | %DEV_CFLAGS -g -O2 |
− | %DEBUG_FFLAGS -g -traceback |
+ | %DEBUG_CFLAGS -g |
+ | |||
+ | %BASE_FFLAGS -D__NONE__ -ffree-line-length-none |
||
+ | %PROD_FFLAGS -O3 |
||
+ | %DEV_FFLAGS -g -O2 |
||
+ | %DEBUG_FFLAGS -g |
||
%BASE_INC -D__NONE__ |
%BASE_INC -D__NONE__ |
||
− | %BASE_LD -lstdc++ |
+ | %BASE_LD -lstdc++ |
− | %CPP /usr/local/bin/mpicc -EP |
+ | %CPP cpp |
− | %FPP cpp -P |
+ | %FPP cpp -P |
%MAKE gmake</pre> |
%MAKE gmake</pre> |
||
** Getting paths: |
** Getting paths: |
||
− | <pre>$ cp arch-ifort_CICLAD.path arch-ifort_hydra.path</pre> |
+ | <pre>$ cp arch-GCC_LINUX.path arch-DCAO_gfortran.path</pre> |
** Adapting values: |
** Adapting values: |
||
− | <pre>NETCDF_INCDIR="-I/usr/local/include" |
+ | <pre>NETCDF_INCDIR="-I $NETCDF_INC_DIR" |
− | NETCDF_LIBDIR="-L/usr/local/lib" |
+ | NETCDF_LIBDIR="-L $NETCDF_LIB_DIR" |
− | NETCDF_LIB="-lnetcdf -lnetcdff" |
+ | NETCDF_LIB="-lnetcdff -lnetcdf" |
− | MPI_INCDIR="" |
+ | |
− | MPI_LIBDIR="" |
+ | MPI_INCDIR="" |
− | MPI_LIB="" |
+ | MPI_LIBDIR="" |
− | HDF5_INCDIR="" |
+ | MPI_LIB="-lcurl" |
− | HDF5_LIBDIR="" |
+ | |
− | HDF5_LIB=""</pre> |
+ | HDF5_INCDIR="-I $HDF5_INC_DIR" |
+ | HDF5_LIBDIR="-L $HDF5_LIB_DIR" |
||
+ | HDF5_LIB="-lhdf5_hl -lhdf5 -lhdf5 -lz" |
||
+ | |||
+ | #OASIS_INCDIR="-I$PWD/../../oasis3-mct/BLD/build/lib/psmile.MPI1" |
||
+ | #OASIS_LIBDIR="-L$PWD/../../oasis3-mct/BLD/lib" |
||
+ | #OASIS_LIB="-lpsmile.MPI1 -lscrip -lmct -lmpeu"</pre> |
||
+ | |||
+ | ** Getting environment: |
||
+ | <pre>$ cp arch-GCC_LINUX.env arch-DCAO_gfortran.env</pre> |
||
+ | |||
+ | ** Adapting values: |
||
+ | <pre>export HDF5_INC_DIR=/usr/include |
||
+ | export HDF5_LIB_DIR=/usr/lib/x86_64-linux-gnu |
||
+ | |||
+ | export NETCDF_INC_DIR=/usr/include |
||
+ | export NETCDF_LIB_DIR=/usr/lib/x86_64-linux-gnu</pre> |
||
+ | |||
* ORCHIDEE |
* ORCHIDEE |
||
** Going there |
** Going there |
||
<pre>$ cd ../../ORCHIDEE/arch</pre> |
<pre>$ cd ../../ORCHIDEE/arch</pre> |
||
− | ** Using CICLAD's ifort compilation as reference |
+ | ** Using gfotran compilation as reference |
− | <pre>$ cp arch-ifort_CICLAD.fcm arch-ifort_hydra.fcm</pre> |
+ | <pre>$ cp arch-gfortran.fcm arch-DCAO_gfortran.fcm</pre> |
** Adapting values: |
** Adapting values: |
||
− | <pre>%COMPILER /usr/local/bin/mpif90 |
+ | <pre>%COMPILER /usr/bin/mpicc |
− | %LINK /usr/local/bin/mpif90 |
+ | %LINK /usr/bin/mpif90 |
− | %AR ar |
+ | %AR ar |
− | %MAKE gmake |
+ | %MAKE make |
− | %FPP_FLAGS -P -traditional |
+ | %FPP_FLAGS -P -C -traditional -nostdinc |
%FPP_DEF |
%FPP_DEF |
||
− | %BASE_FFLAGS -i4 -r8 -fp-model precise |
+ | %BASE_FFLAGS -fdefault-real-8 |
− | %PROD_FFLAGS -O3 |
+ | %PROD_FFLAGS -O3 -funroll-all-loops |
− | %DEV_FFLAGS -g -O2 -traceback -fp-stack-check -ftrapuv -check bounds |
+ | %DEV_FFLAGS -O |
− | %DEBUG_FFLAGS -fpe0 -O0 -g -traceback -fp-stack-check -ftrapuv -check bounds -check all |
+ | %DEBUG_FFLAGS -ffpe-trap=invalid,zero,overflow -Wall -fbounds-check -g3 -O0 -fstack-protector-all |
− | %MPI_FFLAGS |
+ | %MPI_FFLAGS |
%OMP_FFLAGS -openmp -openmp-threadprivate compat |
%OMP_FFLAGS -openmp -openmp-threadprivate compat |
||
− | %BASE_LD -i4 -r8 |
+ | %BASE_LD |
− | %MPI_LD |
+ | %MPI_LD |
%OMP_LD -openmp</pre> |
%OMP_LD -openmp</pre> |
||
** getting paths |
** getting paths |
||
− | <pre>$ cp arch-ifort_CICLAD.path arch-ifort_hydra.path</pre> |
+ | <pre>$ cp arch-gfortran.path arch-DCAO_gfortran.path</pre> |
** Adapting values: |
** Adapting values: |
||
− | <pre>NETCDF_LIBDIR="/usr/local/lib -lnetcdf -lnetcdff -lstdc++" |
+ | <pre>NETCDF_INCDIR="-I/usr/include" |
− | NETCDF_INCDIR=/usr/local/include |
+ | NETCDF_LIBDIR="-L/usr/lib/x86_64-linux-gnu" |
− | IOIPSL_INCDIR=../../../lib |
+ | NETCDF_LIB="-lnetcdf -lnetcdff" |
− | IOIPSL_LIBDIR=../../../lib |
+ | |
− | XIOS_INCDIR=${ORCHDIR}/../XIOS/inc |
+ | IOIPSL_INCDIR="-I${ORCHDIR}/../../lib -I${ORCHDIR}/../IOIPSL/inc" |
− | XIOS_LIBDIR="${ORCHDIR}/../XIOS/lib -lxios"</pre> |
+ | IOIPSL_LIBDIR="-L${ORCHDIR}/../../lib -L${ORCHDIR}/../IOIPSL/lib" |
+ | IOIPSL_LIB="-lioipsl" |
||
+ | |||
+ | XIOS_INCDIR="-I${ORCHDIR}/../XIOS/inc" |
||
+ | XIOS_LIBDIR="-L${ORCHDIR}/../XIOS/lib" |
||
+ | XIOS_LIB="-lxios"</pre> |
||
+ | |||
** Going back to <code>util</code> to proceed |
** Going back to <code>util</code> to proceed |
||
<pre>$ cd ../../../util</pre> |
<pre>$ cd ../../../util</pre> |
||
** Installing the code: |
** Installing the code: |
||
− | <pre>$ ./ins_make -t ifort_hydra >& run_ins_make.log</pre> |
+ | <pre>$ ./ins_make -t DCAO_gfortran >& run_ins_make.log</pre> |
** Going there: |
** Going there: |
||
<pre>$ cd ../config/ORCHIDEE_OL</pre> |
<pre>$ cd ../config/ORCHIDEE_OL</pre> |
||
Línea 137: | Línea 137: | ||
** Compiling: |
** Compiling: |
||
<pre>$ gmake >& run_gmake.log</pre> |
<pre>$ gmake >& run_gmake.log</pre> |
||
+ | <pre>$ gmake without_xios >& run_gmake.log</pre> |
||
** Checking if everything went fine: |
** Checking if everything went fine: |
||
<pre>$ cat -n run_gmake.log | grep Error |
<pre>$ cat -n run_gmake.log | grep Error |
Revisión de 11:16 28 jun 2019
Compilation at DCAO's computational classroom
Installation steps using modipsl
- Go to the installation directory
[INSTALLDIR]
(for hydra[INSTALLDIR]=/share
)
$ cd [INSTALLDIR]
- Getting the IPSL-models suite
$ svn co https://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl
- Going to the
util
folder:
$ cd modipsl/util
- Getting the off-line version of ORCHIDEE
$ ./model ORCHIDEE_trunk >& run_get_model.log
- We got some issues with the ports, thus, it needs to be manually done:
$ cd ../modeles
- Getting IOIPSL:
$ mkdir -p IOIPSL/src $ svn co https://forge.ipsl.jussieu.fr/igcmg/svn/IOIPSL/tags/v2_2_2/src IOIPSL/src
- Getting XIOS library
$ svn co -r 1043 https://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk XIOS
- By the end one should have:
$ ls IOIPSL ORCHIDEE XIOS
- Going back to
util
to proceed
$ cd ../util
- These are the final versions of the codes
- ORCHIDEE: 4622
- ORCHIDEE_OL: 4622
- IOIPSL: 3379
- XIOS: 1043
- Preparing compilation environment for
hydra
. One need to add intoAA_make.gdef
specifications forDCAO_gfortran
(at the end of file):
#-Q- DCAO_gfortran #- Global definitions for DCAO, mpi gfortran #-Q- DCAO_gfortran LIB_MPI = MPI1 #-Q- DCAO_gfortran LIB_MPI_BIS = MPI1 #-Q- DCAO_gfortran FCM_ARCH = DCAO_gfortran #-Q- DCAO_gfortran M_K = make #-Q- DCAO_gfortran P_C = cpp #-Q- DCAO_gfortran P_O = -fpreprocessed -P -C -traditional $(P_P) #-Q- DCAO_gfortran F_C = gfortran -c -cpp #-Q- DCAO_gfortran #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan #-Q- DCAO_gfortran #-D- MN F_D = #-Q- DCAO_gfortran #-P- I4R4 F_P = #-Q- DCAO_gfortran #-P- I4R8 F_P = -fdefault-real-8 #-Q- DCAO_gfortran #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 #-Q- DCAO_gfortran w_w = -O3 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) #-Q- DCAO_gfortran F_O = $(w_w) -J$(MODDIR) #-Q- DCAO_gfortran F_L = gfortran #-Q- DCAO_gfortran M_M = 0 #-Q- DCAO_gfortran L_X = 0 #-Q- DCAO_gfortran L_O = #-Q- DCAO_gfortran A_C = ar -rs #-Q- DCAO_gfortran A_G = ar -x #-Q- DCAO_gfortran C_C = cc -c #-Q- DCAO_gfortran C_O = #-Q- DCAO_gfortran C_L = cc #-Q- DCAO_gfortran #- #-Q- DCAO_gfortran NCDF_INC = /usr/include #-Q- DCAO_gfortran NCDF_LIB = -L/usr/lib/x86_64-linux-gnu -lnetcdf #-Q- DCAO_gfortran #-
- Creation of the configuration \verb+arch+ files for the compilation of each component
- XIOS
- going there:
$ cd ../modeles/XIOS/arch
- Using generic gcc compilation as reference
$ cp arch-GCC_LINUX.fcm arch-DCAO_gfortran.fcm
################################################################################ ################### Projet XIOS ################### ################################################################################ %CCOMPILER /usr/bin/mpicc %FCOMPILER /usr/bin/mpif90 %LINKER /usr/bin/mpif90 -nofor-main %BASE_CFLAGS -ansi -w %PROD_CFLAGS -O3 -DBOOST_DISABLE_ASSERTS %DEV_CFLAGS -g -O2 %DEBUG_CFLAGS -g %BASE_FFLAGS -D__NONE__ -ffree-line-length-none %PROD_FFLAGS -O3 %DEV_FFLAGS -g -O2 %DEBUG_FFLAGS -g %BASE_INC -D__NONE__ %BASE_LD -lstdc++ %CPP cpp %FPP cpp -P %MAKE gmake
- Getting paths:
$ cp arch-GCC_LINUX.path arch-DCAO_gfortran.path
- Adapting values:
NETCDF_INCDIR="-I $NETCDF_INC_DIR" NETCDF_LIBDIR="-L $NETCDF_LIB_DIR" NETCDF_LIB="-lnetcdff -lnetcdf" MPI_INCDIR="" MPI_LIBDIR="" MPI_LIB="-lcurl" HDF5_INCDIR="-I $HDF5_INC_DIR" HDF5_LIBDIR="-L $HDF5_LIB_DIR" HDF5_LIB="-lhdf5_hl -lhdf5 -lhdf5 -lz" #OASIS_INCDIR="-I$PWD/../../oasis3-mct/BLD/build/lib/psmile.MPI1" #OASIS_LIBDIR="-L$PWD/../../oasis3-mct/BLD/lib" #OASIS_LIB="-lpsmile.MPI1 -lscrip -lmct -lmpeu"
- Getting environment:
$ cp arch-GCC_LINUX.env arch-DCAO_gfortran.env
- Adapting values:
export HDF5_INC_DIR=/usr/include export HDF5_LIB_DIR=/usr/lib/x86_64-linux-gnu export NETCDF_INC_DIR=/usr/include export NETCDF_LIB_DIR=/usr/lib/x86_64-linux-gnu
- ORCHIDEE
- Going there
$ cd ../../ORCHIDEE/arch
- Using gfotran compilation as reference
$ cp arch-gfortran.fcm arch-DCAO_gfortran.fcm
- Adapting values:
%COMPILER /usr/bin/mpicc %LINK /usr/bin/mpif90 %AR ar %MAKE make %FPP_FLAGS -P -C -traditional -nostdinc %FPP_DEF %BASE_FFLAGS -fdefault-real-8 %PROD_FFLAGS -O3 -funroll-all-loops %DEV_FFLAGS -O %DEBUG_FFLAGS -ffpe-trap=invalid,zero,overflow -Wall -fbounds-check -g3 -O0 -fstack-protector-all %MPI_FFLAGS %OMP_FFLAGS -openmp -openmp-threadprivate compat %BASE_LD %MPI_LD %OMP_LD -openmp
- getting paths
$ cp arch-gfortran.path arch-DCAO_gfortran.path
- Adapting values:
NETCDF_INCDIR="-I/usr/include" NETCDF_LIBDIR="-L/usr/lib/x86_64-linux-gnu" NETCDF_LIB="-lnetcdf -lnetcdff" IOIPSL_INCDIR="-I${ORCHDIR}/../../lib -I${ORCHDIR}/../IOIPSL/inc" IOIPSL_LIBDIR="-L${ORCHDIR}/../../lib -L${ORCHDIR}/../IOIPSL/lib" IOIPSL_LIB="-lioipsl" XIOS_INCDIR="-I${ORCHDIR}/../XIOS/inc" XIOS_LIBDIR="-L${ORCHDIR}/../XIOS/lib" XIOS_LIB="-lxios"
- Going back to
util
to proceed
- Going back to
$ cd ../../../util
- Installing the code:
$ ./ins_make -t DCAO_gfortran >& run_ins_make.log
- Going there:
$ cd ../config/ORCHIDEE_OL
- No need to loading the right environment since in
hydra
its by default - Compiling XIOS in sequential (in
Makefile
, adding no-parallel compilation):
- No need to loading the right environment since in
./make_xios --netcdf_lib netcdf4_seq (...)
- Compiling:
$ gmake >& run_gmake.log
$ gmake without_xios >& run_gmake.log
- Checking if everything went fine:
$ cat -n run_gmake.log | grep Error $ cat -n run_gmake.log | grep undefined $ ls ../../bin/ orchidee_ol xios_server.exe