summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2018-03-15 10:16:33 +0100
committerGitHub <noreply@github.com>2018-03-15 10:16:33 +0100
commitcf4b3f2af673176d8ab2fdcee32806f5f143ee70 (patch)
treeb470470abfe6e627c1530079adf2c2cdafc1dd59
parent30b8dfbebaafd443157c2463d1bfd5d6ec3f98ae (diff)
downloadspack-cf4b3f2af673176d8ab2fdcee32806f5f143ee70.tar.gz
spack-cf4b3f2af673176d8ab2fdcee32806f5f143ee70.tar.bz2
spack-cf4b3f2af673176d8ab2fdcee32806f5f143ee70.tar.xz
spack-cf4b3f2af673176d8ab2fdcee32806f5f143ee70.zip
hwloc: updated package (#7483)
This includes: * Added latest available versions (1.11.9, 2.0.0) * Added variants to enable graphical output from lstopo * Enabled build of the bundled netloc package if @2.0.0: * Added dependency from numactl if @:1.11.9 * Added a constraint to avoid using hwloc@2.0.0 with openmpi
-rw-r--r--var/spack/repos/builtin/packages/hwloc/package.py52
-rw-r--r--var/spack/repos/builtin/packages/openmpi/package.py24
2 files changed, 51 insertions, 25 deletions
diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py
index a29f927ba1..8e3304da85 100644
--- a/var/spack/repos/builtin/packages/hwloc/package.py
+++ b/var/spack/repos/builtin/packages/hwloc/package.py
@@ -28,22 +28,28 @@ import sys
class Hwloc(AutotoolsPackage):
- """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."""
+ """The Hardware Locality (hwloc) software project.
+
+ 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.
+ """
+
homepage = "http://www.open-mpi.org/projects/hwloc/"
url = "http://www.open-mpi.org/software/hwloc/v1.9/downloads/hwloc-1.9.tar.gz"
list_url = "http://www.open-mpi.org/software/hwloc/"
list_depth = 2
+ version('2.0.0', '027e6928ae0b5b64c821d0a71a61cd82')
+ version('1.11.9', '4d5f5da8b1d09731d82e865ecf3fa399')
version('1.11.8', 'a0fa1c9109a4d8b4b6568e62cc9b6e30')
version('1.11.7', '867a5266675e5bf1ef4ab66c459653f8')
version('1.11.6', 'b4e95eadd2fbdb6d40bbd96be6f03c84')
@@ -59,25 +65,37 @@ class Hwloc(AutotoolsPackage):
variant('pci', default=(sys.platform != 'darwin'),
description="Support analyzing devices on PCI bus")
variant('shared', default=True, description="Build shared libraries")
+ variant(
+ 'cairo',
+ default=False,
+ description='Enable the Cairo back-end of hwloc\'s lstopo command'
+ )
+
+ depends_on('pkgconfig', type='build')
depends_on('cuda', when='+cuda')
depends_on('libpciaccess', when='+pci')
depends_on('libxml2', when='+libxml2')
- depends_on('pkgconfig', type='build')
+ depends_on('cairo', when='+cairo')
+ depends_on('numactl', when='@:1.11.9')
def url_for_version(self, version):
return "http://www.open-mpi.org/software/hwloc/v%s/downloads/hwloc-%s.tar.gz" % (version.up_to(2), version)
def configure_args(self):
- spec = self.spec
args = [
- "--enable-cuda" if '+cuda' in spec else "--disable-cuda",
- "--enable-libxml2" if '+libxml2' in spec else "--disable-libxml2",
- "--enable-pci" if '+pci' in spec else "--disable-pci",
- "--enable-shared" if '+shared' in spec else "--disable-shared",
# Disable OpenCL, since hwloc might pick up an OpenCL
# library at build time that is then not found at run time
# (Alternatively, we could require OpenCL as dependency.)
"--disable-opencl",
]
+ if '@2.0.0:' in self.spec:
+ args.append('--enable-netloc')
+
+ args.extend(self.enable_or_disable('cairo'))
+ args.extend(self.enable_or_disable('cuda'))
+ args.extend(self.enable_or_disable('libxml2'))
+ args.extend(self.enable_or_disable('pci'))
+ args.extend(self.enable_or_disable('shared'))
+
return args
diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py
index e14c6174ba..80657b618e 100644
--- a/var/spack/repos/builtin/packages/openmpi/package.py
+++ b/var/spack/repos/builtin/packages/openmpi/package.py
@@ -65,14 +65,16 @@ def _mxm_dir():
class Openmpi(AutotoolsPackage):
- """The Open MPI Project is an open source Message Passing Interface
- implementation that is developed and maintained by a consortium
- of academic, research, and industry partners. Open MPI is
- therefore able to combine the expertise, technologies, and
- resources from all across the High Performance Computing
- community in order to build the best MPI library available.
- Open MPI offers advantages for system and software vendors,
- application developers and computer science researchers.
+ """An open source Message Passing Interface implementation.
+
+ The Open MPI Project is an open source Message Passing Interface
+ implementation that is developed and maintained by a consortium
+ of academic, research, and industry partners. Open MPI is
+ therefore able to combine the expertise, technologies, and
+ resources from all across the High Performance Computing
+ community in order to build the best MPI library available.
+ Open MPI offers advantages for system and software vendors,
+ application developers and computer science researchers.
"""
homepage = "http://www.open-mpi.org"
@@ -204,6 +206,12 @@ class Openmpi(AutotoolsPackage):
provides('mpi@:3.1', when='@2.0.0:')
depends_on('hwloc')
+ # ompi@:3.0.0 doesn't support newer hwloc releases:
+ # "configure: error: OMPI does not currently support hwloc v2 API"
+ # Future ompi releases may support it, needs to be verified.
+ # See #7483 for context.
+ depends_on('hwloc@:1.999')
+
depends_on('hwloc +cuda', when='+cuda')
depends_on('java', when='+java')
depends_on('sqlite', when='+sqlite3@:1.11')