diff --git a/benchmarks/modules/utils.py b/benchmarks/modules/utils.py index 95b9b336..7b50e227 100644 --- a/benchmarks/modules/utils.py +++ b/benchmarks/modules/utils.py @@ -303,7 +303,10 @@ def set_sge_num_slots(self): num_tasks = self.num_tasks or 1 num_cpus_per_task = self.num_cpus_per_task or 1 # Set the total number of CPUs to be requested for the SGE scheduler. - self.extra_resources['mpi'] = {'num_slots': num_tasks * num_cpus_per_task} + if self.current_system.name == 'kathleen': + self.extra_resources['mpi'] = {'num_slots': max(41, num_tasks * num_cpus_per_task)} + else: + self.extra_resources['mpi'] = {'num_slots': num_tasks * num_cpus_per_task} @run_before('compile') def set_isambard_memory(self): diff --git a/benchmarks/reframe_config.py b/benchmarks/reframe_config.py index 7818900c..790e18d4 100644 --- a/benchmarks/reframe_config.py +++ b/benchmarks/reframe_config.py @@ -188,6 +188,41 @@ def spack_root_to_path(): }, ] }, # end CSD3 CentOS 7 + { + # https://www.rc.ucl.ac.uk/docs/Clusters/Kathleen/#node-types + 'name': 'kathleen', + 'descr': 'Kathleen', + 'hostnames': ['login[0-9]+.kathleen.ucl.ac.uk'], + 'max_local_jobs': 1, + 'partitions': [ + { + 'name': 'compute-node', + 'descr': 'Kathleen compute nodes', + 'scheduler': 'sge', + 'launcher': 'mpirun', + 'environs': ['default'], + 'max_jobs': 36, + 'processor': { + 'num_cpus': 40, + 'num_cpus_per_core': 1, + 'num_sockets': 2, + 'num_cpus_per_socket': 20, + }, + 'resources': [ + { + 'name': 'mpi', + 'options': ['-pe mpi {num_slots}'], + }, + { + # Disable hyperthreading (default). + # See https://www.rc.ucl.ac.uk/docs/Clusters/Kathleen/#hyperthreading for details + 'name': 'hyperthreads', + 'options': ['-l threads=2'], + }, + ], + } + ] + }, # end Kathleen { # https://www.rc.ucl.ac.uk/docs/Clusters/Myriad/#node-types 'name': 'myriad', diff --git a/benchmarks/spack/kathleen/compute-node/spack.yaml b/benchmarks/spack/kathleen/compute-node/spack.yaml new file mode 100644 index 00000000..e3b90792 --- /dev/null +++ b/benchmarks/spack/kathleen/compute-node/spack.yaml @@ -0,0 +1,320 @@ +# This is a Spack Environment file. +# +# It describes a set of packages to be installed, along with +# configuration settings. +spack: + # add package specs to the `specs` list + specs: [] + view: false + include: + - ../../common.yaml + compilers: + - compiler: + spec: intel@18.0.3 + paths: + cc: /shared/ucl/apps/intel/2018.Update3/compilers_and_libraries_2018.3.222/linux/bin/intel64/icc + cxx: /shared/ucl/apps/intel/2018.Update3/compilers_and_libraries_2018.3.222/linux/bin/intel64/icpc + f77: /shared/ucl/apps/intel/2018.Update3/compilers_and_libraries_2018.3.222/linux/bin/intel64/ifort + fc: /shared/ucl/apps/intel/2018.Update3/compilers_and_libraries_2018.3.222/linux/bin/intel64/ifort + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: {} + extra_rpaths: [] + - compiler: + spec: intel@19.1.0.166 + paths: + cc: /shared/ucl/apps/intel/2020/compilers_and_libraries_2020.0.166/linux/bin/intel64/icc + cxx: /shared/ucl/apps/intel/2020/compilers_and_libraries_2020.0.166/linux/bin/intel64/icpc + f77: /shared/ucl/apps/intel/2020/compilers_and_libraries_2020.0.166/linux/bin/intel64/ifort + fc: /shared/ucl/apps/intel/2020/compilers_and_libraries_2020.0.166/linux/bin/intel64/ifort + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: {} + extra_rpaths: [] + - compiler: + spec: gcc@4.8.5 + paths: + cc: /usr/bin/gcc + cxx: null + f77: /usr/bin/gfortran + fc: /usr/bin/gfortran + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: {} + extra_rpaths: [] + - compiler: + spec: gcc@4.9.2 + paths: + cc: /shared/ucl/apps/gcc/4.9.2/bin/gcc + cxx: /shared/ucl/apps/gcc/4.9.2/bin/g++ + f77: /shared/ucl/apps/gcc/4.9.2/bin/gfortran + fc: /shared/ucl/apps/gcc/4.9.2/bin/gfortran + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: + prepend_path: + LD_LIBRARY_PATH: /shared/ucl/apps/gcc/4.9.2/lib64 + extra_rpaths: [] + - compiler: + spec: gcc@7.3.0 + paths: + cc: /shared/ucl/apps/gcc/7.3.0/bin/gcc + cxx: /shared/ucl/apps/gcc/7.3.0/bin/g++ + f77: /shared/ucl/apps/gcc/7.3.0/bin/gfortran + fc: /shared/ucl/apps/gcc/7.3.0/bin/gfortran + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: + prepend_path: + LD_LIBRARY_PATH: /shared/ucl/apps/gcc/7.3.0/lib64 + extra_rpaths: [] + - compiler: + spec: gcc@8.3.0 + paths: + cc: /shared/ucl/apps/gcc/8.3.0/bin/gcc + cxx: /shared/ucl/apps/gcc/8.3.0/bin/g++ + f77: /shared/ucl/apps/gcc/8.3.0/bin/gfortran + fc: /shared/ucl/apps/gcc/8.3.0/bin/gfortran + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: + prepend_path: + LD_LIBRARY_PATH: /shared/ucl/apps/gcc/8.3.0/lib64 + extra_rpaths: [] + - compiler: + spec: gcc@9.2.0 + paths: + cc: /shared/ucl/apps/gcc/9.2.0/bin/gcc + cxx: /shared/ucl/apps/gcc/9.2.0/bin/g++ + f77: /shared/ucl/apps/gcc/9.2.0/bin/gfortran + fc: /shared/ucl/apps/gcc/9.2.0/bin/gfortran + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: + prepend_path: + LD_LIBRARY_PATH: /shared/ucl/apps/gcc/9.2.0/lib64 + extra_rpaths: [] + - compiler: + spec: gcc@10.2.0 + paths: + cc: /shared/ucl/apps/gcc/10.2.0-p95889/bin/gcc + cxx: /shared/ucl/apps/gcc/10.2.0-p95889/bin/g++ + f77: /shared/ucl/apps/gcc/10.2.0-p95889/bin/gfortran + fc: /shared/ucl/apps/gcc/10.2.0-p95889/bin/gfortran + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: + prepend_path: + LD_LIBRARY_PATH: /shared/ucl/apps/gcc/10.2.0-p95889/lib64 + extra_rpaths: [] + - compiler: + spec: dpcpp@=2022.1.0 + paths: + cc: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/icx + cxx: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/dpcpp + f77: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/ifx + fc: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/ifx + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: {} + extra_rpaths: [] + - compiler: + spec: intel@=2021.6.0 + paths: + cc: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/intel64/icc + cxx: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/intel64/icpc + f77: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/intel64/ifort + fc: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/intel64/ifort + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: {} + extra_rpaths: [] + - compiler: + spec: oneapi@=2022.1.0 + paths: + cc: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/icx + cxx: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/icpx + f77: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/ifx + fc: /shared/ucl/apps/intel/2022.2/compiler/2022.1.0/linux/bin/ifx + flags: {} + operating_system: rhel7 + target: x86_64 + modules: [] + environment: {} + extra_rpaths: [] + packages: + autoconf: + externals: + - spec: autoconf@2.69 + prefix: /usr + automake: + externals: + - spec: automake@1.13.4 + prefix: /usr +# binutils: +# externals: +# - spec: binutils@2.27.43 +# prefix: /usr + bzip2: + externals: + - spec: bzip2@1.0.6 + prefix: /usr + cmake: + externals: + - spec: cmake@2.8.12.2 + prefix: /usr + - spec: cmake@3.2.1 + prefix: /shared/ucl/apps/cmake/3.2.1/gnu-4.9.2 + - spec: cmake@3.7.2 + prefix: /shared/ucl/apps/cmake/3.7.2/gnu-4.9.2 + - spec: cmake@3.13.3 + prefix: /shared/ucl/apps/cmake/3.13.3/gnu-4.9.2 + - spec: cmake@3.19.1 + prefix: /shared/ucl/apps/cmake/3.19.1/gnu-4.9.2 + - spec: cmake@3.21.1 + prefix: /shared/ucl/apps/cmake/3.21.1/gnu-4.9.2 +# coreutils: +# externals: +# - spec: coreutils@8.22 +# prefix: /usr + curl: + externals: + - spec: curl@7.29.0+ldap + prefix: /usr + diff: + externals: + - spec: diff@3.3 + prefix: /usr + find: + externals: + - spec: find@4.5.11 + prefix: /usr + flex: + externals: + - spec: flex@2.5.39~lex + prefix: /shared/ucl/apps/flex/2.5.39/gnu-4.9.2 + gawk: + externals: + - spec: gawk@4.0.2 + prefix: /usr + git: + externals: + - spec: git@2.32.0+tcltk + prefix: /shared/ucl/apps/git/2.32.0/gnu-4.9.2 + - spec: git@1.8.3.1~tcltk + prefix: /usr + gmake: + externals: + - spec: gmake@3.82 + prefix: /usr + groff: + externals: + - spec: groff@1.22.2 + prefix: /usr + hwloc: + externals: + - spec: hwloc@1.11.12 + prefix: /shared/ucl/apps/hwloc/1.11.12 + intel-mkl: + externals: + - spec: intel-mkl@2018.3.222 + prefix: /shared/ucl/apps/intel/2018.Update3/compilers_and_libraries_2018.3.222/linux/mkl + - spec: intel-mkl@2020.0.166 + prefix: /shared/ucl/apps/intel/2020/compilers_and_libraries_2020.0.166/linux/mkl + intel-mpi: + externals: + - spec: intel-mpi@2018.3.222 + prefix: /shared/ucl/apps/intel/2018.Update3 + - spec: intel-mpi@2020.0.166 + prefix: /shared/ucl/apps/intel/2020 + intel-oneapi-mpi: + externals: + - spec: intel-oneapi-mpi@2021.6.0 + prefix: /shared/ucl/apps/intel/2022.2/ + libtool: + externals: + - spec: libtool@2.4.2 + prefix: /usr + libxml2: + externals: + - spec: libxml2@2.9.4 + prefix: /shared/ucl/apps/libxml2/2.9.4/gnu-4.9.2 + libxsmm: + externals: + - spec: libxsmm@1.16.1 + prefix: /shared/ucl/apps/cp2k/8.2/cp2k-8.2/tools/toolchain/install/libxsmm-1.16.1 + m4: + externals: + - spec: m4@1.4.16 + prefix: /usr + ninja: + externals: + - spec: ninja@1.10.2.git.kitware.jobserver-1 + prefix: /shared/ucl/apps/python/bundles/python39-6.0.0/venv + numactl: + externals: + - spec: numactl@2.0.12 + prefix: /shared/ucl/apps/numactl/2.0.12 + openmpi: + externals: + - spec: openmpi@3.1.4%intel@18.0.3 + prefix: /shared/ucl/apps/openmpi/3.1.4/intel-2018 + - spec: openmpi@3.1.4%gcc@7.3.0 + prefix: /shared/ucl/apps/openmpi/3.1.4/gnu-7.3.0 + - spec: openmpi@3.1.5%gcc@9.2.0 + prefix: /shared/ucl/apps/openmpi/3.1.5/gnu-9.2.0 + - spec: openmpi@3.1.6%gcc@4.9.2 + prefix: /shared/ucl/apps/openmpi/3.1.6/gnu-4.9.2 + - spec: openmpi@4.0.3%gcc@4.9.2 + prefix: /shared/ucl/apps/openmpi/4.0.3/gnu-4.9.2 + - spec: openmpi@4.0.5%gcc@10.2.0 + prefix: /shared/ucl/apps/openmpi/4.0.5/gnu-10.2.0 + # # This is a newer version of OpenMPI but with an older version of GCC, + # # so that by default Spack prefers this over above versions, let's hide + # # it so that we can use GCC 10.2 out-of-the-box. + # - spec: openmpi@4.1.1%gcc@4.9.2 + # prefix: /shared/ucl/apps/openmpi/4.1.1/gnu-4.9.2 +# openssh: +# externals: +# - spec: openssh@7.4p1 +# prefix: /usr + openssl: + externals: + - spec: openssl@1.0.2k-fips + prefix: /usr + perl: + externals: + - spec: perl@5.16.3~cpanm+shared+threads + prefix: /usr + pkg-config: + externals: + - spec: pkg-config@0.27.1 + prefix: /usr + subversion: + externals: + - spec: subversion@1.14.1 + prefix: /shared/ucl/apps/subversion/1.14.1 + tar: + externals: + - spec: tar@1.26 + prefix: /usr diff --git a/docs/systems.md b/docs/systems.md index ea036bba..195959d3 100644 --- a/docs/systems.md +++ b/docs/systems.md @@ -129,7 +129,7 @@ reframe -c benchmarks/examples/sombrero -r --performance-report --system isambar You may also need to compile GPU applications on the compute nodes, as the login node does not have any GPUs (this really depends on the build system of the application at hand, whether it needs access to a GPU during the build or it is sufficient to have the GPU toolkit available). -## Myriad +## Myriad and Kathleen ### Python3 module