ORcompDCAO DCAO
De Wikicima
Revisión a fecha de 12:22 10 jul 2019; Lluis.fita (Discusión | contribuciones)
Compilation at DCAO's computational classroom
Contenido |
Installation steps using modipsl
- Required packages:
# apt-get install subversion git libnetcdf-dev libnetcdff-dev make ncview ksh csh mpi mpich vim python-matplotlib python-matplotlib-data python-matplotlib-doc python-mpltoolkits.basemap python-mpltoolkits.basemap-data dvipng python-netcdf4
- And fake gmake (Ubunutu)
ln -s /usr/bin/make /usr/bin/gmake
- Go to the installation directory
[INSTALLDIR]
(for hydra[INSTALLDIR]=/home/administrador/installOR
)
$ 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
- 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: 6094
- 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
arch
files for the compilation of each component
XIOS
- Creation of 'fcm' compilation environtment file for
DCAO_gfortran
- Creation of 'fcm' compilation environtment file for
$ vim ../modeles/XIOS/arch/arch-DCAO_gfortran.fcm
- values:
################################################################################ ################### Projet XIOS ################### ################################################################################ %CCOMPILER /usr/bin/mpicc %FCOMPILER /usr/bin/mpif90 %LINKER /usr/bin/mpif90 -nofor-main %BASE_CFLAGS -ansi -w -D_GLIBCXX_USE_CXX11_ABI=0 %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
- Creation of 'path' compilation environtment file for
DCAO_gfortran
- Creation of 'path' compilation environtment file for
$ vim ../modeles/XIOS/arch/arch-DCAO_gfortran.path
- 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"
- Creation of 'env' compilation environtment file for
DCAO_gfortran
- Creation of 'env' compilation environtment file for
$ vim ../modeles/XIOS/arch/arch-DCAO_gfortran.env
- 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
- Creation of 'fcm' compilation environtment file for
DCAO_gfortran
- Creation of 'fcm' compilation environtment file for
$ vim ../modeles/ORCHIDEE/arch/arch-DCAO_gfortran.fcm
- 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
- Creation of 'path' compilation environtment file for
DCAO_gfortran
- Creation of 'path' compilation environtment file for
$ vim ../modeles/ORCHIDEE/arch/arch-DCAO_gfortran.path
- 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"
Building & compiling
- 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 (we must compile without XIOS, otherwise it is not working):
$ 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/ orchideedriver orchidee_ol