Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AWICM3 on aleph TCo1279-DART plus rudamentary intel compiler config. #1000

Open
wants to merge 21 commits into
base: release
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 15 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 18 additions & 17 deletions configs/components/oasis3mct/oasis3mct.env.yaml
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
add_compiletime_environment_changes:
choose_computer.fc:
ftn:
add_export_vars:
- 'OASIS_FFLAGS=-emf'
choose_computer.name:
levante:
add_export_vars:
OASIS_FFLAGS: '"-march=core-avx2 -mtune=core-avx2"'
albedo:
choose_computer.compiler_suite:
gcc:
add_export_vars:
FFLAGS: "'-fallow-argument-mismatch -w'"
FCFLAGS: "'-fallow-argument-mismatch -w'"
intel-oneapi:
add_export_vars:
OASIS_FFLAGS: '"-march=core-avx2"'
choose_computer.name:
aleph:
choose_computer.useMPI:
cray_mpich:
add_export_vars:
OASIS_FFLAGS: '"-emf"'
levante:
add_export_vars:
OASIS_FFLAGS: '"-march=core-avx2 -mtune=core-avx2"'
albedo:
choose_computer.compiler_suite:
gcc:
add_export_vars:
FFLAGS: "'-fallow-argument-mismatch -w'"
FCFLAGS: "'-fallow-argument-mismatch -w'"
intel-oneapi:
add_export_vars:
OASIS_FFLAGS: '"-march=core-avx2"'
32 changes: 24 additions & 8 deletions configs/components/oifs/oifs.env.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -450,17 +450,33 @@ compiletime_environment_changes:
OIFS_NETCDFF_INCLUDE: '-I$NETCDF_DIR/include'
OIFS_NETCDFF_LIB: '"-L$NETCDF_DIR/lib -lnetcdff"'
OIFS_FC: '${computer.fc}'
OIFS_FFLAGS: '"-O2 -emf -hthread1 -hflex_mp=conservative -hfp1 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN"' #TODO: Test: -O3 -hfp3
#OIFS_FFLAGS: '"-O3 -emf -hthread3 -hflex_mp=conservative -hfp3 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN"' #TODO: Test: -O3 -hfp3
OIFS_FFIXED: '"-s real64"'
OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"'
OIFS_LFLAGS: '"-dynamic -hbyteswapio"'
OIFS_CC: '${computer.cc}'
OIFS_CFLAGS: '"-emf -O2 -hcpu=x86-skylake"'
#OIFS_CFLAGS: '"-emf -O3 -hcpu=x86-skylake"'
OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS"'
OIFS_XIOS_LIB_NAME: '${computer.c++_lib}'

