Log In
|
Users
|
Register
Web of Reto Knutti's Group
OK
Main
IAC
Intranet
Public
IT
Atmoschem
Atmcirc
Atmosdyn
Chemie
Climdyn
Climphys
Highres
Hyclimm
Hymet
Landclim
S2S
Wolke
Collaboration
Climphys
Log In
Tools
Create New Topic
Index
Alternative Search
Notifications
RSS Feed
General Info
Wiki Help
Wiki News
Changes in all Webs
System Web
Installed Plugins
About Climphys Web
Statistics
Changes
Preferences
Restore
|
View
|
History
|
First
|
Previous
|
Next
|
Last
|
Close
You are here:
Climphys
»
ProjectCESM
»
ProjectCESM1SetupGenericBenchmark
---+!! Setup a CESM 1.0.x benchmark run on a generic system %TOC% This is a *cookbook* to setup a CESM 1.0 benchmark run on a generic (Linux) system. This page is *still work in progress*, but will give already an idea what has to be done. See also porting CESM in the CESM user's guide: http://www.cesm.ucar.edu/models/cesm1.0/cesm/cesm_doc/c2161.html ---++ System requirements * *Compilers* known to work: intel 10.1, pgi 7.2, 8.0, 9.0, (pathscale 3.2) * *MPI* implementations known to work: openmpi 1.4, 1.5, mvapich2 1.4, 1.5 ---++ Compile NETCDF (Requirement) * See also http://www.ncl.ucar.edu/Download/build_from_src.shtml#NetCDF * Download NETCDF <verbatim> wget http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-4.1.1.tar.gz tar xfvz netcdf-4.1.1.tar.gz cd netcdf-4.1.1 </verbatim> * Compile netcdf with the compiler you use later to compile the model. For example for intel compiler do: <verbatim> export FC=ifort export F77=ifort export F90=ifort export CPPFLAGS="-fPIC -DpgiFortran" ./configure --prefix=/usr/local/netcdf-4.1.1-intel --disable-netcdf-4 --disable-dap make make test </verbatim> * Install NETCDF <verbatim> make install </verbatim> ---++ Download CESM source code * Download from NCAR SVN. A password is needed to checkout. Please register at: http://www.cesm.ucar.edu/models/cesm1.0/register/register_cesm1.0.cgi In case you don't have time to register ask urs.beyerle@env.ethz.ch <verbatim> svn export https://svn-ccsm-release.cgd.ucar.edu/model_versions/cesm1_0_2 cesm1_0_2 </verbatim> ---++ Adapt configuration files * Change to ==Machines== directory <verbatim> cd cesm1_0_2 cd scripts/ccsm_utils/Machines/ </verbatim> * Meaning of filenames | *Filename* | *Purpose* | | env_machopts.* | Set environment: Can be used to set paths to compiler, MPI library, NETCDF library | | Macros.* | Set compiler name and paths to MPI library, NETCDF library. Set compiler options | | mkbatch.* | Setting for queuing system | where * corresponds to a machine. * As starting point take configuration files of a machine that is close to your environment. For example have a look at brutus_io, brutus_im, brutus_po or brutus_pm where i=intel, p=pgi, o=openmpi, m=mvapich2 * Let's assume you use intel and openmpi, start with ==*.brutus_io== files: <verbatim> cp env_machopts.brutus_io env_machopts.your_machine cp Macros.brutus_io Macros.your_machine cp mkbatch.brutus_io mkbatch.your_machine </verbatim> * Add to ==config_machines.xml== a configuration tag for your machine (your_machine) - only the important lines are listed below <verbatim> <machine MACH="your_machine" DESC="Test System" EXEROOT="/scratch/$CCSMUSER/$CASE" OBJROOT="$EXEROOT" INCROOT="$EXEROOT/lib/include" DIN_LOC_ROOT_CSMDATA="/scratch/cesm1/inputdata" DIN_LOC_ROOT_CLMQIAN="/scratch/cesm1/inputdata/atm/datm7/atm_forcing.datm7.Qian.T62.c080727" BATCHQUERY="qstat -f" BATCHSUBMIT="qsub" GMAKE_J="4" MAX_TASKS_PER_NODE="4" MPISERIAL_SUPPORT="FALSE" /> </verbatim> please set the following variables: <verbatim> EXEROOT= # working directory, final location of binary and output files DIN_LOC_ROOT_CSMDATA= # input data, date will be downloaded on the fly DIN_LOC_ROOT_CLMQIAN= # input data, data will be downloaded on the fly MAX_TASKS_PER_NODE= # define cores per node </verbatim> * Configure *mpirun* execution: Search in ==mkbatch.your_machine== for the line starting the executable ==ccsm.exe== and replace it with the correct mpirun command for your system, for example something like <verbatim> mpirun -np ${maxtasks} ./ccsm.exe >&! ccsm.log.\$LID # or mpirun -x LD_LIBRARY_PATH -np ${maxtasks} ./ccsm.exe >&! ccsm.log.\$LID </verbatim> ---++ Compile and setup simulation * Change to ==scripts== directory <verbatim> cd cesm1_0_2 cd scripts </verbatim> * Define a case name (can be any name), for example 2° resolution (1.9x2.5_gx1v6), fully coupled model (B) <verbatim> CASE=1.9x2.5_gx1v6-B-benchmark </verbatim> * Define the machine type, resolution, compset <verbatim> MACH=your_machine RES=1.9x2.5 COMP=B </verbatim> * Create case <verbatim> ./create_newcase -res $RES -compset $COMP -mach $MACH -case $CASE </verbatim> * Change into case directory <verbatim> cd $CASE </verbatim> * Define layout, for example run with 128 task on 128 cores <verbatim> NTASKS=128 ./xmlchange -file env_mach_pes.xml -id NTASKS_ATM -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_LND -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_ICE -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_OCN -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_CPL -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_GLC -val $NTASKS ./xmlchange -file env_mach_pes.xml -id TOTALPES -val $NTASKS </verbatim> * In general, CESM is hardwired to generate monthly average data. In principle this can be turned of but needs a lot of code changes. Therefore it's not considered here. The following two cases are suggested instead: * *CASE 1*: Run a short simulation with producing almost no output (I/O) %BR% Simulation should run only for 20 days and no restart files should be produced at the end: <verbatim> ./xmlchange -file env_run.xml -id STOP_OPTION -val ndays ./xmlchange -file env_run.xml -id STOP_N -val 20 ./xmlchange -file env_run.xml -id REST_OPTION -val never </verbatim> * *CASE 2*: Run a larger simulation with producing monthly (*better daily? - CKECK THIS*) output data %BR% Simulation should run for 2 months and restart files should be produced at the end: <verbatim> ./xmlchange -file env_run.xml -id STOP_OPTION -val nmonths ./xmlchange -file env_run.xml -id STOP_N -val 2 ./xmlchange -file env_run.xml -id REST_OPTION -val $STOP_N </verbatim> * Configure case <verbatim> ./configure -case </verbatim> * Build/Compile the model <verbatim> ./$CASE.$MACH.build </verbatim> ---++ Run the model * Run the model, for example with LSF *queuing system* <verbatim> bsub < $CASE.$MACH.run </verbatim> * To start without a queuing system just execute: <verbatim> ./$CASE.$MACH.run </verbatim> * Timing results can be found after the run has been successfully completed in folder ==timing== <verbatim> cat timing/ccsm_timing.$CASE.* ... Model Throughput: 6.39 simulated_years/day ... </verbatim> ---++ Change the layout * To *change the layout* you don't have to recreate the case (but you can if you wish). * Change into case directory and re-define layout <verbatim> cd $CASE NTASKS=64 ./xmlchange -file env_mach_pes.xml -id NTASKS_ATM -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_LND -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_ICE -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_OCN -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_CPL -val $NTASKS ./xmlchange -file env_mach_pes.xml -id NTASKS_GLC -val $NTASKS ./xmlchange -file env_mach_pes.xml -id TOTALPES -val $NTASKS </verbatim> * Clean the case and re-configure it <verbatim> ./configure -cleanmach ./configure -case </verbatim> * Build/Compile the model <verbatim> ./$CASE.$MACH.build </verbatim> ---++ Change the resolution * Recommended resolutions are T31_gx3v7 (~3°), 1.9x2.5_gx1v6 (2°), 0.9x1.25_gx1v6 (1°) * %X% To *change the resolution* create a *new* case ! ---++ Produce a summary * Create performance matrix for *CASE 1* and *CASE 2*. Fill in Model Throughput in *simulated_years/day* * *CASE 1*: Run a short simulation with producing almost no output (I/O) | *resolution / layout (NTASKS)* | 16 | 32 | 64 | 128 | 256 | 512 | 1024 (a) | | T31_gx3v7 | | | | | -- | -- | -- | | 1.9x2.5_gx1v6 | -- | | | | | | -- | | 0.9x1.25_gx1v6 | -- | -- | | | | | | * *CASE 2*: Run a larger simulation with producing monthly (*better daily? - CKECK THIS*) output data | *resolution / layout (NTASKS)* | 16 | 32 | 64 | 128 | 256 | 512 | 1024 (a) | | T31_gx3v7 | | | | | -- | -- | -- | | 1.9x2.5_gx1v6 | -- | | | | | | -- | | 0.9x1.25_gx1v6 | -- | -- | | | | | | (a) *optional* <!-- * Set DENYTOPICVIEW = -->
View
Changed by
UrsBeyerle
on
22 Feb 2011 - 14:01 - r4
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki?
Send feedback
Syndicate this site
RSS
ATOM