Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

Running CESM/WACCM on Pleiades (NAS)

This thread is devoted to issues related to running CESM/WACCM on the Pleiades cluster at NASA's Advanced Supercomputing (NAS) Division. Scripts included with the released version of CESM are designed to build and run on Pleiades out of the box.

In this post, I am posting fixes for to issues we've run in to running the current release (CESM1.0.2) on Pleiades. The first has prevented some users from building CESM on Pleiades. The second relates to the long-term archiving script. Both issues should be addressed in future releases.

1) "Catastrophic disk failure"

The CESM1.0.2 scripts build CESM with Intel Fortran (ifort) version 10.1. In February, NAS moved to a new NFS server for Pleiades. This caused some file inode numbers to grow larger than 2^32. The Intel 10.x compilers are not able to compile files with large inode numbers and will fail with Catastrophic errors, or the link step will fail with Internal Compiler errors. FYI, You can get the inode number
for a directory with the command:


Code:
ls -ldi directory_name


and look in the first column. Similarly, you can get the inode numbers for your files with:


Code:
ls -li


The simple solution is to upgrade to one of the Intel 11.x compilers. Do do so, modify the env_mach_specific file in your case directory. Replace the following line:


Code:
module load comp/intel/10.1.021_64 mpi-mvapich2/1.4.1/intel netcdf/4.0-i10.1 nas


with


Code:
module load comp/intel/11.0.069_64 mpi-mvapich2/1.4.1/intel netcdf/4.0-i10.1 nas


Then modify your Macros.pleiades or Macros.pleiades_wes file. Move the -132 from the FFLAGS line to the FIXEDFLAGS line.

You can now build the model with ifort 11.

2) Long-term archiving

The long-term archiving scripts move output from the short-term archive directory on /nobackup/$USER to the mass store system on lou. However, the scripts in the release fail to delete the files from the short-term archive after they have been copied to lou. Instead, the file remain in tempdirs in the short-term archive.

To fix this, go to your source code directory and modify the file scripts/ccsm_utils/Tools/ccsm_mswrite. Look for this section:


Code:
# If NAS pleiades at NASA/AMES
if( ${MACH} == "pleiades" | ${MACH} == "pleiades_wes" ) then
  set myld = `pwd`
  echo "ccsm_mswrite: ssh -q bridge2 scp -q ${myld}/${lf} lou:${rdf} "
  ssh -q bridge2 "scp -q ${myld}/${lf} lou:${rdf}"
  exit
endif


Modify this section by adding several lines after the "ssh -q bridge2..." line:


Code:
# If NAS pleiades at NASA/AMES
if( ${MACH} == "pleiades" | ${MACH} == "pleiades_wes" ) then
  set myld = `pwd`
  echo "ccsm_mswrite: ssh -q bridge2 scp -q ${myld}/${lf} lou:${rdf} "
  ssh -q bridge2 "scp -q ${myld}/${lf} lou:${rdf}"

  sleep 5

  echo "$UTILROOT/Tools/ccsm_msread ${rdf} checkmssfile"
  $UTILROOT/Tools/ccsm_msread ${rdf} checkmssfile
  if (-e checkmssfile) then
    echo "cmp -s ${myld}/${lf} checkmssfile"
    cmp -s ${myld}/${lf} checkmssfile
    if ($status == 0) then
       echo rm ${myld}/${lf}
       rm -f ${myld}/${lf}
       rm -f checkmssfile
    else
       echo archiving FAILED for file ${myld}/${lf}
    endif
  endif

  exit
endif


Files should now be deleted after archiving.
 
Rather than copying all of the CESM input data to your own /nobackup directory on Pleiades, you may want to use the input data we already have stored there.

To do this, edit env_run.xml in your case directory. Change /nobackup/$CCSMUSER/ccsmdata/inputdata to /nobackup/mjmills2/ccsmdata/inputdata for DIN_LOC_ROOT_CSMDATA and DIN_LOC_ROOT_CLMQIAN.
 
Users may need to increase the number of CPUs dedicated to each model component for production runs to improve speed. This involves changing the env_mach_pes.xml file in your case directory, and may require advice from software engineers.

On Pleiades, you will get different default processor layouts depending on your compset and whether you created on Harpertown (pleiades) or Westmere (pleiades_wes) processors.

Here I have pasted the relevant sections from some env_mach_pes.xml files I have used for production runs under various compsets and conditions. Some of these may match the default version created by the CESM scripts; others may vary considerably.

F-compset, Harpertown CPUs:

Code:
<entry id="NTASKS_ATM"   value="384"  />    
<entry id="NTHRDS_ATM"   value="1"  />    
<entry id="ROOTPE_ATM"   value="0"  />    

<entry id="NTASKS_LND"   value="16"  />    
<entry id="NTHRDS_LND"   value="1"  />    
<entry id="ROOTPE_LND"   value="80"  />    

<entry id="NTASKS_ICE"   value="80"  />    
<entry id="NTHRDS_ICE"   value="1"  />    
<entry id="ROOTPE_ICE"   value="0"  />    

<entry id="NTASKS_OCN"   value="16"  />    
<entry id="NTHRDS_OCN"   value="1"  />    
<entry id="ROOTPE_OCN"   value="96"  />    

<entry id="NTASKS_CPL"   value="384"  />    
<entry id="NTHRDS_CPL"   value="1"  />    
<entry id="ROOTPE_CPL"   value="0"  />    

<entry id="NTASKS_GLC"   value="64"  />    
<entry id="NTHRDS_GLC"   value="1"  />    
<entry id="ROOTPE_GLC"   value="112"  />    