choose_computer.useMPI:
cray_mpich:
add_export_vars:
OIFS_FFLAGS: '"-emf -hthread1 -hflex_mp=conservative -hfp1 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN -g -O3 -eZ"'
#OIFS_FFLAGS: '"-emf -hthread1 -hflex_mp=conservative -hfp1 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN -g -O1 -eZ"'
#OIFS_FFLAGS: '"-O1 -emf -hthread1 -hflex_mp=conservative -hfp1 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN"' #TODO: Test: -O3 -hfp3
#OIFS_FFLAGS: '"-O2 -emf -hthread1 -hflex_mp=conservative -hfp1 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN"' #TODO: Test: -O3 -hfp3
#OIFS_FFLAGS: '"-O3 -emf -hthread3 -hflex_mp=conservative -hfp3 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN"' #TODO: Test: -O3 -hfp3
OIFS_CFLAGS: '"-emf -O2 -hcpu=x86-skylake"'
OIFS_LFLAGS: '"-dynamic -hbyteswapio"'
OIFS_FFIXED: '"-s real64"'
OIFS_XIOS_LIB_NAME: '${computer.c++_lib}'
intelopenmpi:
add_export_vars:
OIFS_FFLAGS: '"-r8 -fp-model precise -align array32byte -O3 -qopenmp -xCORE_AVX512 -g -traceback -convert big_endian -fpe0"'
OIFS_CFLAGS: '"-fp-model precise -O3 -xCORE_AVX512 -g -traceback -qopt-report=0 -fpe0 -qopenmp"'
OIFS_LFLAGS: '"$OIFS_MPI_LIB -qopenmp"'
OIFS_FFIXED: '""'
intel_mpich:
add_export_vars:
OIFS_FFLAGS: '"-r8 -fp-model precise -align array32byte -O0 -qopenmp -xCORE_AVX512 -g -traceback -convert big_endian -fpe0"'
OIFS_CFLAGS: '"-fp-model precise -O3 -xCORE_AVX512 -g -traceback -qopt-report=0 -fpe0 -qopenmp"'
OIFS_LFLAGS: '"$OIFS_MPI_LIB -qopenmp"'
OIFS_FFIXED: '""'
nesh:
compiler_mpi: intel2020_impi2020
add_export_vars:
Expand Down
4 changes: 4 additions & 0 deletions configs/components/xios/xios.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ choose_version:
archfile: ESMTOOLS_generic_oasis_intel
parastationmpi:
archfile: ESMTOOLS_generic_oasis_intel
intelopenmpi:
archfile: ESMTOOLS_generic_oasis_intel
intel_mpich:
archfile: ESMTOOLS_generic_oasis_intel
"*":
foo: bar
# MA: yet another block, this time for albedo. We cannot fix this now, but in the
Expand Down
160 changes: 121 additions & 39 deletions configs/machines/aleph.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,53 +46,135 @@ hyper_flag: ""
#
#

useMPI: cray_mpich

fc: ftn
f77: ftn
mpifc: ftn
mpicc: cc
cc: cc
cxx: CC

module_actions:
- "unload craype"
- "load craype/2.6.2"
- "load PrgEnv-cray/6.0.4"
- "load pbs"
- "load cray-mpich/7.7.3"
- "load craype-x86-skylake"
- "load cmake/3.14.0"
- "load cray-hdf5-parallel/1.10.2.0"
- "load cray-netcdf-hdf5parallel/4.6.1.3"
- "load cdo/1.9.5"
- "load fftw/2.1.5.9"
- "load nco/4.9.4"
- "load proj4/5.1.0"
- "load python/3.9.1"
- "list"

useMPI: cray_mpich #intel_mpich #intelopenmpi #cray_mpich

choose_useMPI:
cray_mpich:
fc: ftn
f77: ftn
mpifc: ftn
mpicc: cc
cc: cc
cxx: CC
module_actions:
- "unload craype"
- "load craype/2.6.2"
- "load PrgEnv-cray/6.0.4"
- "load pbs"
- "load cray-mpich/7.7.3"
- "load craype-x86-skylake"
- "load cmake/3.14.0"
- "load cray-hdf5-parallel/1.10.2.0"
- "load cray-netcdf-hdf5parallel/4.6.1.3"
- "load cdo/1.9.5"
- "load fftw/2.1.5.9"
- "load nco/4.9.4"
- "load proj4/5.1.0"
- "load python/3.9.1"
- "list"
Comment on lines +59 to +74
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of this can go outside in a general module_actions. Here you can place only the differences. It's a matter of taste, I find it easier to find what the difference are in between the options if in the choose blocks there are only differences.

If you want to give it a shot I recommend to use here add_module_actions and also variable definition and called by placeholders in the general module_actions like in the Albedo example:

https://github.com/esm-tools/esm_tools/blob/release/configs/machines/albedo.yaml#L127-L149

https://github.com/esm-tools/esm_tools/blob/release/configs/machines/albedo.yaml#L103-L125

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I place the defaults first, and then unload the craype, that might not work. The order can matter for module commands. Thus I try to keep them together as much as I can.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is indeed possible to keep the order if you follow the examples I pasted in the comment above

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have time to give it a shot, if you have time to test it. Let me know what you prefer, doing it yourself or that I do it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might find some time tomorrow. Otherwise it would sit till after I'm back.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm back and would have time to test.

add_export_vars:
ECCODESROOT: /proj/awiiccp/software/ecmwf/eccodes_cce_mpich
HDF5ROOT: $HDF5_ROOT

