summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2014-03-15 16:00:50 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2014-03-15 16:00:50 -0700
commit61fc2317d846f9507354112e61747e06da11d104 (patch)
tree4bb9e09af739f5e4624353d9c679a8327ecdaaef
parentf6ea9406c380a76adf676fb84b222d0836a7b1eb (diff)
parent2588e023ec0db78b408f5a4f99fecfbac5f09fbd (diff)
downloadspack-61fc2317d846f9507354112e61747e06da11d104.tar.gz
spack-61fc2317d846f9507354112e61747e06da11d104.tar.bz2
spack-61fc2317d846f9507354112e61747e06da11d104.tar.xz
spack-61fc2317d846f9507354112e61747e06da11d104.zip
Merge branch 'openmpi' into next
-rw-r--r--lib/spack/spack/packages/openmpi/__init__.py29
-rw-r--r--lib/spack/spack/packages/openmpi/ad_lustre_rwcontig_open_source.patch11
-rw-r--r--lib/spack/spack/packages/openmpi/llnl-platforms.patch151
3 files changed, 191 insertions, 0 deletions
diff --git a/lib/spack/spack/packages/openmpi/__init__.py b/lib/spack/spack/packages/openmpi/__init__.py
new file mode 100644
index 0000000000..f24a66c12e
--- /dev/null
+++ b/lib/spack/spack/packages/openmpi/__init__.py
@@ -0,0 +1,29 @@
+from spack import *
+
+class Openmpi(Package):
+ """Open MPI is a project combining technologies and resources from
+ several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI)
+ in order to build the best MPI library available. A completely
+ new MPI-2 compliant implementation, Open MPI offers advantages
+ for system and software vendors, application developers and
+ computer science researchers.
+ """
+
+ homepage = "http://www.open-mpi.org"
+ url = "http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2"
+
+ versions = { '1.6.5' : '03aed2a4aa4d0b27196962a2a65fc475', }
+
+ patch('ad_lustre_rwcontig_open_source.patch')
+ patch('llnl-platforms.patch')
+
+ def install(self, spec, prefix):
+ configure("--prefix=%s" % prefix,
+ "--with-platform=contrib/platform/lanl/tlcc2/optimized-nopanasas")
+
+ # TODO: implement variants next, so we can have LLNL and LANL options.
+ # use above for LANL builds, but for LLNL builds, we need this
+ # "--with-platform=contrib/platform/llnl/optimized")
+
+ make()
+ make("install")
diff --git a/lib/spack/spack/packages/openmpi/ad_lustre_rwcontig_open_source.patch b/lib/spack/spack/packages/openmpi/ad_lustre_rwcontig_open_source.patch
new file mode 100644
index 0000000000..daa825ccbe
--- /dev/null
+++ b/lib/spack/spack/packages/openmpi/ad_lustre_rwcontig_open_source.patch
@@ -0,0 +1,11 @@
+--- a/ompi/mca/io/romio/romio/adio/ad_lustre/ad_lustre_rwcontig.c 2013-12-10 12:05:44.806417000 -0800
++++ b/ompi/mca/io/romio/romio/adio/ad_lustre/ad_lustre_rwcontig.c 2013-12-10 11:53:03.295622000 -0800
+@@ -8,7 +8,7 @@
+ * Copyright (C) 2008 Sun Microsystems, Lustre group
+ */
+
+-#define _XOPEN_SOURCE 600
++//#define _XOPEN_SOURCE 600
+ #include <stdlib.h>
+ #include <malloc.h>
+ #include "ad_lustre.h"
diff --git a/lib/spack/spack/packages/openmpi/llnl-platforms.patch b/lib/spack/spack/packages/openmpi/llnl-platforms.patch
new file mode 100644
index 0000000000..f515743c4d
--- /dev/null
+++ b/lib/spack/spack/packages/openmpi/llnl-platforms.patch
@@ -0,0 +1,151 @@
+diff -Nuar openmpi-1.6.5.orig/contrib/platform/llnl/optimized openmpi-1.6.5.llnl/contrib/platform/llnl/optimized
+--- openmpi-1.6.5.orig/contrib/platform/llnl/optimized 1969-12-31 16:00:00.000000000 -0800
++++ openmpi-1.6.5.llnl/contrib/platform/llnl/optimized 2013-08-08 23:47:12.704029000 -0700
+@@ -0,0 +1,29 @@
++enable_dlopen=no
++enable_mem_debug=no
++enable_mem_profile=no
++enable_debug_symbols=no
++enable_binaries=yes
++enable_heterogeneous=no
++enable_debug=no
++enable_shared=yes
++enable_static=yes
++enable_memchecker=no
++enable_ipv6=no
++enable_mpi_f77=yes
++enable_mpi_f90=yes
++enable_mpi_cxx=yes
++enable_mpi_cxx_seek=yes
++enable_cxx_exceptions=no
++enable_ft_thread=no
++enable_per_user_config_files=no
++enable_mca_no_build=carto,crs,filem,routed-linear,snapc,pml-dr,pml-crcp2,pml-crcpw,pml-v,pml-example,crcp,btl-tcp
++enable_contrib_no_build=libnbc,vt
++with_slurm=yes
++with_pmi=yes
++with_tm=no
++with_openib=yes
++with_psm=yes
++with_devel_headers=yes
++with_io_romio_flags=--with-file-system=ufs+nfs+lustre
++with_memory_manager=ptmalloc2
++with_valgrind=no
+diff -Nuar openmpi-1.6.5.orig/contrib/platform/llnl/optimized.conf openmpi-1.6.5.llnl/contrib/platform/llnl/optimized.conf
+--- openmpi-1.6.5.orig/contrib/platform/llnl/optimized.conf 1969-12-31 16:00:00.000000000 -0800
++++ openmpi-1.6.5.llnl/contrib/platform/llnl/optimized.conf 2013-08-08 23:43:52.907553000 -0700
+@@ -0,0 +1,114 @@
++#
++# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
++# University Research and Technology
++# Corporation. All rights reserved.
++# Copyright (c) 2004-2005 The University of Tennessee and The University
++# of Tennessee Research Foundation. All rights
++# reserved.
++# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
++# University of Stuttgart. All rights reserved.
++# Copyright (c) 2004-2005 The Regents of the University of California.
++# All rights reserved.
++# Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
++# Copyright (c) 2011 Los Alamos National Security, LLC.
++# All rights reserved.
++# $COPYRIGHT$
++#
++# Additional copyrights may follow
++#
++# $HEADER$
++#
++
++# This is the default system-wide MCA parameters defaults file.
++# Specifically, the MCA parameter "mca_param_files" defaults to a
++# value of
++# "$HOME/.openmpi/mca-params.conf:$sysconf/openmpi-mca-params.conf"
++# (this file is the latter of the two). So if the default value of
++# mca_param_files is not changed, this file is used to set system-wide
++# MCA parameters. This file can therefore be used to set system-wide
++# default MCA parameters for all users. Of course, users can override
++# these values if they want, but this file is an excellent location
++# for setting system-specific MCA parameters for those users who don't
++# know / care enough to investigate the proper values for them.
++
++# Note that this file is only applicable where it is visible (in a
++# filesystem sense). Specifically, MPI processes each read this file
++# during their startup to determine what default values for MCA
++# parameters should be used. mpirun does not bundle up the values in
++# this file from the node where it was run and send them to all nodes;
++# the default value decisions are effectively distributed. Hence,
++# these values are only applicable on nodes that "see" this file. If
++# $sysconf is a directory on a local disk, it is likely that changes
++# to this file will need to be propagated to other nodes. If $sysconf
++# is a directory that is shared via a networked filesystem, changes to
++# this file will be visible to all nodes that share this $sysconf.
++
++# The format is straightforward: one per line, mca_param_name =
++# rvalue. Quoting is ignored (so if you use quotes or escape
++# characters, they'll be included as part of the value). For example:
++
++# Disable run-time MPI parameter checking
++# mpi_param_check = 0
++
++# Note that the value "~/" will be expanded to the current user's home
++# directory. For example:
++
++# Change component loading path
++# component_path = /usr/local/lib/openmpi:~/my_openmpi_components
++
++# See "ompi_info --param all all" for a full listing of Open MPI MCA
++# parameters available and their default values.
++#
++
++# Basic behavior to smooth startup
++mca_component_show_load_errors = 0
++orte_abort_timeout = 10
++opal_set_max_sys_limits = 1
++orte_report_launch_progress = 1
++
++# Define timeout for daemons to report back during launch
++orte_startup_timeout = 10000
++
++## Protect the shared file systems
++orte_no_session_dirs = /p,/usr/local,/usr/global,/nfs/tmp1,/nfs/tmp2
++orte_tmpdir_base = /tmp
++
++## Require an allocation to run - protects the frontend
++## from inadvertent job executions
++orte_allocation_required = 1
++
++## MPI behavior
++## Do NOT specify mpi_leave_pinned so system
++## can figure out for itself whether or not
++## it is supported and usable
++orte_notifier = syslog
++
++## Add the interface for out-of-band communication
++## and set it up
++oob_tcp_if_include=ib0
++oob_tcp_peer_retries = 1000
++oob_tcp_disable_family = IPv6
++oob_tcp_listen_mode = listen_thread
++oob_tcp_sndbuf = 32768
++oob_tcp_rcvbuf = 32768
++
++## Define the MPI interconnects
++btl = sm,openib,self
++
++## We are using the PSM MTL by default
++## There can only be one!
++pml = cm
++
++## Setup OpenIB - just in case
++btl_openib_want_fork_support = 0
++btl_openib_cpc_include = oob
++btl_openib_receive_queues = S,4096,1024:S,12288,512:S,65536,512
++
++## Enable cpu affinity
++opal_paffinity_alone = 1
++
++## Setup MPI options
++mpi_show_handle_leaks = 0
++mpi_warn_on_fork = 1
++mpi_abort_print_stack = 0
++