From e7cb3e9fbfc058009fe360524a1b6f4d61ba06cb Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Thu, 22 Jun 2017 18:01:37 +0200 Subject: [PATCH 01/10] (proposal for) foss/2017b toolchain definition --- .../f/FFTW/FFTW-3.3.6-gompi-2017b.eb | 17 ++++++ easybuild/easyconfigs/f/foss/foss-2017b.eb | 35 ++++++++++++ easybuild/easyconfigs/g/gompi/gompi-2017b.eb | 20 +++++++ .../easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb | 18 ++++++ .../h/hwloc/hwloc-1.11.7-GCC-6.3.0-2.28.eb | 24 ++++++++ ...BLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb | 56 +++++++++++++++++++ .../o/OpenMPI/OpenMPI-2.1.1-GCC-6.3.0-2.28.eb | 34 +++++++++++ ...ompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb | 25 +++++++++ 8 files changed, 229 insertions(+) create mode 100644 easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb create mode 100644 easybuild/easyconfigs/f/foss/foss-2017b.eb create mode 100644 easybuild/easyconfigs/g/gompi/gompi-2017b.eb create mode 100644 easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb create mode 100644 easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.3.0-2.28.eb create mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb create mode 100644 easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.3.0-2.28.eb create mode 100644 easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb diff --git a/easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb new file mode 100644 index 000000000000..eee27ec554ea --- /dev/null +++ b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb @@ -0,0 +1,17 @@ +name = 'FFTW' +version = '3.3.6' + +homepage = 'http://www.fftw.org' +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.""" + +toolchain = {'name': 'gompi', 'version': '2017b'} +toolchainopts = {'pic': True} + +source_urls = [homepage] +sources = ['fftw-%(version)s-pl2.tar.gz'] +checksums = ['927e481edbb32575397eb3d62535a856'] + +runtest = 'check' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/f/foss/foss-2017b.eb b/easybuild/easyconfigs/f/foss/foss-2017b.eb new file mode 100644 index 000000000000..20778cf402f8 --- /dev/null +++ b/easybuild/easyconfigs/f/foss/foss-2017b.eb @@ -0,0 +1,35 @@ +easyblock = 'Toolchain' + +name = 'foss' +version = '2017b' + +homepage = '(none)' +description = """GNU Compiler Collection (GCC) based compiler toolchain, including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK.""" + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +gccver = '6.3.0-2.28' + +blaslib = 'OpenBLAS' +blasver = '0.2.19' +blas = '%s-%s' % (blaslib, blasver) +blassuff = '-LAPACK-3.7.0' + +# toolchain used to build foss dependencies +comp_mpi_tc_name = 'gompi' +comp_mpi_tc = (comp_mpi_tc_name, version) + +# compiler toolchain depencies +# we need GCC and OpenMPI as explicit dependencies instead of gompi toolchain +# because of toolchain preperation functions +# For binutils, stick to http://wiki.osdev.org/Cross-Compiler_Successful_Builds +dependencies = [ + ('GCC', gccver), + ('OpenMPI', '2.1.1', '', ('GCC', gccver)), + (blaslib, blasver, blassuff, ('GCC', gccver)), + ('FFTW', '3.3.6', '', comp_mpi_tc), + ('ScaLAPACK', '2.0.2', '-%s%s' % (blas, blassuff), comp_mpi_tc), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/g/gompi/gompi-2017b.eb b/easybuild/easyconfigs/g/gompi/gompi-2017b.eb new file mode 100644 index 000000000000..ff56275f5ccc --- /dev/null +++ b/easybuild/easyconfigs/g/gompi/gompi-2017b.eb @@ -0,0 +1,20 @@ +easyblock = "Toolchain" + +name = 'gompi' +version = '2017b' + +homepage = '(none)' +description = """GNU Compiler Collection (GCC) based compiler toolchain, + including OpenMPI for MPI support.""" + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +gccver = '6.3.0-2.28' + +# compiler toolchain dependencies +dependencies = [ + ('GCC', gccver), # includes both GCC 6.3.0 and binutils 2.27 + ('OpenMPI', '2.1.1', '', ('GCC', gccver)), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb b/easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb new file mode 100644 index 000000000000..7ff64c1745d4 --- /dev/null +++ b/easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb @@ -0,0 +1,18 @@ +name = 'HPL' +version = '2.2' + +homepage = 'http://www.netlib.org/benchmark/hpl/' +description = """HPL is a software package that solves a (random) dense linear system in double precision (64 bits) + arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available + implementation of the High Performance Computing Linpack Benchmark.""" + +toolchain = {'name': 'foss', 'version': '2017b'} +toolchainopts = {'usempi': True} + +sources = [SOURCELOWER_TAR_GZ] +source_urls = ['http://www.netlib.org/benchmark/%(namelower)s'] + +# fix Make dependencies, so parallel build also works +patches = ['HPL_parallel-make.patch'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.3.0-2.28.eb b/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.3.0-2.28.eb new file mode 100644 index 000000000000..72dfa36917e4 --- /dev/null +++ b/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.3.0-2.28.eb @@ -0,0 +1,24 @@ +easyblock = 'ConfigureMake' + +name = 'hwloc' +version = '1.11.7' + +homepage = 'http://www.open-mpi.org/projects/hwloc/' +description = """The Portable Hardware Locality (hwloc) software package provides a portable abstraction +(across OS, versions, architectures, ...) of the hierarchical topology of modern architectures, including +NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading. It also gathers various +system attributes such as cache and memory information as well as the locality of I/O devices such as +network interfaces, InfiniBand HCAs or GPUs. It primarily aims at helping applications with gathering +information about modern computing hardware so as to exploit it accordingly and efficiently.""" + +toolchain = {'name': 'GCC', 'version': '6.3.0-2.28'} + +source_urls = ['http://www.open-mpi.org/software/hwloc/v%(version_major_minor)s/downloads/'] +sources = [SOURCE_TAR_GZ] +checksums = ['ac16bed9cdd3c63bca1fe1ac3de522a1376b1487c4fc85b7b19592e28fd98e26'] + +dependencies = [('numactl', '2.0.11')] + +configopts = "--enable-libnuma=$EBROOTNUMACTL" + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb new file mode 100644 index 000000000000..a1d7e75e794e --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb @@ -0,0 +1,56 @@ +easyblock = 'ConfigureMake' + +name = 'OpenBLAS' +version = '0.2.19' + +lapackver = '3.7.0' +versionsuffix = '-LAPACK-%s' % lapackver + +homepage = 'http://xianyi.github.com/OpenBLAS/' +description = """OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.""" + +toolchain = {'name': 'GCC', 'version': '6.3.0-2.28'} + +lapack_src = 'lapack-%s.tgz' % lapackver +large_src = 'large.tgz' +timing_src = 'timing.tgz' + +lapack_unpack_cmd = 'cd %(name)s-%(version)s; rm -rf lapack-netlib;' +lapack_unpack_cmd += 'mkdir lapack-netlib;' +lapack_unpack_cmd += 'tar -C lapack-netlib --strip-components=1 -zxf %s; cd -' + +sources = [ + 'v%(version)s.tar.gz', + (lapack_src, lapack_unpack_cmd), + large_src, + timing_src, +] +source_urls = [ + # order matters, trying to download the LAPACK tarball from GitHub causes trouble + "http://www.netlib.org/lapack/", + "http://www.netlib.org/lapack/timing/", + "https://github.com/xianyi/OpenBLAS/archive/", +] + +patches = [ + (large_src, '.'), + (timing_src, '.'), + 'OpenBLAS-%(version)s_LAPACK-3.7.0-fixes.patch', +] + +skipsteps = ['configure'] + +buildopts = 'BINARY=64 USE_THREAD=1 CC="$CC" FC="$F77" NO_AFFINITY=1' +installopts = "USE_THREAD=1 PREFIX=%(installdir)s" + +# extensive testing can be enabled by uncommenting the line below +# runtest = 'PATH=.:$PATH lapack-timing' + +sanity_check_paths = { + 'files': ['include/cblas.h', 'include/f77blas.h', 'include/lapacke_config.h', 'include/lapacke.h', + 'include/lapacke_mangling.h', 'include/lapacke_utils.h', 'include/openblas_config.h', + 'lib/libopenblas.a', 'lib/libopenblas.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.3.0-2.28.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.3.0-2.28.eb new file mode 100644 index 000000000000..aba86a17c123 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.3.0-2.28.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'OpenMPI' +version = '2.1.1' + +homepage = 'http://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-2 implementation.""" + +toolchain = {'name': 'GCC', 'version': '6.3.0-2.28'} + +source_urls = ['http://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_GZ] + +checksums = ['afe4bef3c4378bc76eea96c623d5aa4c1c98b9e057d281c646e68869292a77dc'] + +dependencies = [('hwloc', '1.11.7')] + +configopts = '--enable-shared --enable-mpi-thread-multiple --with-verbs ' +configopts += '--enable-mpirun-prefix-by-default ' # suppress failure modes in relation to mpirun path +configopts += '--with-hwloc=$EBROOTHWLOC ' # hwloc support +configopts += '--disable-dlopen ' # statically link component, don't do dynamic loading + +# needed for --with-verbs +osdependencies = [('libibverbs-dev', 'libibverbs-devel')] + +libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"] +sanity_check_paths = { + 'files': ["bin/%s" % binfile for binfile in ["ompi_info", "opal_wrapper", "orterun"]] + + ["lib/lib%s.%s" % (libfile, SHLIB_EXT) for libfile in libs] + + ["include/%s.h" % x for x in ["mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], + 'dirs': [], +} + +moduleclass = 'mpi' diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb new file mode 100644 index 000000000000..a036bb79cb1c --- /dev/null +++ b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb @@ -0,0 +1,25 @@ +name = 'ScaLAPACK' +version = '2.0.2' + +homepage = 'http://www.netlib.org/scalapack/' +description = """The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK routines + redesigned for distributed memory MIMD parallel computers.""" + +toolchain = {'name': 'gompi', 'version': '2017b'} +toolchainopts = {'pic': True} + +source_urls = [homepage] +sources = [SOURCELOWER_TGZ] + +blaslib = 'OpenBLAS' +blasver = '0.2.19' +blassuff = '-LAPACK-3.7.0' + +versionsuffix = "-%s-%s%s" % (blaslib, blasver, blassuff) + +dependencies = [(blaslib, blasver, blassuff, ('GCC', '6.3.0-2.28'))] + +# parallel build tends to fail, so disabling it +parallel = 1 + +moduleclass = 'numlib' From 6b46855e1cf91182be3ba1cbd805ef75585a7bb4 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 28 Jun 2017 13:17:30 +0200 Subject: [PATCH 02/10] bump GCC to 6.4.0 for foss/2017b --- easybuild/easyconfigs/f/foss/foss-2017b.eb | 2 +- easybuild/easyconfigs/g/gompi/gompi-2017b.eb | 4 ++-- ...2.28.eb => hwloc-1.11.7-GCC-6.4.0-2.28.eb} | 2 +- .../numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb | 23 +++++++++++++++++++ ...LAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb} | 2 +- ....28.eb => OpenMPI-2.1.1-GCC-6.4.0-2.28.eb} | 2 +- ...ompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb | 2 +- 7 files changed, 30 insertions(+), 7 deletions(-) rename easybuild/easyconfigs/h/hwloc/{hwloc-1.11.7-GCC-6.3.0-2.28.eb => hwloc-1.11.7-GCC-6.4.0-2.28.eb} (95%) create mode 100644 easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb rename easybuild/easyconfigs/o/OpenBLAS/{OpenBLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb => OpenBLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb} (96%) rename easybuild/easyconfigs/o/OpenMPI/{OpenMPI-2.1.1-GCC-6.3.0-2.28.eb => OpenMPI-2.1.1-GCC-6.4.0-2.28.eb} (95%) diff --git a/easybuild/easyconfigs/f/foss/foss-2017b.eb b/easybuild/easyconfigs/f/foss/foss-2017b.eb index 20778cf402f8..5ce20b722f1e 100644 --- a/easybuild/easyconfigs/f/foss/foss-2017b.eb +++ b/easybuild/easyconfigs/f/foss/foss-2017b.eb @@ -9,7 +9,7 @@ description = """GNU Compiler Collection (GCC) based compiler toolchain, includi toolchain = {'name': 'dummy', 'version': 'dummy'} -gccver = '6.3.0-2.28' +gccver = '6.4.0-2.28' blaslib = 'OpenBLAS' blasver = '0.2.19' diff --git a/easybuild/easyconfigs/g/gompi/gompi-2017b.eb b/easybuild/easyconfigs/g/gompi/gompi-2017b.eb index ff56275f5ccc..acba6f51d98b 100644 --- a/easybuild/easyconfigs/g/gompi/gompi-2017b.eb +++ b/easybuild/easyconfigs/g/gompi/gompi-2017b.eb @@ -9,11 +9,11 @@ description = """GNU Compiler Collection (GCC) based compiler toolchain, toolchain = {'name': 'dummy', 'version': 'dummy'} -gccver = '6.3.0-2.28' +gccver = '6.4.0-2.28' # compiler toolchain dependencies dependencies = [ - ('GCC', gccver), # includes both GCC 6.3.0 and binutils 2.27 + ('GCC', gccver), # includes both GCC and binutils ('OpenMPI', '2.1.1', '', ('GCC', gccver)), ] diff --git a/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.3.0-2.28.eb b/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.4.0-2.28.eb similarity index 95% rename from easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.3.0-2.28.eb rename to easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.4.0-2.28.eb index 72dfa36917e4..b5be4b59bc23 100644 --- a/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.3.0-2.28.eb +++ b/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.4.0-2.28.eb @@ -11,7 +11,7 @@ system attributes such as cache and memory information as well as the locality o network interfaces, InfiniBand HCAs or GPUs. It primarily aims at helping applications with gathering information about modern computing hardware so as to exploit it accordingly and efficiently.""" -toolchain = {'name': 'GCC', 'version': '6.3.0-2.28'} +toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} source_urls = ['http://www.open-mpi.org/software/hwloc/v%(version_major_minor)s/downloads/'] sources = [SOURCE_TAR_GZ] diff --git a/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb new file mode 100644 index 000000000000..521df8ded9c1 --- /dev/null +++ b/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb @@ -0,0 +1,23 @@ +easyblock = 'ConfigureMake' + +name = 'numactl' +version = '2.0.11' + +homepage = 'http://oss.sgi.com/projects/libnuma/' +description = """The numactl program allows you to run your application program on specific cpu's and memory nodes. +It does this by supplying a NUMA memory policy to the operating system before running your program. +The libnuma library provides convenient ways for you to add NUMA memory policies into your own program.""" + +toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} + +source_urls = ['ftp://oss.sgi.com/www/projects/libnuma/download/'] +sources = [SOURCE_TAR_GZ] + +checksums = ['d3bc88b7ddb9f06d60898f4816ae9127'] + +sanity_check_paths = { + 'files': ['bin/numactl', 'bin/numastat', 'lib/libnuma.%s' % SHLIB_EXT, 'lib/libnuma.a'], + 'dirs': ['share/man', 'include'] +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb similarity index 96% rename from easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb rename to easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb index a1d7e75e794e..21faaaf7ab00 100644 --- a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.3.0-2.28-LAPACK-3.7.0.eb +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb @@ -9,7 +9,7 @@ versionsuffix = '-LAPACK-%s' % lapackver homepage = 'http://xianyi.github.com/OpenBLAS/' description = """OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.""" -toolchain = {'name': 'GCC', 'version': '6.3.0-2.28'} +toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} lapack_src = 'lapack-%s.tgz' % lapackver large_src = 'large.tgz' diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.3.0-2.28.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb similarity index 95% rename from easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.3.0-2.28.eb rename to easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb index aba86a17c123..c55bade938f4 100644 --- a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.3.0-2.28.eb +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb @@ -6,7 +6,7 @@ version = '2.1.1' homepage = 'http://www.open-mpi.org/' description = """The Open MPI Project is an open source MPI-2 implementation.""" -toolchain = {'name': 'GCC', 'version': '6.3.0-2.28'} +toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} source_urls = ['http://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] sources = [SOURCELOWER_TAR_GZ] diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb index a036bb79cb1c..84d34e0f8aff 100644 --- a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb +++ b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb @@ -17,7 +17,7 @@ blassuff = '-LAPACK-3.7.0' versionsuffix = "-%s-%s%s" % (blaslib, blasver, blassuff) -dependencies = [(blaslib, blasver, blassuff, ('GCC', '6.3.0-2.28'))] +dependencies = [(blaslib, blasver, blassuff, ('GCC', '6.4.0-2.28'))] # parallel build tends to fail, so disabling it parallel = 1 From f5563b9e1225aee2a01c31a3ff508ee9556ecb63 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 9 Aug 2017 09:18:20 +0200 Subject: [PATCH 03/10] remove easyconfig for hwloc 1.11.7 with GCC-6.4.0-2.28 toolchain, GCCcore 6.4.0 suffices --- .../h/hwloc/hwloc-1.11.7-GCC-6.4.0-2.28.eb | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.4.0-2.28.eb diff --git a/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.4.0-2.28.eb deleted file mode 100644 index b5be4b59bc23..000000000000 --- a/easybuild/easyconfigs/h/hwloc/hwloc-1.11.7-GCC-6.4.0-2.28.eb +++ /dev/null @@ -1,24 +0,0 @@ -easyblock = 'ConfigureMake' - -name = 'hwloc' -version = '1.11.7' - -homepage = 'http://www.open-mpi.org/projects/hwloc/' -description = """The Portable Hardware Locality (hwloc) software package provides a portable abstraction -(across OS, versions, architectures, ...) of the hierarchical topology of modern architectures, including -NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading. It also gathers various -system attributes such as cache and memory information as well as the locality of I/O devices such as -network interfaces, InfiniBand HCAs or GPUs. It primarily aims at helping applications with gathering -information about modern computing hardware so as to exploit it accordingly and efficiently.""" - -toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} - -source_urls = ['http://www.open-mpi.org/software/hwloc/v%(version_major_minor)s/downloads/'] -sources = [SOURCE_TAR_GZ] -checksums = ['ac16bed9cdd3c63bca1fe1ac3de522a1376b1487c4fc85b7b19592e28fd98e26'] - -dependencies = [('numactl', '2.0.11')] - -configopts = "--enable-libnuma=$EBROOTNUMACTL" - -moduleclass = 'system' From 55a2995bcebdc6e08ed8d42fd5aece88bc5c7994 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 9 Aug 2017 09:18:36 +0200 Subject: [PATCH 04/10] fix @verdurin's remarks --- easybuild/easyconfigs/f/foss/foss-2017b.eb | 3 +-- .../easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/easybuild/easyconfigs/f/foss/foss-2017b.eb b/easybuild/easyconfigs/f/foss/foss-2017b.eb index 5ce20b722f1e..a0cf18555c57 100644 --- a/easybuild/easyconfigs/f/foss/foss-2017b.eb +++ b/easybuild/easyconfigs/f/foss/foss-2017b.eb @@ -20,9 +20,8 @@ blassuff = '-LAPACK-3.7.0' comp_mpi_tc_name = 'gompi' comp_mpi_tc = (comp_mpi_tc_name, version) -# compiler toolchain depencies # we need GCC and OpenMPI as explicit dependencies instead of gompi toolchain -# because of toolchain preperation functions +# because of toolchain preparation functions # For binutils, stick to http://wiki.osdev.org/Cross-Compiler_Successful_Builds dependencies = [ ('GCC', gccver), diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb index c55bade938f4..bef1256a37fc 100644 --- a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb @@ -20,6 +20,9 @@ configopts += '--enable-mpirun-prefix-by-default ' # suppress failure modes in configopts += '--with-hwloc=$EBROOTHWLOC ' # hwloc support configopts += '--disable-dlopen ' # statically link component, don't do dynamic loading +# to enable SLURM integration (site-specific) +# configopts += '--with-slurm --with-pmi=/usr/include/slurm --with-pmi-libdir=/usr' + # needed for --with-verbs osdependencies = [('libibverbs-dev', 'libibverbs-devel')] From 0539726cd946ac65d4e9bf3c37f6fe381d362c5e Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 9 Aug 2017 20:17:59 +0200 Subject: [PATCH 05/10] add SHA256 checksums for foss/2017b components --- easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb | 2 +- easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb | 1 + .../easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb | 3 +-- .../easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb | 1 - ...ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb | 1 + 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb index eee27ec554ea..a21d63724dbd 100644 --- a/easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb +++ b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.6-gompi-2017b.eb @@ -10,7 +10,7 @@ toolchainopts = {'pic': True} source_urls = [homepage] sources = ['fftw-%(version)s-pl2.tar.gz'] -checksums = ['927e481edbb32575397eb3d62535a856'] +checksums = ['a5de35c5c824a78a058ca54278c706cdf3d4abba1c56b63531c2cb05f5d57da2'] runtest = 'check' diff --git a/easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb b/easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb index 7ff64c1745d4..45cfc6864783 100644 --- a/easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb +++ b/easybuild/easyconfigs/h/HPL/HPL-2.2-foss-2017b.eb @@ -11,6 +11,7 @@ toolchainopts = {'usempi': True} sources = [SOURCELOWER_TAR_GZ] source_urls = ['http://www.netlib.org/benchmark/%(namelower)s'] +checksums = ['ac7534163a09e21a5fa763e4e16dfc119bc84043f6e6a807aba666518f8df440'] # fix Make dependencies, so parallel build also works patches = ['HPL_parallel-make.patch'] diff --git a/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb index 521df8ded9c1..775fb405c3c0 100644 --- a/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb +++ b/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb @@ -12,8 +12,7 @@ toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} source_urls = ['ftp://oss.sgi.com/www/projects/libnuma/download/'] sources = [SOURCE_TAR_GZ] - -checksums = ['d3bc88b7ddb9f06d60898f4816ae9127'] +checksums = ['450c091235f891ee874a8651b179c30f57a1391ca5c4673354740ba65e527861'] sanity_check_paths = { 'files': ['bin/numactl', 'bin/numastat', 'lib/libnuma.%s' % SHLIB_EXT, 'lib/libnuma.a'], diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb index bef1256a37fc..c10c8f486d07 100644 --- a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-2.1.1-GCC-6.4.0-2.28.eb @@ -10,7 +10,6 @@ toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} source_urls = ['http://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] sources = [SOURCELOWER_TAR_GZ] - checksums = ['afe4bef3c4378bc76eea96c623d5aa4c1c98b9e057d281c646e68869292a77dc'] dependencies = [('hwloc', '1.11.7')] diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb index 84d34e0f8aff..e698beb591d3 100644 --- a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb +++ b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb @@ -10,6 +10,7 @@ toolchainopts = {'pic': True} source_urls = [homepage] sources = [SOURCELOWER_TGZ] +checksums = ['0c74aeae690fe5ee4db7926f49c5d0bb69ce09eea75beb915e00bba07530395c'] blaslib = 'OpenBLAS' blasver = '0.2.19' From a10eead80ac4f54bf38cfa9a7ebd54217eb9d3ee Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 23 Aug 2017 16:08:46 +0200 Subject: [PATCH 06/10] bump OpenBLAS to 0.2.20 in foss/2017b, with inclusion of two important patches --- easybuild/easyconfigs/f/foss/foss-2017b.eb | 7 +- ...BLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb | 56 ------ .../OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch | 35 ---- .../OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb | 50 +++++ ...20_fix-Intel-L1-cache-size-detection.patch | 188 ++++++++++++++++++ .../OpenBLAS-0.2.20_revert-honor-cpuset.patch | 135 +++++++++++++ ...PACK-2.0.2-gompi-2017b-OpenBLAS-0.2.20.eb} | 7 +- 7 files changed, 379 insertions(+), 99 deletions(-) delete mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb delete mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch create mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb create mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20_fix-Intel-L1-cache-size-detection.patch create mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20_revert-honor-cpuset.patch rename easybuild/easyconfigs/s/ScaLAPACK/{ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.19-LAPACK-3.7.0.eb => ScaLAPACK-2.0.2-gompi-2017b-OpenBLAS-0.2.20.eb} (76%) diff --git a/easybuild/easyconfigs/f/foss/foss-2017b.eb b/easybuild/easyconfigs/f/foss/foss-2017b.eb index a0cf18555c57..d217118e8689 100644 --- a/easybuild/easyconfigs/f/foss/foss-2017b.eb +++ b/easybuild/easyconfigs/f/foss/foss-2017b.eb @@ -12,9 +12,8 @@ toolchain = {'name': 'dummy', 'version': 'dummy'} gccver = '6.4.0-2.28' blaslib = 'OpenBLAS' -blasver = '0.2.19' +blasver = '0.2.20' blas = '%s-%s' % (blaslib, blasver) -blassuff = '-LAPACK-3.7.0' # toolchain used to build foss dependencies comp_mpi_tc_name = 'gompi' @@ -26,9 +25,9 @@ comp_mpi_tc = (comp_mpi_tc_name, version) dependencies = [ ('GCC', gccver), ('OpenMPI', '2.1.1', '', ('GCC', gccver)), - (blaslib, blasver, blassuff, ('GCC', gccver)), + (blaslib, blasver, '', ('GCC', gccver)), ('FFTW', '3.3.6', '', comp_mpi_tc), - ('ScaLAPACK', '2.0.2', '-%s%s' % (blas, blassuff), comp_mpi_tc), + ('ScaLAPACK', '2.0.2', '-%s' % blas, comp_mpi_tc), ] moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb deleted file mode 100644 index 21faaaf7ab00..000000000000 --- a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19-GCC-6.4.0-2.28-LAPACK-3.7.0.eb +++ /dev/null @@ -1,56 +0,0 @@ -easyblock = 'ConfigureMake' - -name = 'OpenBLAS' -version = '0.2.19' - -lapackver = '3.7.0' -versionsuffix = '-LAPACK-%s' % lapackver - -homepage = 'http://xianyi.github.com/OpenBLAS/' -description = """OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.""" - -toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} - -lapack_src = 'lapack-%s.tgz' % lapackver -large_src = 'large.tgz' -timing_src = 'timing.tgz' - -lapack_unpack_cmd = 'cd %(name)s-%(version)s; rm -rf lapack-netlib;' -lapack_unpack_cmd += 'mkdir lapack-netlib;' -lapack_unpack_cmd += 'tar -C lapack-netlib --strip-components=1 -zxf %s; cd -' - -sources = [ - 'v%(version)s.tar.gz', - (lapack_src, lapack_unpack_cmd), - large_src, - timing_src, -] -source_urls = [ - # order matters, trying to download the LAPACK tarball from GitHub causes trouble - "http://www.netlib.org/lapack/", - "http://www.netlib.org/lapack/timing/", - "https://github.com/xianyi/OpenBLAS/archive/", -] - -patches = [ - (large_src, '.'), - (timing_src, '.'), - 'OpenBLAS-%(version)s_LAPACK-3.7.0-fixes.patch', -] - -skipsteps = ['configure'] - -buildopts = 'BINARY=64 USE_THREAD=1 CC="$CC" FC="$F77" NO_AFFINITY=1' -installopts = "USE_THREAD=1 PREFIX=%(installdir)s" - -# extensive testing can be enabled by uncommenting the line below -# runtest = 'PATH=.:$PATH lapack-timing' - -sanity_check_paths = { - 'files': ['include/cblas.h', 'include/f77blas.h', 'include/lapacke_config.h', 'include/lapacke.h', - 'include/lapacke_mangling.h', 'include/lapacke_utils.h', 'include/openblas_config.h', - 'lib/libopenblas.a', 'lib/libopenblas.%s' % SHLIB_EXT], - 'dirs': [], -} - -moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch deleted file mode 100644 index 54c1b5525ddd..000000000000 --- a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch +++ /dev/null @@ -1,35 +0,0 @@ -fixes to combine OpenBLAS 0.2.19 with LAPACK 3.7.0 -* upstream bugfix in Makefile for LAPACK 3.7.0, cfr. https://github.com/Reference-LAPACK/lapack/commit/c5788233f95fed2c7f008ea079e8257a85348287 -* fix copying of lapacke_mangling.h, since it was renamed in LAPACK 3.7.0 -author: Kenneth Hoste (HPC-UGent) ---- OpenBLAS-0.2.19/Makefile.install.orig 2017-01-04 15:51:12.483541471 +0100 -+++ OpenBLAS-0.2.19/Makefile.install 2017-01-04 15:51:27.583647000 +0100 -@@ -50,7 +50,7 @@ - @echo Copying LAPACKE header files to $(DESTDIR)$(OPENBLAS_INCLUDE_DIR) - @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke.h" - @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_config.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_config.h" -- @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_mangling_with_flags.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_mangling.h" -+ @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_mangling.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_mangling.h" - @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_utils.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_utils.h" - endif - ---- OpenBLAS-0.2.19/lapack-netlib/SRC/CMakeLists.txt.orig -+++ OpenBLAS-0.2.19/lapack-netlib/SRC/CMakeLists.txt -@@ -454,7 +454,6 @@ set(ZLASRC - zgelqt.f zgelqt3.f zgemlqt.f - zgetsls.f zgeqr.f zlatsqr.f zlamtsqr.f zgemqr.f - zgelq.f zlaswlq.f zlamswlq.f zgemlq.f -- ztplqt.f ztplqt2.f ztpmlqt.f - zhetrd_2stage.f zhetrd_he2hb.f zhetrd_hb2st.F zhb2st_kernels.f - zheevd_2stage.f zheev_2stage.f zheevx_2stage.f zheevr_2stage.f - zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f) ---- OpenBLAS-0.2.19/lapack-netlib/SRC/Makefile.orig -+++ OpenBLAS-0.2.19/lapack-netlib/SRC/Makefile -@@ -464,7 +464,6 @@ ZLASRC = \ - zgelqt.o zgelqt3.o zgemlqt.o \ - zgetsls.o zgeqr.o zlatsqr.o zlamtsqr.o zgemqr.o \ - zgelq.o zlaswlq.o zlamswlq.o zgemlq.o \ -- ztplqt.o ztplqt2.o ztpmlqt.o \ - zhetrd_2stage.o zhetrd_he2hb.o zhetrd_hb2st.o zhb2st_kernels.o \ - zheevd_2stage.o zheev_2stage.o zheevx_2stage.o zheevr_2stage.o \ - zhbev_2stage.o zhbevx_2stage.o zhbevd_2stage.o zhegv_2stage.o diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb new file mode 100644 index 000000000000..1b9ef9d2f9a1 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb @@ -0,0 +1,50 @@ +easyblock = 'ConfigureMake' + +name = 'OpenBLAS' +version = '0.2.20' + +homepage = 'http://xianyi.github.com/OpenBLAS/' +description = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version." + +toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} + +large_src = 'large.tgz' +timing_src = 'timing.tgz' + +source_urls = [ + # order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble + 'http://www.netlib.org/lapack/timing/', + 'https://github.com/xianyi/OpenBLAS/archive/', +] +sources = ['v%(version)s.tar.gz'] +checksums = [ + '5ef38b15d9c652985774869efd548b8e3e972e1e99475c673b25537ed7bcf394', # v0.2.20.tar.gz (OpenBLAS) + 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1', # large.tgz + '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af', # timing.tgz + '1d043e4838ec1f90b2b49318b780e3ab13b46133cb72a8d83eb0e3b1b056c4d6', # OpenBLAS-0.2.20_fix-Intel-L1-cache-size-detection.patch + '1e6a046ab658c6e0b351de901d2812db28c2042f9f141416144c2faaf71fbb37', # OpenBLAS-0.2.20_revert-honor-cpuset.patch +] + +patches = [ + (large_src, '.'), + (timing_src, '.'), + 'OpenBLAS-%(version)s_fix-Intel-L1-cache-size-detection.patch', + 'OpenBLAS-%(version)s_revert-honor-cpuset.patch', +] + +skipsteps = ['configure'] + +buildopts = 'BINARY=64 USE_THREAD=1 CC="$CC" FC="$F77" NO_AFFINITY=1' +installopts = "USE_THREAD=1 PREFIX=%(installdir)s" + +# extensive testing can be enabled by uncommenting the line below +# runtest = 'PATH=.:$PATH lapack-timing' + +sanity_check_paths = { + 'files': ['include/cblas.h', 'include/f77blas.h', 'include/lapacke_config.h', 'include/lapacke.h', + 'include/lapacke_mangling.h', 'include/lapacke_utils.h', 'include/openblas_config.h', + 'lib/libopenblas.a', 'lib/libopenblas.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20_fix-Intel-L1-cache-size-detection.patch b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20_fix-Intel-L1-cache-size-detection.patch new file mode 100644 index 000000000000..f974460dc6fc --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20_fix-Intel-L1-cache-size-detection.patch @@ -0,0 +1,188 @@ +fixes detection of L1 cache size on Intel processors, incl. Intel Haswell) +see https://github.com/xianyi/OpenBLAS/pull/1236 && https://github.com/xianyi/OpenBLAS/issues/1232 +--- a/cpuid_x86.c ++++ b/cpuid_x86.c +@@ -71,12 +71,23 @@ void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx) + *edx = cpuInfo[3]; + } + ++void cpuid_count(int op, int count, int *eax, int *ebx, int *ecx, int *edx) ++{ ++ int cpuInfo[4] = {-1}; ++ __cpuidex(cpuInfo, op, count); ++ *eax = cpuInfo[0]; ++ *ebx = cpuInfo[1]; ++ *ecx = cpuInfo[2]; ++ *edx = cpuInfo[3]; ++} ++ + #else + + #ifndef CPUIDEMU + + #if defined(__APPLE__) && defined(__i386__) + void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx); ++void cpuid_count(int op, int count, int *eax, int *ebx, int *ecx, int *edx); + #else + static C_INLINE void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx){ + #if defined(__i386__) && defined(__PIC__) +@@ -90,6 +101,19 @@ static C_INLINE void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx){ + ("cpuid": "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (op) : "cc"); + #endif + } ++ ++static C_INLINE void cpuid_count(int op, int count ,int *eax, int *ebx, int *ecx, int *edx){ ++#if defined(__i386__) && defined(__PIC__) ++ __asm__ __volatile__ ++ ("mov %%ebx, %%edi;" ++ "cpuid;" ++ "xchgl %%ebx, %%edi;" ++ : "=a" (*eax), "=D" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (op), "2" (count) : "cc"); ++#else ++ __asm__ __volatile__ ++ ("cpuid": "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (op), "2" (count) : "cc"); ++#endif ++} + #endif + + #else +@@ -157,6 +157,10 @@ void cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx, unsigned int * + *edx = idlist[current].d; + } + ++void cpuid_count (unsigned int op, unsigned int count, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { ++ return cpuid (op, eax, ebx, ecx, edx); ++} ++ + #endif + + #endif // _MSC_VER +@@ -312,9 +336,9 @@ int get_cacheinfo(int type, cache_info_t *cacheinfo){ + cpuid(0, &cpuid_level, &ebx, &ecx, &edx); + + if (cpuid_level > 1) { +- ++ int numcalls =0 ; + cpuid(2, &eax, &ebx, &ecx, &edx); +- ++ numcalls = BITMASK(eax, 0, 0xff); //FIXME some systems may require repeated calls to read all entries + info[ 0] = BITMASK(eax, 8, 0xff); + info[ 1] = BITMASK(eax, 16, 0xff); + info[ 2] = BITMASK(eax, 24, 0xff); +@@ -335,7 +359,6 @@ int get_cacheinfo(int type, cache_info_t *cacheinfo){ + info[14] = BITMASK(edx, 24, 0xff); + + for (i = 0; i < 15; i++){ +- + switch (info[i]){ + + /* This table is from http://www.sandpile.org/ia32/cpuid.htm */ +@@ -637,12 +660,13 @@ int get_cacheinfo(int type, cache_info_t *cacheinfo){ + LD1.linesize = 64; + break; + case 0x63 : +- DTB.size = 2048; +- DTB.associative = 4; +- DTB.linesize = 32; +- LDTB.size = 4096; +- LDTB.associative= 4; +- LDTB.linesize = 32; ++ DTB.size = 2048; ++ DTB.associative = 4; ++ DTB.linesize = 32; ++ LDTB.size = 4096; ++ LDTB.associative= 4; ++ LDTB.linesize = 32; ++ break; + case 0x66 : + LD1.size = 8; + LD1.associative = 4; +@@ -675,12 +699,13 @@ int get_cacheinfo(int type, cache_info_t *cacheinfo){ + LC1.associative = 8; + break; + case 0x76 : +- ITB.size = 2048; +- ITB.associative = 0; +- ITB.linesize = 8; +- LITB.size = 4096; +- LITB.associative= 0; +- LITB.linesize = 8; ++ ITB.size = 2048; ++ ITB.associative = 0; ++ ITB.linesize = 8; ++ LITB.size = 4096; ++ LITB.associative= 0; ++ LITB.linesize = 8; ++ break; + case 0x77 : + LC1.size = 16; + LC1.associative = 4; +@@ -891,6 +916,68 @@ int get_cacheinfo(int type, cache_info_t *cacheinfo){ + } + + if (get_vendor() == VENDOR_INTEL) { ++ if(LD1.size<=0 || LC1.size<=0){ ++ //If we didn't detect L1 correctly before, ++ int count; ++ for (count=0;count <4;count++) { ++ cpuid_count(4, count, &eax, &ebx, &ecx, &edx); ++ switch (eax &0x1f) { ++ case 0: ++ continue; ++ case 1: ++ case 3: ++ { ++ switch ((eax >>5) &0x07) ++ { ++ case 1: ++ { ++// fprintf(stderr,"L1 data cache...\n"); ++ int sets = ecx+1; ++ int lines = (ebx & 0x0fff) +1; ++ ebx>>=12; ++ int part = (ebx&0x03ff)+1; ++ ebx >>=10; ++ int assoc = (ebx&0x03ff)+1; ++ LD1.size = (assoc*part*lines*sets)/1024; ++ LD1.associative = assoc; ++ LD1.linesize= lines; ++ break; ++ } ++ default: ++ break; ++ } ++ break; ++ } ++ case 2: ++ { ++ switch ((eax >>5) &0x07) ++ { ++ case 1: ++ { ++// fprintf(stderr,"L1 instruction cache...\n"); ++ int sets = ecx+1; ++ int lines = (ebx & 0x0fff) +1; ++ ebx>>=12; ++ int part = (ebx&0x03ff)+1; ++ ebx >>=10; ++ int assoc = (ebx&0x03ff)+1; ++ LC1.size = (assoc*part*lines*sets)/1024; ++ LC1.associative = assoc; ++ LC1.linesize= lines; ++ break; ++ } ++ default: ++ break; ++ } ++ break; ++ ++ } ++ default: ++ break; ++ } ++ } ++ } ++ + cpuid(0x80000000, &cpuid_level, &ebx, &ecx, &edx); + if (cpuid_level >= 0x80000006) { + if(L2.size<=0){ diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20_revert-honor-cpuset.patch b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20_revert-honor-cpuset.patch new file mode 100644 index 000000000000..240b757a9713 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20_revert-honor-cpuset.patch @@ -0,0 +1,135 @@ +revert changes to honor cgroup/cpuset limits that was merged prematurely in OpenBLAS 0.2.20 +see https://github.com/xianyi/OpenBLAS/pull/1247 +diff --git a/driver/others/init.c b/driver/others/init.c +index 4c75d72e4..3e6176967 100644 +--- a/driver/others/init.c ++++ b/driver/others/init.c +@@ -778,11 +778,11 @@ static int initialized = 0; + void gotoblas_affinity_init(void) { + + int cpu, num_avail; +-#ifndef USE_OPENMP ++#ifndef USE_OPENMP + cpu_set_t cpu_mask; + #endif + int i; +- ++ + if (initialized) return; + + initialized = 1; +@@ -826,54 +826,15 @@ void gotoblas_affinity_init(void) { + common -> shmid = pshmid; + + if (common -> magic != SH_MAGIC) { +- cpu_set_t *cpusetp; +- int nums; +- int ret; +- + #ifdef DEBUG + fprintf(stderr, "Shared Memory Initialization.\n"); + #endif + + //returns the number of processors which are currently online +- +- nums = sysconf(_SC_NPROCESSORS_CONF); +- +-#if !defined(__GLIBC_PREREQ) || !__GLIBC_PREREQ(2, 3) +- common->num_procs = nums; +-#elif __GLIBC_PREREQ(2, 7) +- cpusetp = CPU_ALLOC(nums); +- if (cpusetp == NULL) { +- common->num_procs = nums; +- } else { +- size_t size; +- size = CPU_ALLOC_SIZE(nums); +- ret = sched_getaffinity(0,size,cpusetp); +- if (ret!=0) +- common->num_procs = nums; +- else +- common->num_procs = CPU_COUNT_S(size,cpusetp); +- } +- CPU_FREE(cpusetp); +-#else +- ret = sched_getaffinity(0,sizeof(cpu_set_t), cpusetp); +- if (ret!=0) { +- common->num_procs = nums; +- } else { +-#if !__GLIBC_PREREQ(2, 6) +- int i; +- int n = 0; +- for (i=0;inum_procs = n; +- } +-#else +- common->num_procs = CPU_COUNT(sizeof(cpu_set_t),cpusetp); +-#endif +- +-#endif ++ common -> num_procs = sysconf(_SC_NPROCESSORS_CONF);; + + if(common -> num_procs > MAX_CPUS) { +- fprintf(stderr, "\nOpenBLAS Warning : The number of CPU/Cores(%d) is beyond the limit(%d). Terminated.\n", common->num_procs, MAX_CPUS); ++ fprintf(stderr, "\nOpenBLAS Warining : The number of CPU/Cores(%d) is beyond the limit(%d). Terminated.\n", common->num_procs, MAX_CPUS); + exit(1); + } + +@@ -886,7 +847,7 @@ void gotoblas_affinity_init(void) { + if (common -> num_nodes > 1) numa_mapping(); + + common -> final_num_procs = 0; +- for(i = 0; i < common -> avail_count; i++) common -> final_num_procs += rcount(common -> avail[i]) + 1; //Make the max cpu number. ++ for(i = 0; i < common -> avail_count; i++) common -> final_num_procs += rcount(common -> avail[i]) + 1; //Make the max cpu number. + + for (cpu = 0; cpu < common -> final_num_procs; cpu ++) common -> cpu_use[cpu] = 0; + +diff --git a/driver/others/memory.c b/driver/others/memory.c +index 38d063715..916950315 100644 +--- a/driver/others/memory.c ++++ b/driver/others/memory.c +@@ -175,44 +175,7 @@ int get_num_procs(void); + #else + int get_num_procs(void) { + static int nums = 0; +-cpu_set_t *cpusetp; +-size_t size; +-int ret; +-int i,n; +- + if (!nums) nums = sysconf(_SC_NPROCESSORS_CONF); +-#if !defined(OS_LINUX) +- return nums; +-#endif +- +-#if !defined(__GLIBC_PREREQ) +- return nums; +-#endif +-#if !__GLIBC_PREREQ(2, 3) +- return nums; +-#endif +- +-#if !__GLIBC_PREREQ(2, 7) +- ret = sched_getaffinity(0,sizeof(cpu_set_t), cpusetp); +- if (ret!=0) return nums; +- n=0; +-#if !__GLIBC_PREREQ(2, 6) +- for (i=0;i Date: Wed, 23 Aug 2017 16:13:17 +0200 Subject: [PATCH 07/10] don't specify NO_AFFINITY=1, also specify USE_OPENMP=1 for OpenBLAS 0.2.20 (cfr. #4524) --- .../easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb index 1b9ef9d2f9a1..756eeba37571 100644 --- a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb @@ -34,8 +34,8 @@ patches = [ skipsteps = ['configure'] -buildopts = 'BINARY=64 USE_THREAD=1 CC="$CC" FC="$F77" NO_AFFINITY=1' -installopts = "USE_THREAD=1 PREFIX=%(installdir)s" +buildopts = 'BINARY=64 USE_THREAD=1 USE_OPENMP=1 CC="$CC" FC="$F77"' +installopts = "USE_THREAD=1 USE_OPENMP=1 PREFIX=%(installdir)s" # extensive testing can be enabled by uncommenting the line below # runtest = 'PATH=.:$PATH lapack-timing' From cd4fa66e00de701eeef52eecc6960d2301180985 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 23 Aug 2017 16:29:58 +0200 Subject: [PATCH 08/10] remove undeeded numactl-2.0.11-GCC-6.4.0-2.28.eb, existing numactl-2.0.11-GCCcore-6.4.0.eb suffices --- .../numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100644 easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb diff --git a/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb deleted file mode 100644 index 775fb405c3c0..000000000000 --- a/easybuild/easyconfigs/n/numactl/numactl-2.0.11-GCC-6.4.0-2.28.eb +++ /dev/null @@ -1,22 +0,0 @@ -easyblock = 'ConfigureMake' - -name = 'numactl' -version = '2.0.11' - -homepage = 'http://oss.sgi.com/projects/libnuma/' -description = """The numactl program allows you to run your application program on specific cpu's and memory nodes. -It does this by supplying a NUMA memory policy to the operating system before running your program. -The libnuma library provides convenient ways for you to add NUMA memory policies into your own program.""" - -toolchain = {'name': 'GCC', 'version': '6.4.0-2.28'} - -source_urls = ['ftp://oss.sgi.com/www/projects/libnuma/download/'] -sources = [SOURCE_TAR_GZ] -checksums = ['450c091235f891ee874a8651b179c30f57a1391ca5c4673354740ba65e527861'] - -sanity_check_paths = { - 'files': ['bin/numactl', 'bin/numastat', 'lib/libnuma.%s' % SHLIB_EXT, 'lib/libnuma.a'], - 'dirs': ['share/man', 'include'] -} - -moduleclass = 'tools' From 719d650d2f0800633f46817cd5929ff833909a49 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 23 Aug 2017 16:38:58 +0200 Subject: [PATCH 09/10] add back accidentally removed OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch --- .../OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch new file mode 100644 index 000000000000..54c1b5525ddd --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.19_LAPACK-3.7.0-fixes.patch @@ -0,0 +1,35 @@ +fixes to combine OpenBLAS 0.2.19 with LAPACK 3.7.0 +* upstream bugfix in Makefile for LAPACK 3.7.0, cfr. https://github.com/Reference-LAPACK/lapack/commit/c5788233f95fed2c7f008ea079e8257a85348287 +* fix copying of lapacke_mangling.h, since it was renamed in LAPACK 3.7.0 +author: Kenneth Hoste (HPC-UGent) +--- OpenBLAS-0.2.19/Makefile.install.orig 2017-01-04 15:51:12.483541471 +0100 ++++ OpenBLAS-0.2.19/Makefile.install 2017-01-04 15:51:27.583647000 +0100 +@@ -50,7 +50,7 @@ + @echo Copying LAPACKE header files to $(DESTDIR)$(OPENBLAS_INCLUDE_DIR) + @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke.h" + @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_config.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_config.h" +- @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_mangling_with_flags.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_mangling.h" ++ @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_mangling.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_mangling.h" + @-install -pm644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_utils.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_utils.h" + endif + +--- OpenBLAS-0.2.19/lapack-netlib/SRC/CMakeLists.txt.orig ++++ OpenBLAS-0.2.19/lapack-netlib/SRC/CMakeLists.txt +@@ -454,7 +454,6 @@ set(ZLASRC + zgelqt.f zgelqt3.f zgemlqt.f + zgetsls.f zgeqr.f zlatsqr.f zlamtsqr.f zgemqr.f + zgelq.f zlaswlq.f zlamswlq.f zgemlq.f +- ztplqt.f ztplqt2.f ztpmlqt.f + zhetrd_2stage.f zhetrd_he2hb.f zhetrd_hb2st.F zhb2st_kernels.f + zheevd_2stage.f zheev_2stage.f zheevx_2stage.f zheevr_2stage.f + zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f) +--- OpenBLAS-0.2.19/lapack-netlib/SRC/Makefile.orig ++++ OpenBLAS-0.2.19/lapack-netlib/SRC/Makefile +@@ -464,7 +464,6 @@ ZLASRC = \ + zgelqt.o zgelqt3.o zgemlqt.o \ + zgetsls.o zgeqr.o zlatsqr.o zlamtsqr.o zgemqr.o \ + zgelq.o zlaswlq.o zlamswlq.o zgemlq.o \ +- ztplqt.o ztplqt2.o ztpmlqt.o \ + zhetrd_2stage.o zhetrd_he2hb.o zhetrd_hb2st.o zhb2st_kernels.o \ + zheevd_2stage.o zheev_2stage.o zheevx_2stage.o zheevr_2stage.o \ + zhbev_2stage.o zhbevx_2stage.o zhbevd_2stage.o zhegv_2stage.o From 4050d91e64ff5df26be246f647645798ef6a0ff4 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 23 Aug 2017 17:16:15 +0200 Subject: [PATCH 10/10] fix too long line in OpenBLAS 0.2.20 easyconfig --- .../easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb index 756eeba37571..5b7ec851fcd9 100644 --- a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb @@ -21,7 +21,8 @@ checksums = [ '5ef38b15d9c652985774869efd548b8e3e972e1e99475c673b25537ed7bcf394', # v0.2.20.tar.gz (OpenBLAS) 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1', # large.tgz '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af', # timing.tgz - '1d043e4838ec1f90b2b49318b780e3ab13b46133cb72a8d83eb0e3b1b056c4d6', # OpenBLAS-0.2.20_fix-Intel-L1-cache-size-detection.patch + # OpenBLAS-0.2.20_fix-Intel-L1-cache-size-detection.patch + '1d043e4838ec1f90b2b49318b780e3ab13b46133cb72a8d83eb0e3b1b056c4d6', '1e6a046ab658c6e0b351de901d2812db28c2042f9f141416144c2faaf71fbb37', # OpenBLAS-0.2.20_revert-honor-cpuset.patch ]