Difference between revisions of "Installing CCSM3"

From oldwiki.scinet.utoronto.ca
Jump to navigation Jump to search
m
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
{{OutOfDate}}
 
This page is mostly a record of the steps needed to install CCSM3 on the General Purpose Cluster (GPC) (Linux). This may be useful for running the model through it's initialization step, if for example, you want to change the boundary conditions and need to see if the model initializes with the new boundary conditions.
 
This page is mostly a record of the steps needed to install CCSM3 on the General Purpose Cluster (GPC) (Linux). This may be useful for running the model through it's initialization step, if for example, you want to change the boundary conditions and need to see if the model initializes with the new boundary conditions.
  
Line 53: Line 54:
  
 
batch.linux.gpc
 
batch.linux.gpc
Mirrored the other linux batch config file, you may need to change in your run script after the model is built
+
Mirrored the other linux batch config file, you may need to change in your run script after the model is built to run on torque PBS properly
  
 
  #! /bin/csh -f
 
  #! /bin/csh -f
Line 82: Line 83:
 
  setenv INC_MPI $SCINET_MPI_INC
 
  setenv INC_MPI $SCINET_MPI_INC
 
  setenv SCRATCH /scratch/$USER/
 
  setenv SCRATCH /scratch/$USER/
+
 
 
  if !($?SCRATCH) then
 
  if !($?SCRATCH) then
 
   set SCRATCH = $HOME
 
   set SCRATCH = $HOME
 
   echo "## Warning: SCRATCH not defined in system environment. Set SCRATCH to be $HOME";
 
   echo "## Warning: SCRATCH not defined in system environment. Set SCRATCH to be $HOME";
 
  endif
 
  endif
+
 
 
  setenv EXEROOT            $SCRATCH/exe/$CASE
 
  setenv EXEROOT            $SCRATCH/exe/$CASE
 
  setenv RUNROOT            $EXEROOT
 
  setenv RUNROOT            $EXEROOT
 
  setenv GMAKE_J            1  
 
  setenv GMAKE_J            1  
 
+
 
  #####set the path for netcdf module: netcdf.mod
 
  #####set the path for netcdf module: netcdf.mod
 
  if(! $?NETCDF_MOD) then
 
  if(! $?NETCDF_MOD) then
Line 97: Line 98:
 
     ### setenv NETCDF_MOD /usr/local/lib64/r4i4
 
     ### setenv NETCDF_MOD /usr/local/lib64/r4i4
 
  endif
 
  endif
+
 
+
 
 
  # -------------------------------------------------------------------------
 
  # -------------------------------------------------------------------------
 
  # Environment variables for prestaging input data - edit anytime during run
 
  # Environment variables for prestaging input data - edit anytime during run
Line 140: Line 141:
 
My .bashrc has:
 
My .bashrc has:
  
if [ "${HOST}" == "AIX" ]; then
+
if [ "${HOST}" == "AIX" ]; then
 
   # do things for the TCS machine
 
   # do things for the TCS machine
 
   :
 
   :
else
+
else
 
   # do things for the GPC machine
 
   # do things for the GPC machine
 
   module load intel intelmpi gcc Xlibraries netcdf python parallel-netcdf
 
   module load intel intelmpi gcc Xlibraries netcdf python parallel-netcdf
Line 149: Line 150:
 
   export PATH="/home/$LOGNAME/bin:$PATH:/scinet/gpc/bin"
 
   export PATH="/home/$LOGNAME/bin:$PATH:/scinet/gpc/bin"
 
   :
 
   :
fi
+
fi
 
 
My PATH is:
 
/home/guido/bin:/scinet/gpc/Libraries/parallel-netcdf-1.1.1/bin:/scinet/gpc/tools/Python/Python262/bin:/scinet/gpc/compilers/gcc/bin/:/scinet/gpc/intel/impi/4.0.0.027/bin64/:/scinet/gpc/intel/Compiler/11.1/072/bin/intel64/:/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/lpp/mmfs/bin:/opt/torque/bin:/opt/torque/sbin:/usr/lpp/mmfs/bin:/opt/torque/bin:/opt/torque/sbin:/scinet/gpc/x11/bin:/scinet/gpc/Libraries/netcdf-4.0.1_nc3_intel/bin:/scinet/gpc/bin
 

Latest revision as of 16:18, 17 June 2013

WARNING: The last edit of this page is over two years old. The information on this page may be out-of-date.

This page is mostly a record of the steps needed to install CCSM3 on the General Purpose Cluster (GPC) (Linux). This may be useful for running the model through it's initialization step, if for example, you want to change the boundary conditions and need to see if the model initializes with the new boundary conditions.

The first several lines of the Macros.Linux (configuration) file (Using Intel Fortran Compilers):

#===============================================================================
# CVS $Id: Macros.Linux,v 1.11.2.4 2007/01/17 05:17:49 tcraig Exp $
# CVS $Source: /fs/cgd/csm/models/CVS.REPOS/shared/bld/Macros.Linux,v $
# CVS $Name: ccsm3_0_1_beta24 $
#===============================================================================
### Makefile macros for "Linux", supports portland + gnu 
# Makefile macros for "Linux", supports Intel compilers + gnu 
#===============================================================================  

INCLDIR    := -I. -I$(FPATH) -I$(SCINET_NETCDF_INC) -I$(INCROOT) -I$(INC_MPI) -I$(NETCDF_MOD)