NETCDFFROOT: $NETCDF_DIR
NETCDFROOT: $NETCDF_DIR
NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFROOT/include
NETCDF_CXX_INCLUDE_DIRECTORIES: $NETCDFROOT/include
NETCDF_CXX_LIBRARIES: $NETCDFROOT/lib
ZLIBROOT: /usr

intelopenmpi:
warning:
Configuration does not run:
message: "The intelopenmpi configuration on aleph is experimental. From past experiance it can compile AWI-CM3, but crashes on runtime. Use as your own disgression. Contact [email protected] for further questions"
ask_user_to_continue: True
JanStreffing marked this conversation as resolved.
Show resolved Hide resolved
fc: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717/bin/mpifort
f77: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717/bin/mpifort
mpifc: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717/bin/mpifort
mpicc: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717/bin/mpicc
cc: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717/bin/mpicc
cxx: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717/bin/mpicxx
module_actions:
- "unload PrgEnv-cray"
- "load PrgEnv-intel/6.0.5"
- "load craype-x86-skylake"
- "load cray-mpich/7.7.3"
- "load gcc/7.3.0"
- "load pbs"
- "load cmake/3.14.0"
- "load cdo/1.9.5"
- "load fftw/2.1.5.9"
- "load nco/4.9.4"
- "load proj4/5.1.0"
- "load python/3.9.1"
- "list"
add_export_vars:
CMAKE_C_COMPILER: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717/bin/mpicc
CMAKE_CXX_COMPILER: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717/bin/mpicxx
IO_LIB_ROOT: /home/awiiccp2/software/HPC_libraries/intel-18.0.3.222_ompi_20230717
LD_LIBRARY_PATH: $IO_LIB_ROOT/lib:$LD_LIBRARY_PATH

SZIPROOT: $IO_LIB_ROOT
HDF5ROOT: $IO_LIB_ROOT
HDF5_ROOT: $HDF5ROOT
NETCDFROOT: $IO_LIB_ROOT
NETCDFFROOT: $IO_LIB_ROOT
ECCODESROOT: $IO_LIB_ROOT

HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include
NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include
NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include
NETCDF_CXX_INCLUDE_DIRECTORIES: $NETCDFROOT/include
OASIS3MCT_FC_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"'
PATH: $IO_LIB_ROOT/bin:$PATH
MPIFC: ftn

intel_mpich:
warning:
Configuration does not run:
message: "The intel_mpich configuration on aleph is experimental. From past experiance it can compile AWI-CM3, but crashes on runtime. Use as your own disgression. Contact [email protected] for further questions"
ask_user_to_continue: True
fc: ftn
f77: ftn
mpifc: ftn
mpicc: cc
cc: cc
cxx: CC
module_actions:
- "unload PrgEnv-cray"
- "load PrgEnv-intel/6.0.5"
- "load craype-x86-skylake"
- "load cray-mpich/7.7.3"
- "load gcc/7.3.0"
- "load pbs"
- "load cmake/3.14.0"
- "load cdo/1.9.5"
- "load fftw/2.1.5.9"
- "load nco/4.9.4"
- "load proj4/5.1.0"
- "load python/3.9.1"
- "load cray-netcdf-hdf5parallel/4.6.1.3"
- "load cray-hdf5-parallel/1.10.2.0"
- "list"
add_export_vars:
ECCODESROOT: /home/awiiccp2/software/HPC_libraries/eccodes_intel_mpich/

HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include
NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include
NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include
NETCDF_CXX_INCLUDE_DIRECTORIES: $NETCDFROOT/include
OASIS3MCT_FC_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"'
PATH: $IO_LIB_ROOT/bin:$PATH
MPIFC: ftn
JanStreffing marked this conversation as resolved.
Show resolved Hide resolved
export_vars:
LC_ALL: en_US.UTF-8

HDF5ROOT: $HDF5_ROOT

NETCDFFROOT: $NETCDF_DIR
NETCDFROOT: $NETCDF_DIR
NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFROOT/include
NETCDF_CXX_INCLUDE_DIRECTORIES: $NETCDFROOT/include
NETCDF_CXX_LIBRARIES: $NETCDFROOT/lib

