ORcompDCAO DCAO

De Wikicima
Saltar a: navegación, buscar

Compilation at DCAO's computational classroom

Contenido

Installation steps using modipsl

  • Required packages:
# apt-get install subversion libnetcdf-dev libnetcdff-dev make ncview ksh csh mpi mpich vim
  • 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 >& 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: 6094
    • ORCHIDEE_OL: 4622
    • IOIPSL: 3379
    • XIOS: 1043
  • Preparing compilation environment for hydra. One need to add into AA_make.gdef specifications for DCAO_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

    • 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 -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
    • 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"

Building & compiling

    • Going back to util to proceed
$ 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):
./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 
Herramientas personales