#SLIBS      := -L$(LIB_NETCDF) -lnetcdf  -llapack -lblas
#SLIBS      := -L$(LIBRARY_PATH) -lmkl_lapack -lmkl_em64t -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -L/usr/local/lib -lnetcdf
SLIBS      := -L$(SCINET_NETCDF_LIB) -lnetcdf

CPP        := NONE
CPPFLAGS   :=
CPPDEFS    := -DLINUX -DFORTRANUNDERSCORE -DLINUX  -DNO_SHR_VMATH
CPPFLAGS   := -DLINUX -DNO_SHR_VMATH -DINTEL_COMPILER -Df2cFortran
FC         := mpif90
#FFLAGS     := -c -r8 -i4 -Kieee -Mrecursive -Mdalign -Mextend
#FFLAGS     := -c -real-size 64 -integer-size 32 -align all -fltconsistency -recursive -extend_source 132
## This compiles on intel x86_64
FFLAGS     := -O0 -cpp -c -real-size 64 -integer-size 32 -align all -fltconsistency -save   

#FFLAGS     := -c -r8 -i4 -autodouble -align all -fltconsistency -recursive -fast
#FFLAGS     := -cpp -c -r8 -i4 -132 -autodouble -convert big_endian -fp-model precise -prec-div -prec-sqrt -recursive -align all -fltconsistency 
CC         := mpicc
CFLAGS     := -c -DUSE_GCC

FIXEDFLAGS := 
FREEFLAGS  := -free
MOD_SUFFIX := mod
LD         := $(FC)
AR         := ar
ULIBS      := -L$(LIBROOT) -lesmf -lmct -lmpeu -lmph
FLIBS      := -L/usr/local/lib


In /project/ccsm/ccsm3_current/scripts/ccsm_utils/Machines

Modified these files:

run.linux.gpc added:

mpirun -np $NTASKS[1] ./$COMPONENTS[1] : -np $NTASKS[2] ./$COMPONENTS[2] : -np $NTASKS[3] ./$COMPONENTS[3] : -np $NTASKS[4] ./$COMPONENTS[4] : -np $NTASKS[5] ./$COMPONENTS[5]


batch.linux.gpc Mirrored the other linux batch config file, you may need to change in your run script after the model is built to run on torque PBS properly

#! /bin/csh -f
#===============================================================================
#  This is a CCSM batch job script for $mach
#===============================================================================
## BATCH INFO
#PBS -N ${jobname}
#PBS -q ${qname}
##PBS -l nodes=${nodes}:ib:ppn=${tasks}
#PBS -l walltime=${tlimit}
#PBS -r n
#PBS -j oe
#PBS -k oe
#PBS -S /bin/csh -V
 
limit coredumpsize 1000000
limit stacksize unlimited


env.linux.gpc

# General machine specific environment variables  - edit before the initial build
# -------------------------------------------------------------------------

setenv LIB_NETCDF $SCINET_NETCDF_LIB
setenv INC_NETCDF $SCINET_NETCDF_INC
setenv INC_MPI $SCINET_MPI_INC
setenv SCRATCH /scratch/$USER/
 
if !($?SCRATCH) then
  set SCRATCH = $HOME
  echo "## Warning: SCRATCH not defined in system environment. Set SCRATCH to be $HOME";
endif
 
setenv EXEROOT             $SCRATCH/exe/$CASE
setenv RUNROOT             $EXEROOT
setenv GMAKE_J             1 

#####set the path for netcdf module: netcdf.mod
if(! $?NETCDF_MOD) then
   ##### user need to set this variable.
   ### setenv NETCDF_MOD /usr/local/lib64/r4i4
endif
 
 
# -------------------------------------------------------------------------
# Environment variables for prestaging input data - edit anytime during run
# -------------------------------------------------------------------------  

setenv DIN_LOC_ROOT        /project/ccsm/inputdata
setenv DIN_LOC_ROOT_USER   /project/ccsm/inputdata_user


Modified check_machine to include gpc:

/project/ccsm/ccsm3_current/scripts/ccsm_utils/Tools/check_machine


Changed:

/project/ccsm/ccsm3_current/scripts/ccsm_utils/Components/esmf.buildlib

diff esmf.buildlib esmf.buildlib~

24c24
< if ($OS == 'Linux')        setenv ESMF_ARCH linux_intel
---
> if ($OS == 'Linux')        setenv ESMF_ARCH linux_pgi

Edit /project/ccsm/ccsm3_current/scripts/ccsm_utils/Components/mct.buildlib

MCT configure wants to grab gfortran because of the PATH order

if ( `uname` == "Linux" ) then
    setenv FC mpif90
endif

Finally make sure the following modules are loaded: intel, intelmpi, netcdf4.0.1_nc3, gcc

I have the following set on GPC:

 Currently Loaded Modulefiles:
 1) intel/intel-v11.1.072     3) gcc/4.4.0                 5) netcdf/4.0.1_nc3_intel    7) parallel-netcdf/1.1.1
 2) intelmpi/impi-4.0.0.027   4) Xlibraries/X11-64         6) python/2.6.2

My .bashrc has:

if [ "${HOST}" == "AIX" ]; then
 # do things for the TCS machine
 :
else
 # do things for the GPC machine
 module load intel intelmpi gcc Xlibraries netcdf python parallel-netcdf
 export MACH="gpc"
 export PATH="/home/$LOGNAME/bin:$PATH:/scinet/gpc/bin"
 :
fi