PERL5LIB: /usr/lib64/perl5
#LAPACK_LIB: '"-lmkl_intel_lp64 -lmkl_core -mkl=sequential -lpthread -lm -ldl"'
#LAPACK_LIB_DEFAULT: '"-L/global/AWIsoft/intel/2018/compilers_and_libraries_2018.5.274/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"'
XML2ROOT: /usr
ZLIBROOT: /usr
TMPDIR: /tmp
# Prepend labels to the stdout/sterr lines
PMI_LABEL_ERROUT: 1

ECCODESROOT: /proj/awiiccp/software/ecmwf/eccodes_cce_mpich
JanStreffing marked this conversation as resolved.
Show resolved Hide resolved

# enable full MPI thread support level (MPI_THREAD_MULTIPLE)
MPICH_MAX_THREAD_SAFETY: multiple # to also switch to an alternative (probably with faster locking) multi threading implementation of the cray-mpich library, use the compiler flag -craympich-mt
Expand All @@ -108,7 +190,7 @@ export_vars:
# Important for eccodes to work
CRAYPE_LINK_TYPE: dynamic

label_format: '"[@MODEL@]%l:"'
label_format: '"[@MODEL@]%r:"'
mandresm marked this conversation as resolved.
Show resolved Hide resolved
launcher_flags_per_component: "-n @nproc@ -N @nproc_per_node@ -d @cpus_per_proc@
env OMP_NUM_THREADS=@omp_num_threads@
env PMI_LABEL_ERROUT_FORMAT=${label_format}"
Expand Down
7 changes: 4 additions & 3 deletions namelists/fesom2/2.0/awicm3/DART/namelist.io
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ ldiag_DVD =.false.
ldiag_forc =.true.
/

&nml_output_settings
keep_nth_level = 1
/

&nml_listsize
io_listsize=100 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list
/
Expand Down Expand Up @@ -43,9 +47,6 @@ io_list = 'sst ',90,'s', 4,
'u1-31 ',1, 'd', 4,
'v1-31 ',1, 'd', 4,
'w1-31 ',1, 'd', 4,
'bolus_u ',1, 'y', 4,
'bolus_v ',1, 'y', 4,
'bolus_w ',1, 'y', 4,
'snow ',1, 'm', 4,
'subli ',1, 'm', 4,
'thdgrsn ',1, 'm', 4,
Expand Down
1 change: 1 addition & 0 deletions namelists/fesom2/2.0/awicm3/frontiers/namelist.io
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ io_list = 'sst ',1, 'm', 4,
'ty_sur ',1, 'm', 4,
'temp ',1, 'm', 4,
'salt ',1, 'm', 4,
'sigma0' ',1, 'm', 4'
'N2 ',1, 'y', 4,
'Kv ',1, 'y', 4,
'u ',1, 'y', 4,
Expand Down
7 changes: 5 additions & 2 deletions namelists/oifs/43r3/xios/TCO1279_DART/file_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
par_access="collective"
name="atm"
compression_level="1"
split_freq="1y">
split_freq="1mo">

<file
enabled="false"
Expand All @@ -23,6 +23,9 @@
<field_group freq_op="3h" operation="instant">
<field field_ref="msl" name="msl" long_name="Mean sea level pressure"/>
<field field_ref="tcc" name="tcc" long_name="Total cloud cover"/>
<field field_ref="lcc" name="lcc" long_name="low cloud cover"/>
<field field_ref="mcc" name="mcc" long_name="Medium cloud cover"/>
<field field_ref="hcc" name="hcc" long_name="High cloud cover"/>
<field field_ref="10u" name="10u" long_name="10 metre U wind component"/>
<field field_ref="10v" name="10v" long_name="10 metre V wind component"/>
<field field_ref="2t" name="2t" long_name="2 metre temperature"/>
Expand Down Expand Up @@ -166,7 +169,7 @@
par_access="collective"
name="atm_reduced"
compression_level="1"
split_freq="1y">
split_freq="1mo">

<file
enabled="true"
Expand Down
Loading