<entry id="PSTRID_ATM"   value="1"  />    
<entry id="PSTRID_LND"   value="1"  />    
<entry id="PSTRID_ICE"   value="1"  />    
<entry id="PSTRID_OCN"   value="1"  />    
<entry id="PSTRID_CPL"   value="1"  />    
<entry id="PSTRID_GLC"   value="1"  />    

<entry id="TOTALPES"   value="384"  />    
<entry id="PES_LEVEL"   value="1r"  />    
<entry id="MAX_TASKS_PER_NODE"   value="8"  />    
<entry id="PES_PER_NODE"   value="$MAX_TASKS_PER_NODE"  />    
<entry id="BATCH_PES"   value="0"  />    
<entry id="CCSM_PCOST"   value="-2"  />    
<entry id="CCSM_TCOST"   value="0"  />    
<entry id="CCSM_ESTCOST"   value="1"  />    

<entry id="CICE_AUTO_DECOMP"   value="true"  />


B-compset, Harpertown CPUs:

Code:
<entry id="NTASKS_ATM"   value="256"  />    
<entry id="NTHRDS_ATM"   value="1"  />    
<entry id="ROOTPE_ATM"   value="  0"  />    

<entry id="NTASKS_LND"   value=" 64"  />    
<entry id="NTHRDS_LND"   value="1"  />    
<entry id="ROOTPE_LND"   value="192"  />    

<entry id="NTASKS_ICE"   value="192"  />    
<entry id="NTHRDS_ICE"   value="1"  />    
<entry id="ROOTPE_ICE"   value="  0"  />    

<entry id="NTASKS_OCN"   value=" 24"  />    
<entry id="NTHRDS_OCN"   value="1"  />    
<entry id="ROOTPE_OCN"   value="256"  />    

<entry id="NTASKS_CPL"   value="256"  />    
<entry id="NTHRDS_CPL"   value="1"  />    
<entry id="ROOTPE_CPL"   value="  0"  />    

<entry id="NTASKS_GLC"   value="  1"  />    
<entry id="NTHRDS_GLC"   value="1"  />    
<entry id="ROOTPE_GLC"   value="  0"  />    

<entry id="PSTRID_ATM"   value="1"  />    
<entry id="PSTRID_LND"   value="1"  />    
<entry id="PSTRID_ICE"   value="1"  />    
<entry id="PSTRID_OCN"   value="1"  />    
<entry id="PSTRID_CPL"   value="1"  />    
<entry id="PSTRID_GLC"   value="1"  />    

<entry id="TOTALPES"   value="280"  />    
<entry id="PES_LEVEL"   value="1r"  />    
<entry id="MAX_TASKS_PER_NODE"   value="8"  />    
<entry id="PES_PER_NODE"   value="$MAX_TASKS_PER_NODE"  />    
<entry id="BATCH_PES"   value="0"  />    
<entry id="CCSM_PCOST"   value="-2"  />    
<entry id="CCSM_TCOST"   value="0"  />    
<entry id="CCSM_ESTCOST"   value="-2"  />    

<entry id="POP_AUTO_DECOMP"   value="true"  />    

<entry id="CICE_AUTO_DECOMP"   value="true"  />


B-compset, Westmere CPUs:

Code:
<entry id="NTASKS_ATM"   value="240"  />    
<entry id="NTHRDS_ATM"   value="1"  />    
<entry id="ROOTPE_ATM"   value="  0"  />    

<entry id="NTASKS_LND"   value=" 48"  />    
<entry id="NTHRDS_LND"   value="1"  />    
<entry id="ROOTPE_LND"   value="192"  />    

<entry id="NTASKS_ICE"   value="192"  />    
<entry id="NTHRDS_ICE"   value="1"  />    
<entry id="ROOTPE_ICE"   value="  0"  />    

<entry id="NTASKS_OCN"   value=" 24"  />    
<entry id="NTHRDS_OCN"   value="1"  />    
<entry id="ROOTPE_OCN"   value="240"  />    

<entry id="NTASKS_CPL"   value="240"  />    
<entry id="NTHRDS_CPL"   value="1"  />    
<entry id="ROOTPE_CPL"   value="  0"  />    

<entry id="NTASKS_GLC"   value="  1"  />    
<entry id="NTHRDS_GLC"   value="1"  />    
<entry id="ROOTPE_GLC"   value="  0"  />    

<entry id="PSTRID_ATM"   value="1"  />    
<entry id="PSTRID_LND"   value="1"  />    
<entry id="PSTRID_ICE"   value="1"  />    
<entry id="PSTRID_OCN"   value="1"  />    
<entry id="PSTRID_CPL"   value="1"  />    
<entry id="PSTRID_GLC"   value="1"  />    

<entry id="TOTALPES"   value="264"  />    
<entry id="PES_LEVEL"   value="1r"  />    
<entry id="MAX_TASKS_PER_NODE"   value="12"  />    
<entry id="PES_PER_NODE"   value="$MAX_TASKS_PER_NODE"  />    
<entry id="BATCH_PES"   value="0"  />    
<entry id="CCSM_PCOST"   value="-2"  />    
<entry id="CCSM_TCOST"   value="0"  />    
<entry id="CCSM_ESTCOST"   value="1"  />    

<entry id="POP_AUTO_DECOMP"   value="true"  />    

<entry id="CICE_AUTO_DECOMP"   value="true"  />
 
Francis Vitt reports improved performance by changing one of the FFLAGS in the Macros.pleiades (or Macros.pleiades_wes) file in the case directory.

For Harpertown (Macros.pleiades), change "-xS" to "-xSSE4.1"

For Westmere (Macros.pleiades_wes), change "-xS" to "-xSSE4.2"

Following these changes, do


Code:
configure -cleanmach
configure -case
*.clean_build
*.build
 
Top