Adding Extrae and OmpSs with some of their dependencies, hwloc and PAPI.

Extrae does not compile for latest versions of any MPI implementation.
This commit is contained in:
Luc Jaulmes 2014-06-20 17:15:32 -07:00 committed by Todd Gamblin
parent 5dffa26711
commit 5a4881c086
5 changed files with 82 additions and 12 deletions

View File

@ -0,0 +1,29 @@
from spack import *
class Extrae(Package):
homepage = "http://www.bsc.es/computer-sciences/extrae"
url = "http://www.bsc.es/ssl/apps/performanceTools/files/extrae-2.5.1.tar.bz2"
versions = { '2.5.1' : '422376b9c68243bd36a8a73fa62de106', }
depends_on("mpi")
depends_on("dyninst")
depends_on("libunwind")
depends_on("boost")
depends_on("libdwarf")
depends_on("papi")
def install(self, spec, prefix):
if 'openmpi' in spec:
mpi = spec['openmpi']
if spec.satisfies('@2.5.1') and spec.satisfies('^openmpi@1.6.5'):
tty.error("Some headers conflict when using OpenMPI 1.6.5. Please use 1.6 instead.")
elif 'mpich' in spec:
mpi = spec['mpich']
elif 'mvapich2' in spec:
mpi = spec['mvapich2']
configure("--prefix=%s" % prefix, "--with-mpi=%s" % mpi.prefix, "--with-unwind=%s" % spec['libunwind'].prefix, "--with-dyninst=%s" % spec['dyninst'].prefix, "--with-boost=%s" % spec['boost'].prefix, "--with-dwarf=%s" % spec['libdwarf'].prefix, "--with-papi=%s" % spec['papi'].prefix, "--with-dyninst-headers=%s" % spec['dyninst'].prefix.include, "--with-dyninst-libs=%s" % spec['dyninst'].prefix.lib)
make()
make("install", parallel=False)

View File

@ -0,0 +1,15 @@
from spack import *
class Hwloc(Package):
"""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"
versions = { '1.9' : '1f9f9155682fe8946a97c08896109508', }
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@ -11,8 +11,6 @@ class Mvapich2(Package):
provides('mpi@:1', when='@1.9:')
patch('ad_lustre_rwcontig_open_source.patch', when='@1.9:')
def install(self, spec, prefix):
configure(
"--prefix=" + prefix,

View File

@ -1,11 +1,10 @@
from spack import *
import os
import glob
import subprocess
# working config lines for ompss 14.06 :
#./mcxx-1.99.2/config.log: $ ./configure --prefix=/usr/gapps/exmatex/ompss --with-nanox=/usr/gapps/exmatex/ompss --enable-ompss --with-mpi=/opt/mvapich2-intel-shmem-1.7 --enable-tl-openmp-profile --enable-tl-openmp-intel
#./nanox-0.7/config.log: $ ./configure --prefix=/usr/gapps/exmatex/ompss --with-mcc=/usr/gapps/exmatex/ompss/ --with-hwloc=/usr
#./nanox-0.7/config.log: $ ./configure --prefix=/usr/gapps/exmatex/ompss --with-mcc=/usr/gapps/exmatex/ompss/ --with-hwloc=/usr
#./mcxx-1.99.2/config.log: $ ./configure --prefix=/usr/gapps/exmatex/ompss --with-nanox=/usr/gapps/exmatex/ompss --enable-ompss --with-mpi=/opt/mvapich2-intel-shmem-1.7 --enable-tl-openmp-profile --enable-tl-openmp-intel
class Ompss(Package):
homepage = "http://pm.bsc.es/"
@ -15,7 +14,7 @@ class Ompss(Package):
# all dependencies are optional, really
depends_on("mpi")
#depends_on("openmp")
#depends_on("hwloc")
depends_on("hwloc")
def install(self, spec, prefix):
if 'openmpi' in spec:
@ -25,17 +24,17 @@ def install(self, spec, prefix):
elif 'mvapich' in spec:
mpi = spec['mvapich']
openmp_options = ["--enable-tl-openmp-profile"]
if spec.satisfies('%intel'):
openmp_options.append( "--enable-tl-openmp-intel" )
os.chdir(glob.glob('./nanox-*').pop())
#configure("-prefix=" + prefix + " -with-mcc=" + prefix + " -with-hwloc=" + spec['hwloc'].prefix)
#configure("-prefix=" + prefix, "-with-mcc=" + prefix)
subprocess.check_call(["configure", "-prefix=" + prefix, "-with-mcc=" + prefix])
configure("--prefix=%s" % prefix, "--with-mcc=%s" % prefix, "--with-hwloc=%s" % spec['hwloc'].prefix)
make()
make("install")
os.chdir(glob.glob('../mcxx-*').pop())
#configure("-prefix=" + prefix + " -with-nanox=" + prefix + " -enable-ompss -with-mpi=" + mpi.prefix)
#configure("-prefix=" + prefix, "-with-nanox=" + prefix, "-enable-ompss", "-with-mpi=" + mpi.prefix)
subprocess.check_call(['configure', "-prefix=" + prefix, "-with-nanox=" + prefix, "-enable-ompss", "-with-mpi=" + mpi.prefix])
configure("--prefix=%s" % prefix, "--with-nanox=%s" % prefix, "--enable-ompss", "--with-mpi=%s" % mpi.prefix, *openmp_options)
make()
make("install")

View File

@ -0,0 +1,29 @@
from spack import *
import os
class Papi(Package):
"""PAPI provides the tool designer and application engineer with a consistent interface and methodology for use of the performance counter hardware found in most major microprocessors. PAPI enables software engineers to see, in near real time, the relation between software performance and processor events.
In addition Component PAPI provides access to a collection of components that expose performance measurement opportunites across the hardware and software stack."""
homepage = "http://icl.cs.utk.edu/papi/index.html"
url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.3.0.tar.gz"
versions = { '5.3.0' : '367961dd0ab426e5ae367c2713924ffb', }
def install(self, spec, prefix):
os.chdir("src/")
configure_args=["--prefix=%s" % prefix]
# need to force consistency in the use of compilers
if spec.satisfies('%gcc'):
configure_args.append('CC=gcc')
configure_args.append('MPICH_CC=gcc')
if spec.satisfies('%intel'):
configure_args.append('CC=icc')
configure_args.append('MPICH_CC=icc')
configure(*configure_args)
make()
make("install")