diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2018-03-15 10:16:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-15 10:16:33 +0100 |
commit | cf4b3f2af673176d8ab2fdcee32806f5f143ee70 (patch) | |
tree | b470470abfe6e627c1530079adf2c2cdafc1dd59 | |
parent | 30b8dfbebaafd443157c2463d1bfd5d6ec3f98ae (diff) | |
download | spack-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.py | 52 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/openmpi/package.py | 24 |
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') |