From 5a4881c086111a07d93e0e7d5d4f25ba09bb56cc Mon Sep 17 00:00:00 2001 From: Luc Jaulmes Date: Fri, 20 Jun 2014 17:15:32 -0700 Subject: Adding Extrae and OmpSs with some of their dependencies, hwloc and PAPI. Extrae does not compile for latest versions of any MPI implementation. --- var/spack/packages/extrae/package.py | 29 +++++++++++++++++++++++++++++ var/spack/packages/hwloc/package.py | 15 +++++++++++++++ var/spack/packages/mvapich2/package.py | 2 -- var/spack/packages/ompss/package.py | 19 +++++++++---------- var/spack/packages/papi/package.py | 29 +++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 var/spack/packages/extrae/package.py create mode 100644 var/spack/packages/hwloc/package.py create mode 100644 var/spack/packages/papi/package.py diff --git a/var/spack/packages/extrae/package.py b/var/spack/packages/extrae/package.py new file mode 100644 index 0000000000..a06f02d3df --- /dev/null +++ b/var/spack/packages/extrae/package.py @@ -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) + diff --git a/var/spack/packages/hwloc/package.py b/var/spack/packages/hwloc/package.py new file mode 100644 index 0000000000..57c2ae2fa9 --- /dev/null +++ b/var/spack/packages/hwloc/package.py @@ -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") + diff --git a/var/spack/packages/mvapich2/package.py b/var/spack/packages/mvapich2/package.py index 5b62835bf9..0f0f849c51 100644 --- a/var/spack/packages/mvapich2/package.py +++ b/var/spack/packages/mvapich2/package.py @@ -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, diff --git a/var/spack/packages/ompss/package.py b/var/spack/packages/ompss/package.py index 32c9e13e29..66a126579e 100644 --- a/var/spack/packages/ompss/package.py +++ b/var/spack/packages/ompss/package.py @@ -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 @@ class Ompss(Package): 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") diff --git a/var/spack/packages/papi/package.py b/var/spack/packages/papi/package.py new file mode 100644 index 0000000000..15a621985b --- /dev/null +++ b/var/spack/packages/papi/package.py @@ -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") + -- cgit v1.2.3-60-g2f50