From 0288ca35420fe54a298e547e17f1d057c96b2099 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Fri, 10 Nov 2023 13:56:14 +0100 Subject: [PATCH 01/11] fix LIBBLAS_MT for flexiblas, ensure -lpthread is included --- easybuild/toolchains/linalg/flexiblas.py | 1 + 1 file changed, 1 insertion(+) diff --git a/easybuild/toolchains/linalg/flexiblas.py b/easybuild/toolchains/linalg/flexiblas.py index 43b450b3de..c266aff248 100644 --- a/easybuild/toolchains/linalg/flexiblas.py +++ b/easybuild/toolchains/linalg/flexiblas.py @@ -70,6 +70,7 @@ class FlexiBLAS(LinAlg): """ BLAS_MODULE_NAME = ['FlexiBLAS'] BLAS_LIB = ['flexiblas'] + BLAS_LIB_MT = ['flexiblas'] BLAS_INCLUDE_DIR = [os.path.join('include', 'flexiblas')] BLAS_FAMILY = TC_CONSTANT_FLEXIBLAS From e97eb9b0e0198dca70a6ac89ad217c153706a0d6 Mon Sep 17 00:00:00 2001 From: sam Date: Mon, 27 Nov 2023 17:37:22 +0100 Subject: [PATCH 02/11] extend test to recent toolchain --- test/framework/toolchain.py | 79 +++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/test/framework/toolchain.py b/test/framework/toolchain.py index f6243bd3b3..8809278193 100644 --- a/test/framework/toolchain.py +++ b/test/framework/toolchain.py @@ -1840,45 +1840,46 @@ def test_old_new_iccifort(self): scalapack_mt_static_libs_fosscuda = "libscalapack.a,libopenblas.a,libgfortran.a,libpthread.a" scalapack_mt_shared_libs_fosscuda = scalapack_mt_static_libs_fosscuda.replace('.a', '.' + shlib_ext) - tc = self.get_toolchain('fosscuda', version='2018a') - tc.prepare() - self.assertEqual(os.environ['BLAS_SHARED_LIBS'], blas_shared_libs_fosscuda) - self.assertEqual(os.environ['BLAS_STATIC_LIBS'], blas_static_libs_fosscuda) - self.assertEqual(os.environ['BLAS_MT_SHARED_LIBS'], blas_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['BLAS_MT_STATIC_LIBS'], blas_mt_static_libs_fosscuda) - self.assertEqual(os.environ['LIBBLAS'], libblas_fosscuda) - self.assertEqual(os.environ['LIBBLAS_MT'], libblas_mt_fosscuda) - - self.assertEqual(os.environ['LAPACK_SHARED_LIBS'], lapack_shared_libs_fosscuda) - self.assertEqual(os.environ['LAPACK_STATIC_LIBS'], lapack_static_libs_fosscuda) - self.assertEqual(os.environ['LAPACK_MT_SHARED_LIBS'], lapack_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['LAPACK_MT_STATIC_LIBS'], lapack_mt_static_libs_fosscuda) - self.assertEqual(os.environ['LIBLAPACK'], liblapack_fosscuda) - self.assertEqual(os.environ['LIBLAPACK_MT'], liblapack_mt_fosscuda) - - self.assertEqual(os.environ['BLAS_LAPACK_SHARED_LIBS'], blas_shared_libs_fosscuda) - self.assertEqual(os.environ['BLAS_LAPACK_STATIC_LIBS'], blas_static_libs_fosscuda) - self.assertEqual(os.environ['BLAS_LAPACK_MT_SHARED_LIBS'], blas_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['BLAS_LAPACK_MT_STATIC_LIBS'], blas_mt_static_libs_fosscuda) - - self.assertEqual(os.environ['FFT_SHARED_LIBS'], fft_shared_libs_fosscuda) - self.assertEqual(os.environ['FFT_STATIC_LIBS'], fft_static_libs_fosscuda) - self.assertEqual(os.environ['FFT_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['FFT_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) - self.assertEqual(os.environ['FFTW_SHARED_LIBS'], fft_shared_libs_fosscuda) - self.assertEqual(os.environ['FFTW_STATIC_LIBS'], fft_static_libs_fosscuda) - self.assertEqual(os.environ['FFTW_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['FFTW_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) - self.assertEqual(os.environ['LIBFFT'], libfft_fosscuda) - self.assertEqual(os.environ['LIBFFT_MT'], libfft_mt_fosscuda) - - self.assertEqual(os.environ['LIBSCALAPACK'], libscalack_fosscuda) - self.assertEqual(os.environ['LIBSCALAPACK_MT'], libscalack_mt_fosscuda) - self.assertEqual(os.environ['SCALAPACK_SHARED_LIBS'], scalapack_shared_libs_fosscuda) - self.assertEqual(os.environ['SCALAPACK_STATIC_LIBS'], scalapack_static_libs_fosscuda) - self.assertEqual(os.environ['SCALAPACK_MT_SHARED_LIBS'], scalapack_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['SCALAPACK_MT_STATIC_LIBS'], scalapack_mt_static_libs_fosscuda) - self.modtool.purge() + for tc in [('fosscuda', '2018a'), ('foss', '2023a')]: + tc = self.get_toolchain(tc[0], version=tc[1]) + tc.prepare() + self.assertEqual(os.environ['BLAS_SHARED_LIBS'], blas_shared_libs_fosscuda) + self.assertEqual(os.environ['BLAS_STATIC_LIBS'], blas_static_libs_fosscuda) + self.assertEqual(os.environ['BLAS_MT_SHARED_LIBS'], blas_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['BLAS_MT_STATIC_LIBS'], blas_mt_static_libs_fosscuda) + self.assertEqual(os.environ['LIBBLAS'], libblas_fosscuda) + self.assertEqual(os.environ['LIBBLAS_MT'], libblas_mt_fosscuda) + + self.assertEqual(os.environ['LAPACK_SHARED_LIBS'], lapack_shared_libs_fosscuda) + self.assertEqual(os.environ['LAPACK_STATIC_LIBS'], lapack_static_libs_fosscuda) + self.assertEqual(os.environ['LAPACK_MT_SHARED_LIBS'], lapack_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['LAPACK_MT_STATIC_LIBS'], lapack_mt_static_libs_fosscuda) + self.assertEqual(os.environ['LIBLAPACK'], liblapack_fosscuda) + self.assertEqual(os.environ['LIBLAPACK_MT'], liblapack_mt_fosscuda) + + self.assertEqual(os.environ['BLAS_LAPACK_SHARED_LIBS'], blas_shared_libs_fosscuda) + self.assertEqual(os.environ['BLAS_LAPACK_STATIC_LIBS'], blas_static_libs_fosscuda) + self.assertEqual(os.environ['BLAS_LAPACK_MT_SHARED_LIBS'], blas_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['BLAS_LAPACK_MT_STATIC_LIBS'], blas_mt_static_libs_fosscuda) + + self.assertEqual(os.environ['FFT_SHARED_LIBS'], fft_shared_libs_fosscuda) + self.assertEqual(os.environ['FFT_STATIC_LIBS'], fft_static_libs_fosscuda) + self.assertEqual(os.environ['FFT_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['FFT_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) + self.assertEqual(os.environ['FFTW_SHARED_LIBS'], fft_shared_libs_fosscuda) + self.assertEqual(os.environ['FFTW_STATIC_LIBS'], fft_static_libs_fosscuda) + self.assertEqual(os.environ['FFTW_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['FFTW_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) + self.assertEqual(os.environ['LIBFFT'], libfft_fosscuda) + self.assertEqual(os.environ['LIBFFT_MT'], libfft_mt_fosscuda) + + self.assertEqual(os.environ['LIBSCALAPACK'], libscalack_fosscuda) + self.assertEqual(os.environ['LIBSCALAPACK_MT'], libscalack_mt_fosscuda) + self.assertEqual(os.environ['SCALAPACK_SHARED_LIBS'], scalapack_shared_libs_fosscuda) + self.assertEqual(os.environ['SCALAPACK_STATIC_LIBS'], scalapack_static_libs_fosscuda) + self.assertEqual(os.environ['SCALAPACK_MT_SHARED_LIBS'], scalapack_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['SCALAPACK_MT_STATIC_LIBS'], scalapack_mt_static_libs_fosscuda) + self.modtool.purge() tc = self.get_toolchain('intel', version='2018a') tc.prepare() From e11b9bd7ac62ebd3508dd6240e3f06b68f1a9c62 Mon Sep 17 00:00:00 2001 From: sam Date: Mon, 27 Nov 2023 17:47:53 +0100 Subject: [PATCH 03/11] fix --- test/framework/toolchain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/framework/toolchain.py b/test/framework/toolchain.py index 8809278193..bee0eec8a9 100644 --- a/test/framework/toolchain.py +++ b/test/framework/toolchain.py @@ -1840,8 +1840,8 @@ def test_old_new_iccifort(self): scalapack_mt_static_libs_fosscuda = "libscalapack.a,libopenblas.a,libgfortran.a,libpthread.a" scalapack_mt_shared_libs_fosscuda = scalapack_mt_static_libs_fosscuda.replace('.a', '.' + shlib_ext) - for tc in [('fosscuda', '2018a'), ('foss', '2023a')]: - tc = self.get_toolchain(tc[0], version=tc[1]) + for toolc in [('fosscuda', '2018a'), ('foss', '2023a')]: + tc = self.get_toolchain(toolc[0], version=toolc[1]) tc.prepare() self.assertEqual(os.environ['BLAS_SHARED_LIBS'], blas_shared_libs_fosscuda) self.assertEqual(os.environ['BLAS_STATIC_LIBS'], blas_static_libs_fosscuda) From 7e6993fafdab1c78391bc8c494018cf92848cbad Mon Sep 17 00:00:00 2001 From: sam Date: Mon, 27 Nov 2023 18:40:46 +0100 Subject: [PATCH 04/11] add foss/2023a module for testing --- test/framework/modules/foss/2023a | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 test/framework/modules/foss/2023a diff --git a/test/framework/modules/foss/2023a b/test/framework/modules/foss/2023a new file mode 100644 index 0000000000..05540a45f5 --- /dev/null +++ b/test/framework/modules/foss/2023a @@ -0,0 +1,45 @@ +#%Module + +proc ModulesHelp { } { + puts stderr { GCC based compiler toolchain including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK. - Homepage: (none) +} +} + +module-whatis {GCC based compiler toolchain including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK. - Homepage: (none)} + +set root /prefix/software/foss/2023a + +conflict foss + +if { ![is-loaded GCC/12.3.0] } { + module load GCC/12.3.0 +} + +if { ![is-loaded OpenMPI/4.1.5-GCC-12.3.0] } { + module load OpenMPI/4.1.5-GCC-12.3.0 +} + +if { ![is-loaded FlexiBLAS/3.3.1-GCC-12.3.0] } { + module load FlexiBLAS/3.3.1-GCC-12.3.0 +} + +if { ![is-loaded FFTW/3.3.10-GCC-12.3.0] } { + module load FFTW/3.3.10-GCC-12.3.0 +} + +if { ![is-loaded FFTW.MPI/3.3.10-gompi-2023a] } { + module load FFTW.MPI/3.3.10-gompi-2023a +} + +if { ![is-loaded ScaLAPACK/2.2.0-gompi-2023a-fb] } { + module load ScaLAPACK/2.2.0-gompi-2023a-fb +} + +setenv EBROOTFOSS "$root" +setenv EBVERSIONFOSS "2023a" +setenv EBDEVELFOSS "$root/easybuild/foss-2023a-easybuild-devel" + + +# built with EasyBuild version 1.4.0dev From 873a001bb9bf98512ef218f9f103aa262cc218a1 Mon Sep 17 00:00:00 2001 From: sam Date: Sat, 2 Dec 2023 20:21:44 +0100 Subject: [PATCH 05/11] add deps --- .../modules/FFTW.MPI/3.3.10-gompi-2023a | 42 +++++++++++++++++ test/framework/modules/FFTW/3.3.10-GCC-12.3.0 | 43 +++++++++++++++++ .../modules/FlexiBLAS/3.3.1-GCC-12.3.0 | 47 +++++++++++++++++++ test/framework/modules/GCC/12.3.0 | 38 +++++++++++++++ test/framework/modules/GCCcore/12.3.0 | 37 +++++++++++++++ .../modules/OpenBLAS/0.3.23-GCC-12.3.0 | 38 +++++++++++++++ .../modules/ScaLAPACK/2.2.0-gompi-2023a-fb | 43 +++++++++++++++++ .../modules/binutils/2.40-GCCcore-12.3.0 | 44 +++++++++++++++++ test/framework/modules/foss/2023a | 41 +++++++++------- .../modules/zlib/1.2.13-GCCcore-12.3.0 | 44 +++++++++++++++++ 10 files changed, 401 insertions(+), 16 deletions(-) create mode 100644 test/framework/modules/FFTW.MPI/3.3.10-gompi-2023a create mode 100644 test/framework/modules/FFTW/3.3.10-GCC-12.3.0 create mode 100644 test/framework/modules/FlexiBLAS/3.3.1-GCC-12.3.0 create mode 100644 test/framework/modules/GCC/12.3.0 create mode 100644 test/framework/modules/GCCcore/12.3.0 create mode 100644 test/framework/modules/OpenBLAS/0.3.23-GCC-12.3.0 create mode 100644 test/framework/modules/ScaLAPACK/2.2.0-gompi-2023a-fb create mode 100644 test/framework/modules/binutils/2.40-GCCcore-12.3.0 create mode 100644 test/framework/modules/zlib/1.2.13-GCCcore-12.3.0 diff --git a/test/framework/modules/FFTW.MPI/3.3.10-gompi-2023a b/test/framework/modules/FFTW.MPI/3.3.10-gompi-2023a new file mode 100644 index 0000000000..e35c12d348 --- /dev/null +++ b/test/framework/modules/FFTW.MPI/3.3.10-gompi-2023a @@ -0,0 +1,42 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) +in one or more dimensions, of arbitrary input size, and of both real and complex data. + + +More information +================ + - Homepage: https://www.fftw.org + } +} + +module-whatis {Description: FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) +in one or more dimensions, of arbitrary input size, and of both real and complex data.} +module-whatis {Homepage: https://www.fftw.org} +module-whatis {URL: https://www.fftw.org} + +set root /prefix/software/FFTW.MPI/3.3.10-gompi-2023a + +conflict FFTW.MPI + +if { ![ is-loaded gompi/2023a ] } { + module load gompi/2023a +} + +if { ![ is-loaded FFTW/3.3.10-GCC-12.3.0 ] } { + module load FFTW/3.3.10-GCC-12.3.0 +} + +prepend-path CMAKE_PREFIX_PATH $root +prepend-path CPATH $root/include +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path LIBRARY_PATH $root/lib +setenv EBROOTFFTWMPI "$root" +setenv EBVERSIONFFTWMPI "3.3.10" +setenv EBDEVELFFTWMPI "$root/easybuild/FFTW.MPI-3.3.10-gompi-2023a-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/FFTW/3.3.10-GCC-12.3.0 b/test/framework/modules/FFTW/3.3.10-GCC-12.3.0 new file mode 100644 index 0000000000..2ae82a0193 --- /dev/null +++ b/test/framework/modules/FFTW/3.3.10-GCC-12.3.0 @@ -0,0 +1,43 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) +in one or more dimensions, of arbitrary input size, and of both real and complex data. + + +More information +================ + - Homepage: https://www.fftw.org + } +} + +module-whatis {Description: FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) +in one or more dimensions, of arbitrary input size, and of both real and complex data.} +module-whatis {Homepage: https://www.fftw.org} +module-whatis {URL: https://www.fftw.org} + +set root /prefix/software/FFTW/3.3.10-GCC-12.3.0 + +conflict FFTW + +if { ![ is-loaded GCC/12.3.0 ] } { + module load GCC/12.3.0 +} + +prepend-path CMAKE_PREFIX_PATH $root +prepend-path CPATH $root/include +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path LIBRARY_PATH $root/lib +prepend-path MANPATH $root/share/man +prepend-path PATH $root/bin +prepend-path PKG_CONFIG_PATH $root/lib/pkgconfig +prepend-path XDG_DATA_DIRS $root/share + +setenv EBROOTFFTW "$root" +setenv EBVERSIONFFTW "3.3.10" +setenv EBDEVELFFTW "$root/easybuild/FFTW-3.3.10-GCC-12.3.0-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/FlexiBLAS/3.3.1-GCC-12.3.0 b/test/framework/modules/FlexiBLAS/3.3.1-GCC-12.3.0 new file mode 100644 index 0000000000..00f02d0460 --- /dev/null +++ b/test/framework/modules/FlexiBLAS/3.3.1-GCC-12.3.0 @@ -0,0 +1,47 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +FlexiBLAS is a wrapper library that enables the exchange of the BLAS and LAPACK implementation +used by a program without recompiling or relinking it. + + +More information +================ + - Homepage: https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release + } +} + +module-whatis {Description: FlexiBLAS is a wrapper library that enables the exchange of the BLAS and LAPACK implementation +used by a program without recompiling or relinking it.} +module-whatis {Homepage: https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release} +module-whatis {URL: https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release} + +set root /prefix/software/FlexiBLAS/3.3.1-GCC-12.3.0 + +conflict FlexiBLAS + +if { ![ is-loaded GCC/12.3.0 ] } { + module load GCC/12.3.0 +} + +if { ![ is-loaded OpenBLAS/0.3.23-GCC-12.3.0 ] } { + module load OpenBLAS/0.3.23-GCC-12.3.0 +} + +prepend-path CMAKE_PREFIX_PATH $root +prepend-path CPATH $root/include +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path LIBRARY_PATH $root/lib +prepend-path MANPATH $root/share/man +prepend-path PATH $root/bin +prepend-path PKG_CONFIG_PATH $root/lib/pkgconfig +prepend-path XDG_DATA_DIRS $root/share + +setenv EBROOTFLEXIBLAS "$root" +setenv EBVERSIONFLEXIBLAS "3.3.1" +setenv EBDEVELFLEXIBLAS "$root/easybuild/FlexiBLAS-3.3.1-GCC-12.3.0-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/GCC/12.3.0 b/test/framework/modules/GCC/12.3.0 new file mode 100644 index 0000000000..5a21e5af1c --- /dev/null +++ b/test/framework/modules/GCC/12.3.0 @@ -0,0 +1,38 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...). + + +More information +================ + - Homepage: https://gcc.gnu.org/ + } +} + +module-whatis {Description: The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...).} +module-whatis {Homepage: https://gcc.gnu.org/} +module-whatis {URL: https://gcc.gnu.org/} + +set root /prefix/software/GCC/12.3.0 + +conflict GCC + +if { ![ is-loaded GCCcore/12.3.0 ] } { + module load GCCcore/12.3.0 +} + +if { ![ is-loaded binutils/2.40-GCCcore-12.3.0 ] } { + module load binutils/2.40-GCCcore-12.3.0 +} + +setenv EBROOTGCC "$root" +setenv EBVERSIONGCC "12.3.0" +setenv EBDEVELGCC "$root/easybuild/GCC-12.3.0-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/GCCcore/12.3.0 b/test/framework/modules/GCCcore/12.3.0 new file mode 100644 index 0000000000..745b111007 --- /dev/null +++ b/test/framework/modules/GCCcore/12.3.0 @@ -0,0 +1,37 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...). + + +More information +================ + - Homepage: https://gcc.gnu.org/ + } +} + +module-whatis {Description: The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...).} +module-whatis {Homepage: https://gcc.gnu.org/} +module-whatis {URL: https://gcc.gnu.org/} + +set root /prefix/software/GCCcore/12.3.0 + +conflict GCCcore + +prepend-path CMAKE_LIBRARY_PATH $root/lib64 +prepend-path CMAKE_PREFIX_PATH $root +prepend-path LD_LIBRARY_PATH $root/lib64 +prepend-path MANPATH $root/share/man +prepend-path PATH $root/bin +prepend-path XDG_DATA_DIRS $root/share + +setenv EBROOTGCCCORE "$root" +setenv EBVERSIONGCCCORE "12.3.0" +setenv EBDEVELGCCCORE "$root/easybuild/GCCcore-12.3.0-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/OpenBLAS/0.3.23-GCC-12.3.0 b/test/framework/modules/OpenBLAS/0.3.23-GCC-12.3.0 new file mode 100644 index 0000000000..89a72a65bc --- /dev/null +++ b/test/framework/modules/OpenBLAS/0.3.23-GCC-12.3.0 @@ -0,0 +1,38 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. + + +More information +================ + - Homepage: http://www.openblas.net/ + } +} + +module-whatis {Description: OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.} +module-whatis {Homepage: http://www.openblas.net/} +module-whatis {URL: http://www.openblas.net/} + +set root /prefix/software/OpenBLAS/0.3.23-GCC-12.3.0 + +conflict OpenBLAS + +if { ![ is-loaded GCC/12.3.0 ] } { + module load GCC/12.3.0 +} + +prepend-path CMAKE_PREFIX_PATH $root +prepend-path CPATH $root/include +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path LIBRARY_PATH $root/lib +prepend-path PKG_CONFIG_PATH $root/lib/pkgconfig + +setenv EBROOTOPENBLAS "$root" +setenv EBVERSIONOPENBLAS "0.3.23" +setenv EBDEVELOPENBLAS "$root/easybuild/OpenBLAS-0.3.23-GCC-12.3.0-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/ScaLAPACK/2.2.0-gompi-2023a-fb b/test/framework/modules/ScaLAPACK/2.2.0-gompi-2023a-fb new file mode 100644 index 0000000000..7118eebf4f --- /dev/null +++ b/test/framework/modules/ScaLAPACK/2.2.0-gompi-2023a-fb @@ -0,0 +1,43 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK routines + redesigned for distributed memory MIMD parallel computers. + + +More information +================ + - Homepage: https://www.netlib.org/scalapack/ + } +} + +module-whatis {Description: The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK routines + redesigned for distributed memory MIMD parallel computers.} +module-whatis {Homepage: https://www.netlib.org/scalapack/} +module-whatis {URL: https://www.netlib.org/scalapack/} + +set root /prefix/software/ScaLAPACK/2.2.0-gompi-2023a-fb + +conflict ScaLAPACK + +if { ![ is-loaded gompi/2023a ] } { + module load gompi/2023a +} + +if { ![ is-loaded FlexiBLAS/3.3.1-GCC-12.3.0 ] } { + module load FlexiBLAS/3.3.1-GCC-12.3.0 +} + +prepend-path CMAKE_PREFIX_PATH $root +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path LIBRARY_PATH $root/lib +prepend-path PKG_CONFIG_PATH $root/lib/pkgconfig + +setenv EBROOTSCALAPACK "$root" +setenv EBVERSIONSCALAPACK "2.2.0" +setenv EBDEVELSCALAPACK "$root/easybuild/ScaLAPACK-2.2.0-gompi-2023a-fb-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/binutils/2.40-GCCcore-12.3.0 b/test/framework/modules/binutils/2.40-GCCcore-12.3.0 new file mode 100644 index 0000000000..7975adcb60 --- /dev/null +++ b/test/framework/modules/binutils/2.40-GCCcore-12.3.0 @@ -0,0 +1,44 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +binutils: GNU binary utilities + + +More information +================ + - Homepage: https://directory.fsf.org/project/binutils/ + } +} + +module-whatis {Description: binutils: GNU binary utilities} +module-whatis {Homepage: https://directory.fsf.org/project/binutils/} +module-whatis {URL: https://directory.fsf.org/project/binutils/} + +set root /prefix/software/binutils/2.40-GCCcore-12.3.0 + +conflict binutils + +if { ![ is-loaded GCCcore/12.3.0 ] } { + module load GCCcore/12.3.0 +} + +if { ![ is-loaded zlib/1.2.13-GCCcore-12.3.0 ] } { + module load zlib/1.2.13-GCCcore-12.3.0 +} + +prepend-path CMAKE_PREFIX_PATH $root +prepend-path CPATH $root/include +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path LIBRARY_PATH $root/lib +prepend-path MANPATH $root/share/man +prepend-path PATH $root/bin +prepend-path XDG_DATA_DIRS $root/share + +setenv EBROOTBINUTILS "$root" +setenv EBVERSIONBINUTILS "2.40" +setenv EBDEVELBINUTILS "$root/easybuild/binutils-2.40-GCCcore-12.3.0-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/foss/2023a b/test/framework/modules/foss/2023a index 05540a45f5..448c5a77be 100644 --- a/test/framework/modules/foss/2023a +++ b/test/framework/modules/foss/2023a @@ -1,39 +1,49 @@ #%Module - proc ModulesHelp { } { - puts stderr { GCC based compiler toolchain including - OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK. - Homepage: (none) -} + puts stderr { + +Description +=========== +GNU Compiler Collection (GCC) based compiler toolchain, including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK. + + +More information +================ + - Homepage: https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain + } } -module-whatis {GCC based compiler toolchain including - OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK. - Homepage: (none)} +module-whatis {Description: GNU Compiler Collection (GCC) based compiler toolchain, including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK.} +module-whatis {Homepage: https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain} +module-whatis {URL: https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain} -set root /prefix/software/foss/2023a +set root /prefix/software/foss/2023a -conflict foss +conflict foss -if { ![is-loaded GCC/12.3.0] } { +if { ![ is-loaded GCC/12.3.0 ] } { module load GCC/12.3.0 } -if { ![is-loaded OpenMPI/4.1.5-GCC-12.3.0] } { +if { ![ is-loaded OpenMPI/4.1.5-GCC-12.3.0 ] } { module load OpenMPI/4.1.5-GCC-12.3.0 } -if { ![is-loaded FlexiBLAS/3.3.1-GCC-12.3.0] } { +if { ![ is-loaded FlexiBLAS/3.3.1-GCC-12.3.0 ] } { module load FlexiBLAS/3.3.1-GCC-12.3.0 } -if { ![is-loaded FFTW/3.3.10-GCC-12.3.0] } { +if { ![ is-loaded FFTW/3.3.10-GCC-12.3.0 ] } { module load FFTW/3.3.10-GCC-12.3.0 } -if { ![is-loaded FFTW.MPI/3.3.10-gompi-2023a] } { +if { ![ is-loaded FFTW.MPI/3.3.10-gompi-2023a ] } { module load FFTW.MPI/3.3.10-gompi-2023a } -if { ![is-loaded ScaLAPACK/2.2.0-gompi-2023a-fb] } { +if { ![ is-loaded ScaLAPACK/2.2.0-gompi-2023a-fb ] } { module load ScaLAPACK/2.2.0-gompi-2023a-fb } @@ -41,5 +51,4 @@ setenv EBROOTFOSS "$root" setenv EBVERSIONFOSS "2023a" setenv EBDEVELFOSS "$root/easybuild/foss-2023a-easybuild-devel" - -# built with EasyBuild version 1.4.0dev +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/zlib/1.2.13-GCCcore-12.3.0 b/test/framework/modules/zlib/1.2.13-GCCcore-12.3.0 new file mode 100644 index 0000000000..a82945bd0c --- /dev/null +++ b/test/framework/modules/zlib/1.2.13-GCCcore-12.3.0 @@ -0,0 +1,44 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +zlib is designed to be a free, general-purpose, legally unencumbered -- that is, + not covered by any patents -- lossless data-compression library for use on virtually any + computer hardware and operating system. + + +More information +================ + - Homepage: https://www.zlib.net/ + } +} + +module-whatis {Description: zlib is designed to be a free, general-purpose, legally unencumbered -- that is, + not covered by any patents -- lossless data-compression library for use on virtually any + computer hardware and operating system.} +module-whatis {Homepage: https://www.zlib.net/} +module-whatis {URL: https://www.zlib.net/} + +set root /prefix/software/zlib/1.2.13-GCCcore-12.3.0 + +conflict zlib + +if { ![ is-loaded GCCcore/12.3.0 ] } { + module load GCCcore/12.3.0 +} + +prepend-path CMAKE_PREFIX_PATH $root +prepend-path CPATH $root/include +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path LIBRARY_PATH $root/lib +prepend-path MANPATH $root/share/man +prepend-path PKG_CONFIG_PATH $root/lib/pkgconfig +prepend-path XDG_DATA_DIRS $root/share + +setenv EBROOTZLIB "$root" +setenv EBVERSIONZLIB "1.2.13" +setenv EBDEVELZLIB "$root/easybuild/zlib-1.2.13-GCCcore-12.3.0-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 From 62810326b1d8947c108594af831364c9648dd55f Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 6 Dec 2023 21:28:59 +0100 Subject: [PATCH 06/11] more deps --- .../modules/OpenMPI/4.1.5-GCC-12.3.0 | 70 +++++++++++++++++++ .../modules/PMIx/4.2.4-GCCcore-12.3.0 | 0 .../modules/UCC/1.2.0-GCCcore-12.3.0 | 0 .../modules/UCX/1.14.1-GCCcore-12.3.0 | 0 test/framework/modules/gompi/2023a | 38 ++++++++++ .../modules/hwloc/2.9.1-GCCcore-12.3.0 | 0 .../modules/libevent/2.1.12-GCCcore-12.3.0 | 0 7 files changed, 108 insertions(+) create mode 100644 test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 create mode 100644 test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 create mode 100644 test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 create mode 100644 test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 create mode 100644 test/framework/modules/gompi/2023a create mode 100644 test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 create mode 100644 test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 diff --git a/test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 b/test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 new file mode 100644 index 0000000000..eb1563c578 --- /dev/null +++ b/test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 @@ -0,0 +1,70 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +The Open MPI Project is an open source MPI-3 implementation. + + +More information +================ + - Homepage: https://www.open-mpi.org/ + } +} + +module-whatis {Description: The Open MPI Project is an open source MPI-3 implementation.} +module-whatis {Homepage: https://www.open-mpi.org/} +module-whatis {URL: https://www.open-mpi.org/} + +set root /scratch/brussel/vo/000/bvo00005/vsc10009/ebtest/tclmodules/software/OpenMPI/4.1.5-GCC-12.3.0 + +conflict OpenMPI + +if { ![ is-loaded GCC/12.3.0 ] } { + module load GCC/12.3.0 +} + +if { ![ is-loaded zlib/1.2.13-GCCcore-12.3.0 ] } { + module load zlib/1.2.13-GCCcore-12.3.0 +} + +if { ![ is-loaded hwloc/2.9.1-GCCcore-12.3.0 ] } { + module load hwloc/2.9.1-GCCcore-12.3.0 +} + +if { ![ is-loaded libevent/2.1.12-GCCcore-12.3.0 ] } { + module load libevent/2.1.12-GCCcore-12.3.0 +} + +if { ![ is-loaded UCX/1.14.1-GCCcore-12.3.0 ] } { + module load UCX/1.14.1-GCCcore-12.3.0 +} + +if { ![ is-loaded libfabric/1.18.0-GCCcore-12.3.0 ] } { + module load libfabric/1.18.0-GCCcore-12.3.0 +} + +if { ![ is-loaded PMIx/4.2.4-GCCcore-12.3.0 ] } { + module load PMIx/4.2.4-GCCcore-12.3.0 +} + +if { ![ is-loaded UCC/1.2.0-GCCcore-12.3.0 ] } { + module load UCC/1.2.0-GCCcore-12.3.0 +} + +prepend_path("CMAKE_PREFIX_PATH", root) +prepend_path("CPATH", pathJoin(root, "include")) +prepend_path("LD_LIBRARY_PATH", pathJoin(root, "lib")) +prepend_path("LIBRARY_PATH", pathJoin(root, "lib")) +prepend_path("MANPATH", pathJoin(root, "share/man")) +prepend_path("PATH", pathJoin(root, "bin")) +prepend_path("PKG_CONFIG_PATH", pathJoin(root, "lib/pkgconfig")) +prepend_path("XDG_DATA_DIRS", pathJoin(root, "share")) + +setenv EBROOTOPENMPI "$root" +setenv EBVERSIONOPENMPI "4.1.5" +setenv EBDEVELOPENMPI "$root/easybuild/OpenMPI-4.1.5-GCC-12.3.0-easybuild-devel" + +setenv SLURM_MPI_TYPE "pmix" +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 b/test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 b/test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 b/test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/framework/modules/gompi/2023a b/test/framework/modules/gompi/2023a new file mode 100644 index 0000000000..c81eeff8df --- /dev/null +++ b/test/framework/modules/gompi/2023a @@ -0,0 +1,38 @@ +#%Module +proc ModulesHelp { } { + puts stderr { + +Description +=========== +GNU Compiler Collection (GCC) based compiler toolchain, + including OpenMPI for MPI support. + + +More information +================ + - Homepage: (none) + } +} + +module-whatis {Description: GNU Compiler Collection (GCC) based compiler toolchain, + including OpenMPI for MPI support.} +module-whatis {Homepage: (none)} +module-whatis {URL: (none)} + +set root /prefix/software/gompi/2023a + +conflict gompi + +if { ![ is-loaded GCC/12.3.0 ] } { + module load GCC/12.3.0 +} + +if { ![ is-loaded OpenMPI/4.1.5-GCC-12.3.0 ] } { + module load OpenMPI/4.1.5-GCC-12.3.0 +} + +setenv EBROOTGOMPI "$root" +setenv EBVERSIONGOMPI "2023a" +setenv EBDEVELGOMPI "$root/easybuild/gompi-2023a-easybuild-devel" + +# Built with EasyBuild version 4.9.0.dev0-rea8433dcf5e6edea3e72ad9bd9e23023ecc6b228 diff --git a/test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 b/test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 b/test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 new file mode 100644 index 0000000000..e69de29bb2 From 0b702ee4cbee3128b3766897dec019ae0bcc9186 Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 6 Dec 2023 22:03:52 +0100 Subject: [PATCH 07/11] add magic cookies --- test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 | 1 + test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 | 1 + test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 | 1 + test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 | 1 + test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 | 1 + 5 files changed, 5 insertions(+) diff --git a/test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 b/test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 index e69de29bb2..1c148cdd28 100644 --- a/test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 +++ b/test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 @@ -0,0 +1 @@ +#%Module diff --git a/test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 b/test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 index e69de29bb2..1c148cdd28 100644 --- a/test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 +++ b/test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 @@ -0,0 +1 @@ +#%Module diff --git a/test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 b/test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 index e69de29bb2..1c148cdd28 100644 --- a/test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 +++ b/test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 @@ -0,0 +1 @@ +#%Module diff --git a/test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 b/test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 index e69de29bb2..1c148cdd28 100644 --- a/test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 +++ b/test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 @@ -0,0 +1 @@ +#%Module diff --git a/test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 b/test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 index e69de29bb2..1c148cdd28 100644 --- a/test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 +++ b/test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 @@ -0,0 +1 @@ +#%Module From ce64b015430e339a86d9bfe8624e2fc774d0615d Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 6 Dec 2023 22:10:54 +0100 Subject: [PATCH 08/11] fix test_avail --- test/framework/modules.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/framework/modules.py b/test/framework/modules.py index 7bf87130bd..2d0c52606e 100644 --- a/test/framework/modules.py +++ b/test/framework/modules.py @@ -197,12 +197,12 @@ def test_avail(self): # test modules include 3 GCC modules and one GCCcore module ms = self.modtool.available('GCC') - expected = ['GCC/4.6.3', 'GCC/4.6.4', 'GCC/6.4.0-2.28', 'GCC/7.3.0-2.30'] + expected = ['GCC/4.6.3', 'GCC/4.6.4', 'GCC/6.4.0-2.28', 'GCC/7.3.0-2.30', 'GCC/12.3.0'] # Tcl-only modules tool does an exact match on module name, Lmod & Tcl/C do prefix matching # EnvironmentModules is a subclass of EnvironmentModulesTcl, but Modules 4+ behaves similarly to Tcl/C impl., # so also append GCCcore/6.2.0 if we are an instance of EnvironmentModules if not isinstance(self.modtool, EnvironmentModulesTcl) or isinstance(self.modtool, EnvironmentModules): - expected.append('GCCcore/6.2.0') + expected.extend(['GCCcore/6.2.0', 'GCCcore/12.3.0']) self.assertEqual(ms, expected) # test modules include one GCC/4.6.3 module From 21c15f579a1f3e14ef1afd9463d59613aba2db91 Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 6 Dec 2023 22:44:10 +0100 Subject: [PATCH 09/11] more fixes --- test/framework/modules.py | 4 ++-- test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/test/framework/modules.py b/test/framework/modules.py index 2d0c52606e..916e407d92 100644 --- a/test/framework/modules.py +++ b/test/framework/modules.py @@ -197,12 +197,12 @@ def test_avail(self): # test modules include 3 GCC modules and one GCCcore module ms = self.modtool.available('GCC') - expected = ['GCC/4.6.3', 'GCC/4.6.4', 'GCC/6.4.0-2.28', 'GCC/7.3.0-2.30', 'GCC/12.3.0'] + expected = ['GCC/12.3.0', 'GCC/4.6.3', 'GCC/4.6.4', 'GCC/6.4.0-2.28', 'GCC/7.3.0-2.30'] # Tcl-only modules tool does an exact match on module name, Lmod & Tcl/C do prefix matching # EnvironmentModules is a subclass of EnvironmentModulesTcl, but Modules 4+ behaves similarly to Tcl/C impl., # so also append GCCcore/6.2.0 if we are an instance of EnvironmentModules if not isinstance(self.modtool, EnvironmentModulesTcl) or isinstance(self.modtool, EnvironmentModules): - expected.extend(['GCCcore/6.2.0', 'GCCcore/12.3.0']) + expected.extend(['GCCcore/12.3.0', 'GCCcore/6.2.0']) self.assertEqual(ms, expected) # test modules include one GCC/4.6.3 module diff --git a/test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 b/test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 index eb1563c578..481f81e627 100644 --- a/test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 +++ b/test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 @@ -53,14 +53,14 @@ if { ![ is-loaded UCC/1.2.0-GCCcore-12.3.0 ] } { module load UCC/1.2.0-GCCcore-12.3.0 } -prepend_path("CMAKE_PREFIX_PATH", root) -prepend_path("CPATH", pathJoin(root, "include")) -prepend_path("LD_LIBRARY_PATH", pathJoin(root, "lib")) -prepend_path("LIBRARY_PATH", pathJoin(root, "lib")) -prepend_path("MANPATH", pathJoin(root, "share/man")) -prepend_path("PATH", pathJoin(root, "bin")) -prepend_path("PKG_CONFIG_PATH", pathJoin(root, "lib/pkgconfig")) -prepend_path("XDG_DATA_DIRS", pathJoin(root, "share")) +prepend-path CMAKE_PREFIX_PATH $root +prepend-path CPATH $root/include +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path LIBRARY_PATH $root/lib +prepend-path MANPATH $root/share/man +prepend-path PATH $root/bin +prepend-path PKG_CONFIG_PATH $root/lib/pkgconfig +prepend-path XDG_DATA_DIRS $root/share setenv EBROOTOPENMPI "$root" setenv EBVERSIONOPENMPI "4.1.5" From 3f05f7ed5b4545c1acc78817d63d1b692252abeb Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 6 Dec 2023 22:59:21 +0100 Subject: [PATCH 10/11] add another dep --- test/framework/modules/libfabric/1.18.0-GCCcore-12.3.0 | 1 + 1 file changed, 1 insertion(+) create mode 100644 test/framework/modules/libfabric/1.18.0-GCCcore-12.3.0 diff --git a/test/framework/modules/libfabric/1.18.0-GCCcore-12.3.0 b/test/framework/modules/libfabric/1.18.0-GCCcore-12.3.0 new file mode 100644 index 0000000000..1c148cdd28 --- /dev/null +++ b/test/framework/modules/libfabric/1.18.0-GCCcore-12.3.0 @@ -0,0 +1 @@ +#%Module From 646f7a60310757ebb9a15f3d6659fd2c076bf8aa Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 6 Dec 2023 23:47:05 +0100 Subject: [PATCH 11/11] more test fixes --- test/framework/modules.py | 2 +- test/framework/toolchain.py | 131 +++++++++++++++++++++++++----------- 2 files changed, 92 insertions(+), 41 deletions(-) diff --git a/test/framework/modules.py b/test/framework/modules.py index 916e407d92..4a8a6b15df 100644 --- a/test/framework/modules.py +++ b/test/framework/modules.py @@ -54,7 +54,7 @@ # number of modules included for testing purposes -TEST_MODULES_COUNT = 92 +TEST_MODULES_COUNT = 110 class ModulesTest(EnhancedTestCase): diff --git a/test/framework/toolchain.py b/test/framework/toolchain.py index bee0eec8a9..aacde3baf7 100644 --- a/test/framework/toolchain.py +++ b/test/framework/toolchain.py @@ -1840,46 +1840,97 @@ def test_old_new_iccifort(self): scalapack_mt_static_libs_fosscuda = "libscalapack.a,libopenblas.a,libgfortran.a,libpthread.a" scalapack_mt_shared_libs_fosscuda = scalapack_mt_static_libs_fosscuda.replace('.a', '.' + shlib_ext) - for toolc in [('fosscuda', '2018a'), ('foss', '2023a')]: - tc = self.get_toolchain(toolc[0], version=toolc[1]) - tc.prepare() - self.assertEqual(os.environ['BLAS_SHARED_LIBS'], blas_shared_libs_fosscuda) - self.assertEqual(os.environ['BLAS_STATIC_LIBS'], blas_static_libs_fosscuda) - self.assertEqual(os.environ['BLAS_MT_SHARED_LIBS'], blas_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['BLAS_MT_STATIC_LIBS'], blas_mt_static_libs_fosscuda) - self.assertEqual(os.environ['LIBBLAS'], libblas_fosscuda) - self.assertEqual(os.environ['LIBBLAS_MT'], libblas_mt_fosscuda) - - self.assertEqual(os.environ['LAPACK_SHARED_LIBS'], lapack_shared_libs_fosscuda) - self.assertEqual(os.environ['LAPACK_STATIC_LIBS'], lapack_static_libs_fosscuda) - self.assertEqual(os.environ['LAPACK_MT_SHARED_LIBS'], lapack_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['LAPACK_MT_STATIC_LIBS'], lapack_mt_static_libs_fosscuda) - self.assertEqual(os.environ['LIBLAPACK'], liblapack_fosscuda) - self.assertEqual(os.environ['LIBLAPACK_MT'], liblapack_mt_fosscuda) - - self.assertEqual(os.environ['BLAS_LAPACK_SHARED_LIBS'], blas_shared_libs_fosscuda) - self.assertEqual(os.environ['BLAS_LAPACK_STATIC_LIBS'], blas_static_libs_fosscuda) - self.assertEqual(os.environ['BLAS_LAPACK_MT_SHARED_LIBS'], blas_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['BLAS_LAPACK_MT_STATIC_LIBS'], blas_mt_static_libs_fosscuda) - - self.assertEqual(os.environ['FFT_SHARED_LIBS'], fft_shared_libs_fosscuda) - self.assertEqual(os.environ['FFT_STATIC_LIBS'], fft_static_libs_fosscuda) - self.assertEqual(os.environ['FFT_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['FFT_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) - self.assertEqual(os.environ['FFTW_SHARED_LIBS'], fft_shared_libs_fosscuda) - self.assertEqual(os.environ['FFTW_STATIC_LIBS'], fft_static_libs_fosscuda) - self.assertEqual(os.environ['FFTW_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['FFTW_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) - self.assertEqual(os.environ['LIBFFT'], libfft_fosscuda) - self.assertEqual(os.environ['LIBFFT_MT'], libfft_mt_fosscuda) - - self.assertEqual(os.environ['LIBSCALAPACK'], libscalack_fosscuda) - self.assertEqual(os.environ['LIBSCALAPACK_MT'], libscalack_mt_fosscuda) - self.assertEqual(os.environ['SCALAPACK_SHARED_LIBS'], scalapack_shared_libs_fosscuda) - self.assertEqual(os.environ['SCALAPACK_STATIC_LIBS'], scalapack_static_libs_fosscuda) - self.assertEqual(os.environ['SCALAPACK_MT_SHARED_LIBS'], scalapack_mt_shared_libs_fosscuda) - self.assertEqual(os.environ['SCALAPACK_MT_STATIC_LIBS'], scalapack_mt_static_libs_fosscuda) - self.modtool.purge() + tc = self.get_toolchain('fosscuda', version='2018a') + tc.prepare() + self.assertEqual(os.environ['BLAS_SHARED_LIBS'], blas_shared_libs_fosscuda) + self.assertEqual(os.environ['BLAS_STATIC_LIBS'], blas_static_libs_fosscuda) + self.assertEqual(os.environ['BLAS_MT_SHARED_LIBS'], blas_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['BLAS_MT_STATIC_LIBS'], blas_mt_static_libs_fosscuda) + self.assertEqual(os.environ['LIBBLAS'], libblas_fosscuda) + self.assertEqual(os.environ['LIBBLAS_MT'], libblas_mt_fosscuda) + + self.assertEqual(os.environ['LAPACK_SHARED_LIBS'], lapack_shared_libs_fosscuda) + self.assertEqual(os.environ['LAPACK_STATIC_LIBS'], lapack_static_libs_fosscuda) + self.assertEqual(os.environ['LAPACK_MT_SHARED_LIBS'], lapack_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['LAPACK_MT_STATIC_LIBS'], lapack_mt_static_libs_fosscuda) + self.assertEqual(os.environ['LIBLAPACK'], liblapack_fosscuda) + self.assertEqual(os.environ['LIBLAPACK_MT'], liblapack_mt_fosscuda) + + self.assertEqual(os.environ['BLAS_LAPACK_SHARED_LIBS'], blas_shared_libs_fosscuda) + self.assertEqual(os.environ['BLAS_LAPACK_STATIC_LIBS'], blas_static_libs_fosscuda) + self.assertEqual(os.environ['BLAS_LAPACK_MT_SHARED_LIBS'], blas_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['BLAS_LAPACK_MT_STATIC_LIBS'], blas_mt_static_libs_fosscuda) + + self.assertEqual(os.environ['FFT_SHARED_LIBS'], fft_shared_libs_fosscuda) + self.assertEqual(os.environ['FFT_STATIC_LIBS'], fft_static_libs_fosscuda) + self.assertEqual(os.environ['FFT_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['FFT_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) + self.assertEqual(os.environ['FFTW_SHARED_LIBS'], fft_shared_libs_fosscuda) + self.assertEqual(os.environ['FFTW_STATIC_LIBS'], fft_static_libs_fosscuda) + self.assertEqual(os.environ['FFTW_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['FFTW_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) + self.assertEqual(os.environ['LIBFFT'], libfft_fosscuda) + self.assertEqual(os.environ['LIBFFT_MT'], libfft_mt_fosscuda) + + self.assertEqual(os.environ['LIBSCALAPACK'], libscalack_fosscuda) + self.assertEqual(os.environ['LIBSCALAPACK_MT'], libscalack_mt_fosscuda) + self.assertEqual(os.environ['SCALAPACK_SHARED_LIBS'], scalapack_shared_libs_fosscuda) + self.assertEqual(os.environ['SCALAPACK_STATIC_LIBS'], scalapack_static_libs_fosscuda) + self.assertEqual(os.environ['SCALAPACK_MT_SHARED_LIBS'], scalapack_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['SCALAPACK_MT_STATIC_LIBS'], scalapack_mt_static_libs_fosscuda) + self.modtool.purge() + + tc = self.get_toolchain('foss', version='2023a') + tc.prepare() + self.assertEqual(os.environ['BLAS_SHARED_LIBS'], blas_shared_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['BLAS_STATIC_LIBS'], blas_static_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['BLAS_MT_SHARED_LIBS'], + blas_mt_shared_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['BLAS_MT_STATIC_LIBS'], + blas_mt_static_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['LIBBLAS'], libblas_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['LIBBLAS_MT'], libblas_mt_fosscuda.replace('openblas', 'flexiblas')) + + self.assertEqual(os.environ['LAPACK_SHARED_LIBS'], lapack_shared_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['LAPACK_STATIC_LIBS'], lapack_static_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['LAPACK_MT_SHARED_LIBS'], + lapack_mt_shared_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['LAPACK_MT_STATIC_LIBS'], + lapack_mt_static_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['LIBLAPACK'], liblapack_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['LIBLAPACK_MT'], liblapack_mt_fosscuda.replace('openblas', 'flexiblas')) + + self.assertEqual(os.environ['BLAS_LAPACK_SHARED_LIBS'], + blas_shared_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['BLAS_LAPACK_STATIC_LIBS'], + blas_static_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['BLAS_LAPACK_MT_SHARED_LIBS'], + blas_mt_shared_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['BLAS_LAPACK_MT_STATIC_LIBS'], + blas_mt_static_libs_fosscuda.replace('openblas', 'flexiblas')) + + self.assertEqual(os.environ['FFT_SHARED_LIBS'], fft_shared_libs_fosscuda) + self.assertEqual(os.environ['FFT_STATIC_LIBS'], fft_static_libs_fosscuda) + self.assertEqual(os.environ['FFT_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['FFT_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) + self.assertEqual(os.environ['FFTW_SHARED_LIBS'], fft_shared_libs_fosscuda) + self.assertEqual(os.environ['FFTW_STATIC_LIBS'], fft_static_libs_fosscuda) + self.assertEqual(os.environ['FFTW_SHARED_LIBS_MT'], fft_mt_shared_libs_fosscuda) + self.assertEqual(os.environ['FFTW_STATIC_LIBS_MT'], fft_mt_static_libs_fosscuda) + self.assertEqual(os.environ['LIBFFT'], libfft_fosscuda) + self.assertEqual(os.environ['LIBFFT_MT'], libfft_mt_fosscuda) + + self.assertEqual(os.environ['LIBSCALAPACK'], libscalack_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['LIBSCALAPACK_MT'], libscalack_mt_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['SCALAPACK_SHARED_LIBS'], + scalapack_shared_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['SCALAPACK_STATIC_LIBS'], + scalapack_static_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['SCALAPACK_MT_SHARED_LIBS'], + scalapack_mt_shared_libs_fosscuda.replace('openblas', 'flexiblas')) + self.assertEqual(os.environ['SCALAPACK_MT_STATIC_LIBS'], + scalapack_mt_static_libs_fosscuda.replace('openblas', 'flexiblas')) + self.modtool.purge() tc = self.get_toolchain('intel', version='2018a') tc.prepare()