Merge the ORTE devel branch into the main trunk. Details of what this means will be circulated separately.
Remains to be tested to ensure everything came over cleanly, so please continue to withhold commits a little longer This commit was SVN r17632.
This commit is contained in:
parent
76e6334a57
commit
d70e2e8c2b
@ -67,9 +67,7 @@ m4_include(config/ompi_check_icc.m4)
|
||||
m4_include(config/ompi_check_gm.m4)
|
||||
m4_include(config/ompi_check_mx.m4)
|
||||
m4_include(config/ompi_check_alps.m4)
|
||||
m4_include(config/ompi_check_bproc.m4)
|
||||
m4_include(config/ompi_check_lsf.m4)
|
||||
m4_include(config/ompi_check_xcpu.m4)
|
||||
m4_include(config/ompi_check_openib.m4)
|
||||
m4_include(config/ompi_check_portals.m4)
|
||||
m4_include(config/ompi_check_psm.m4)
|
||||
|
@ -1,67 +0,0 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# 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$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
# new bproc is LANL versions >= 3.2.0
|
||||
# old bproc is all Scyld versions and LANL version < 3.2.0
|
||||
# OMPI_CHECK_BPROC(prefix, [action-if-new-bproc], [action-if-old-bproc],
|
||||
# [action-if-not-found])
|
||||
# --------------------------------------------------------
|
||||
AC_DEFUN([OMPI_CHECK_BPROC],[
|
||||
AC_ARG_WITH([bproc],
|
||||
[AC_HELP_STRING([--with-bproc],
|
||||
[Directory where the BProc software is installed])])
|
||||
|
||||
AS_IF([test ! -z "$with_bproc" -a "$with_bproc" = "no"],[$4], [
|
||||
ompi_check_bproc_save_CPPFLAGS="$CPPFLAGS"
|
||||
ompi_check_bproc_save_LDFLAGS="$LDFLAGS"
|
||||
ompi_check_bproc_save_LIBS="$LIBS"
|
||||
|
||||
AS_IF([test ! -z "$with_bproc" -a "$with_bproc" != "yes"],
|
||||
[CPPFLAGS="$CPPFLAGS -I$with_bproc/include"
|
||||
LDFLAGS="$LDFLAGS -L$with_bproc/lib"])
|
||||
AC_CHECK_HEADERS([sys/bproc.h],
|
||||
[AC_CHECK_LIB([bproc],
|
||||
[bproc_numnodes],
|
||||
[ompi_check_bproc_happy="yes"],
|
||||
[ompi_check_bproc_happy="no"])],
|
||||
[ompi_check_bproc_happy="no"])
|
||||
|
||||
# Check for Scyld bproc or an old version of LANL Bproc (pre 3.2.0)
|
||||
AS_IF([test "$ompi_check_bproc_happy" = "yes"],
|
||||
[AC_CHECK_HEADERS([sys/bproc_common.h],[ompi_check_bproc_happy="new"],
|
||||
[ompi_check_bproc_happy="old"],
|
||||
[#include <stdint.h>
|
||||
#include <sys/socket.h>])])
|
||||
|
||||
CPPFLAGS="$ompi_check_bproc_save_CPPFLAGS"
|
||||
LDFLAGS="$ompi_check_bproc_save_LDFLAGS"
|
||||
LIBS="$ompi_check_bproc_save_LIBS"
|
||||
|
||||
AS_IF([test "$ompi_check_bproc_happy" != "no"],
|
||||
[AS_IF([test ! -z "$with_bproc" -a "$with_bproc" != "yes"],
|
||||
[$1_CPPFLAGS="$$1_CPPFLAGS -I$with_bproc/include"
|
||||
$1_LDFLAGS="$$1_LDFLAGS -L$with_bproc/lib"])
|
||||
$1_LIBS="$$1_LIBS -lbproc"
|
||||
AS_IF([test "$ompi_check_bproc_happy" = "new"], [$2], [$3])],
|
||||
[AS_IF([test ! -z "$with_bproc"],
|
||||
[AC_MSG_ERROR([BProc support request but not found. Perhaps
|
||||
you need to specify the location of the BProc libraries.])])
|
||||
$4])
|
||||
])
|
||||
])
|
@ -1,63 +0,0 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# 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-2006 The Regents of the University of California.
|
||||
# All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
|
||||
# OMPI_CHECK_XCPU(prefix, [action-if-found], [action-if-not-found])
|
||||
# --------------------------------------------------------
|
||||
AC_DEFUN([OMPI_CHECK_XCPU],[
|
||||
AC_ARG_WITH([xcpu],
|
||||
[AC_HELP_STRING([--with-xcpu],
|
||||
[=yes will Build XCPU launcher component (default: no)])])
|
||||
|
||||
AS_IF([test ! -z "$with_xcpu" -a "$with_xcpu" = "no"],[$3], [
|
||||
ompi_check_xcpu_save_CPPFLAGS="$CPPFLAGS"
|
||||
ompi_check_xcpu_save_LDFLAGS="$LDFLAGS"
|
||||
ompi_check_xcpu_save_LIBS="$LIBS"
|
||||
|
||||
AS_IF([test ! -z "$with_xcpu" -a "$with_xcpu" != "yes"],
|
||||
[CPPFLAGS="$CPPFLAGS -I$with_xcpu/include"
|
||||
LDFLAGS="$LDFLAGS -L$with_xcpu/lib"])
|
||||
|
||||
AC_CHECK_HEADERS([libxcpu.h],
|
||||
[AC_CHECK_LIB([xcpu],
|
||||
[xp_command_create],
|
||||
[ompi_check_xcpu_happy="yes"],
|
||||
[ompi_check_xcpu_happy="no"],
|
||||
[-lstrutil -lspclient -lspfs -lelf])],
|
||||
[ompi_check_xcpu_happy="no"],
|
||||
[#include <stdio.h>
|
||||
#include <spfs.h>
|
||||
#include <spclient.h>
|
||||
#include <strutil.h>])
|
||||
|
||||
CPPFLAGS="$ompi_check_xcpu_save_CPPFLAGS"
|
||||
LDFLAGS="$ompi_check_xcpu_save_LDFLAGS"
|
||||
LIBS="$ompi_check_xcpu_save_LIBS"
|
||||
|
||||
AS_IF([test "$ompi_check_xcpu_happy" != "no"],
|
||||
[AS_IF([test ! -z "$with_xcpu" -a "$with_xcpu" != "yes"],
|
||||
[$1_CPPFLAGS="$$1_CPPFLAGS -I$with_xcpu/include"
|
||||
$1_LDFLAGS="$$1_LDFLAGS -L$with_xcpu/lib"])
|
||||
$1_LIBS="$$1_LIBS -lxcpu -lstrutil -lspclient -lspfs -lelf" $2],
|
||||
[AS_IF([test ! -z "$with_xcpu"],
|
||||
[AC_MSG_ERROR([Xcpu support request but not found. Perhaps
|
||||
you need to specify the location of the Xcpu libraries.])])
|
||||
$3])
|
||||
])
|
||||
])
|
@ -546,6 +546,25 @@ AC_DEFINE_UNQUOTED([ORTE_ENABLE_JUMBO_APPS], [$orte_want_jumbo_apps],
|
||||
[Enable support for applications in excess of 32K processes and/or 32K jobs, or running on clusters in excess of 32k nodes])
|
||||
|
||||
|
||||
#
|
||||
# Minimal RTE support
|
||||
#
|
||||
|
||||
AC_MSG_CHECKING([if want full RTE support])
|
||||
AC_ARG_ENABLE([rte],
|
||||
[AC_HELP_STRING([--disable-rte-support],
|
||||
[Disable RTE support for systems that do not require it (default: full RTE support enabled)])])
|
||||
if test "$enable_rte_support" = "no"; then
|
||||
AC_MSG_RESULT([no])
|
||||
orte_disable_full_support=1
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
orte_disable_full_support=0
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([ORTE_DISABLE_FULL_SUPPORT], [$orte_disable_full_support],
|
||||
[Enable full RTE support])
|
||||
AM_CONDITIONAL(ORTE_DISABLE_FULL_SUPPORT, test "$enable_rte_support" = "no")
|
||||
|
||||
#
|
||||
# Cross-compile data
|
||||
#
|
||||
|
@ -50,7 +50,7 @@ AC_DEFUN([OMPI_MCA],[
|
||||
AC_ARG_ENABLE([mca-no-build],
|
||||
[AC_HELP_STRING([--enable-mca-no-build=LIST],
|
||||
[Comma-separated list of <type>-<component> pairs
|
||||
that will not be built. Example: "--enable-mca-no-build=maffinity-libnuma,btl-portals" will disable building both the "libnuma" maffinity and "portals" btl components.])])
|
||||
that will not be built. Example: "--enable-mca-no-build=maffinity,btl-portals" will disable building all maffinity components and the "portals" btl components.])])
|
||||
AC_ARG_ENABLE(mca-dso,
|
||||
AC_HELP_STRING([--enable-mca-dso=LIST],
|
||||
[Comma-separated list of types and/or
|
||||
@ -88,9 +88,13 @@ AC_DEFUN([OMPI_MCA],[
|
||||
for item in $enable_mca_no_build; do
|
||||
type="`echo $item | cut -s -f1 -d-`"
|
||||
comp="`echo $item | cut -s -f2- -d-`"
|
||||
if test -z $type -o -z $comp ; then
|
||||
AC_MSG_ERROR([*** The enable-no-build flag requires a
|
||||
*** list of type-component pairs. Invalid input detected.])
|
||||
if test -z $type ; then
|
||||
type=$item
|
||||
fi
|
||||
if test -z $comp ; then
|
||||
str="`echo DISABLE_${type}=1 | sed s/-/_/g`"
|
||||
eval $str
|
||||
msg="$item $msg"
|
||||
else
|
||||
str="`echo DISABLE_${type}_${comp}=1 | sed s/-/_/g`"
|
||||
eval $str
|
||||
@ -359,9 +363,13 @@ AC_DEFUN([MCA_CONFIGURE_FRAMEWORK],[
|
||||
# abort with a reasonable message.
|
||||
m4_ifdef([mca_$2_no_config_component_list], [],
|
||||
[m4_fatal([Could not find mca_$2_no_config_component_list - rerun autogen.sh without -l])])
|
||||
# make sure priority stuff set right
|
||||
m4_if(OMPI_EVAL_ARG([MCA_]mca_framework[_CONFIGURE_MODE]), [STOP_AT_FIRST],
|
||||
[m4_ifval(mca_$2_no_config_component_list,
|
||||
[m4_fatal([Framework $2 using STOP_AT_FIRST but at least one component has no configure.m4])])])
|
||||
m4_if(OMPI_EVAL_ARG([MCA_]mca_framework[_CONFIGURE_MODE]), [STOP_AT_FIRST_PRIORITY],
|
||||
[m4_ifval(mca_$2_no_config_component_list,
|
||||
[m4_fatal([Framework $2 using STOP_AT_FIRST but at least one component has no configure.m4])])])
|
||||
m4_foreach(mca_component, [mca_$2_no_config_component_list],
|
||||
[m4_ifval(mca_component,
|
||||
[MCA_CONFIGURE_NO_CONFIG_COMPONENT($1, $2, mca_component,
|
||||
@ -404,7 +412,7 @@ AC_DEFUN([MCA_CONFIGURE_FRAMEWORK],[
|
||||
# It would be really hard to run these for "find first that
|
||||
# works", so we don't :)
|
||||
m4_if(OMPI_EVAL_ARG([MCA_]mca_framework[_CONFIGURE_MODE]), [STOP_AT_FIRST], [],
|
||||
[m4_if(OMPI_EVAL_ARG([MCA_]mca_framework[_CONFIGURE_MODE]), [STOP_AT_FIRST], [],
|
||||
[m4_if(OMPI_EVAL_ARG([MCA_]mca_framework[_CONFIGURE_MODE]), [STOP_AT_FIRST_PRIORITY], [],
|
||||
[AS_IF([test "$3" != "0"],
|
||||
[MCA_CONFIGURE_ALL_CONFIG_COMPONENTS($1, $2, [all_components],
|
||||
[static_components], [dso_components],
|
||||
@ -876,6 +884,11 @@ AC_DEFUN([MCA_COMPONENT_BUILD_CHECK],[
|
||||
fi
|
||||
|
||||
# if we were explicitly disabled, don't build :)
|
||||
str="DISABLED_COMPONENT_CHECK=\$DISABLE_${framework}"
|
||||
eval $str
|
||||
if test "$DISABLED_COMPONENT_CHECK" = "1" ; then
|
||||
want_component=0
|
||||
fi
|
||||
str="DISABLED_COMPONENT_CHECK=\$DISABLE_${framework}_$component"
|
||||
eval $str
|
||||
if test "$DISABLED_COMPONENT_CHECK" = "1" ; then
|
||||
|
@ -1263,11 +1263,7 @@ AC_CONFIG_FILES([
|
||||
orte/include/Makefile
|
||||
orte/etc/Makefile
|
||||
|
||||
orte/tools/orteboot/Makefile
|
||||
orte/tools/orted/Makefile
|
||||
orte/tools/ortehalt/Makefile
|
||||
orte/tools/ortekill/Makefile
|
||||
orte/tools/orteprobe/Makefile
|
||||
orte/tools/orterun/Makefile
|
||||
orte/tools/wrappers/Makefile
|
||||
orte/tools/wrappers/ortecc-wrapper-data.txt
|
||||
@ -1304,6 +1300,7 @@ AC_CONFIG_FILES([
|
||||
ompi/tools/wrappers/mpif77-wrapper-data.txt
|
||||
ompi/tools/wrappers/mpif90-wrapper-data.txt
|
||||
ompi/tools/ortetools/Makefile
|
||||
ompi/tools/ompi-server/Makefile
|
||||
|
||||
test/Makefile
|
||||
test/event/Makefile
|
||||
|
@ -6,7 +6,8 @@ enable_pretty_print_stacktrace=no
|
||||
enable_dlopen=no
|
||||
with_portals_config=redstorm
|
||||
with_memory_manager=none
|
||||
enable_mca_no_build=maffinity-first_use,maffinity-libnuma,paffinity-linux,timer-linux,gpr-proxy,gpr-replica,iof-svc,ns-proxy,oob-tcp,pls-rsh,ras-dash_host,ras-hostfile,ras-localhost,rds-hostfile,rds-resfile,rmaps-round_robin,rmgr-proxy,rmgr-urm,rml-oob,sds-env,sds-seed,sds-singleton,btl-sm,btl-self,btl-tcp,coll-hierarch,coll-sm,common-sm,mpool-sm,pml-dr,filem-rsh,grpcomm-basic
|
||||
enable_mca_no_build=carto-file,maffinity,paffinity,timer,errmgr,iof,odls,oob,plm,ras,rmaps,rml,routed,filem,btl-sm,btl-self,coll-hierarch,coll-sm,common-sm,mpool-sm,pml-dr,libnbc,vt
|
||||
with_rte_support=no
|
||||
enable_heterogeneous=no
|
||||
enable_pty_support=no
|
||||
enable_mem_debug=no
|
||||
|
@ -1,3 +1,7 @@
|
||||
enable_mem_debug=no
|
||||
enable_mem_profile=no
|
||||
enable_debug=no
|
||||
enable_debug_symbols=no
|
||||
enable_io_romio=yes
|
||||
enable_static=yes
|
||||
enable_shared=no
|
||||
@ -6,12 +10,9 @@ enable_pretty_print_stacktrace=no
|
||||
enable_dlopen=no
|
||||
with_portals_config=cnl_modex
|
||||
with_memory_manager=none
|
||||
enable_mca_no_build=maffinity-first_use,maffinity-libnuma,paffinity-linux,pls-rsh,pml-dr,filem-rsh,grpcomm-cnos,pls-cnos,rmgr-cnos,rml-cnos,routed-cnos,sds-portals_utcp,sds-cnos
|
||||
enable_mca_no_build=maffinity-first_use,maffinity-libnuma,paffinity-linux,ess-cnos,pml-dr,filem-rsh,grpcomm-cnos,rmgr-cnos,rml-cnos
|
||||
enable_heterogeneous=no
|
||||
enable_pty_support=no
|
||||
enable_mem_debug=no
|
||||
enable_mem_profile=no
|
||||
enable_debug_symbols=no
|
||||
enable_binaries=yes
|
||||
|
||||
ompi_cv_f77_sizeof_LOGICAL=${ompi_cv_f77_sizeof_LOGICAL=4}
|
||||
|
20
contrib/platform/lanl/roadrunner/debug
Normal file
20
contrib/platform/lanl/roadrunner/debug
Normal file
@ -0,0 +1,20 @@
|
||||
with_threads=no
|
||||
enable_dlopen=no
|
||||
enable_pty_support=no
|
||||
with_tm=/opt/PBS
|
||||
with_wrapper_cflags=-I/opt/panfs/include
|
||||
LDFLAGS=-L/opt/PBS/lib64
|
||||
with_openib=/opt/ofed
|
||||
with_io_romio_flags=--with-file-system=ufs+nfs+panfs
|
||||
with_memory_manager=no
|
||||
enable_mem_debug=yes
|
||||
enable_mem_profile=no
|
||||
enable_debug_symbols=yes
|
||||
enable_binaries=yes
|
||||
with_devel_headers=yes
|
||||
enable_heterogeneous=yes
|
||||
enable_picky=yes
|
||||
enable_debug=yes
|
||||
enable_shared=yes
|
||||
enable_static=no
|
||||
with_slurm=no
|
64
contrib/platform/lanl/roadrunner/openmpi-mca-params.conf
Normal file
64
contrib/platform/lanl/roadrunner/openmpi-mca-params.conf
Normal file
@ -0,0 +1,64 @@
|
||||
#
|
||||
# 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$
|
||||
#
|
||||
# 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.
|
||||
|
||||
oob_tcp_if_include = ib0
|
||||
mpi_preconnect_oob = 1
|
||||
btl_sm_free_list_max = 768
|
||||
oob_tcp_connect_timeout = 600
|
||||
oob_tcp_if_include = ib0
|
18
contrib/platform/lanl/roadrunner/optimized
Normal file
18
contrib/platform/lanl/roadrunner/optimized
Normal file
@ -0,0 +1,18 @@
|
||||
with_threads=no
|
||||
enable_dlopen=no
|
||||
enable_pty_support=no
|
||||
with_tm=/opt/PBS
|
||||
LDFLAGS=-L/opt/PBS/lib64
|
||||
with_openib=/opt/ofed
|
||||
with_memory_manager=yes
|
||||
enable_mem_debug=no
|
||||
enable_mem_profile=no
|
||||
enable_debug_symbols=no
|
||||
enable_binaries=yes
|
||||
with_devel_headers=no
|
||||
enable_heterogeneous=yes
|
||||
enable_debug=no
|
||||
enable_shared=yes
|
||||
with_wrapper_cflags=-I/opt/panfs/include
|
||||
with_io_romio_flags=--with-file-system=ufs+nfs+panfs
|
||||
with_slurm=no
|
@ -10,13 +10,9 @@ enable_dlopen=no
|
||||
with_portals_config=utcp
|
||||
with_memory_manager=no
|
||||
enable_heterogeneous=no
|
||||
enable_mca_no_build=maffinity-first_use,maffinity-libnuma,paffinity-linux,timer-linux,gpr-proxy,gpr-replica,rml-oob,btl-sm,mpool-sm,btl-self,ns-proxy,rds-resfile,rds-hostfile,sds-env,sds-pipe,sds-seed,sds-singleton,coll-hierarch,coll-sm,pml-dr,btl-tcp,oob-tcp,ras-dash_host,ras-hostfile,ras-localhost,rmaps-round_robin,rmgr-urm,rmgr-proxy,pls-fork,pls-rsh,common-sm,iof-svc
|
||||
with_slurm=no
|
||||
with_bproc=no
|
||||
with_mvapi=no
|
||||
enable_mca_no_build=maffinity,paffinity,timer,errmgr,iof,odls,oob,plm,ras,rmaps,rml,routed,btl-sm,mpool-sm,btl-self,coll-hierarch,coll-sm,pml-dr,btl-tcp,common-sm
|
||||
with_rte_support=no
|
||||
with_openib=no
|
||||
with_gm=no
|
||||
with_mx=no
|
||||
with_rml_cnos=utcp
|
||||
with_rmgr_cnos=utcp
|
||||
enable_binaries=no
|
||||
|
@ -5,7 +5,7 @@ with_threads=no
|
||||
enable_pretty_print_stacktrace=no
|
||||
enable_dlopen=no
|
||||
with_memory_manager=none
|
||||
enable_mca_no_build=maffinity-first_use,maffinity-libnuma,paffinity-linux,timer-linux,allocator-basic,rcache-vma,pls-gridengine,pls-slurm,ras-slurm,ras-gridengine,btl-sm,coll-hierarch,coll-sm,common-sm,mpool-sm,pml-dr,pml-cm,mpool-rdma,osc-rdma,sds-slurm,backtrace-darwin,memory-darwin,memory-malloc_hook,memory_ptmalloc2,paffinity-solaris,paffinity-windows,timer-aix,timer-altix,timer-darwin,timer-solaris,timer-windows
|
||||
enable_mca_no_build=maffinity,paffinity,timer,allocator-basic,rcache-vma,plm-gridengine,plm-slurm,ras-slurm,ras-gridengine,btl-sm,coll-hierarch,coll-sm,common-sm,mpool-sm,pml-dr,pml-cm,mpool-rdma,osc-rdma,ess-slurm,backtrace-darwin,memory-darwin,memory-malloc_hook,memory_ptmalloc2
|
||||
enable_heterogeneous=no
|
||||
enable_pty_support=no
|
||||
enable_mem_debug=no
|
||||
|
@ -6,7 +6,8 @@ enable_pretty_print_stacktrace=no
|
||||
enable_dlopen=no
|
||||
with_portals_config=redstorm
|
||||
with_memory_manager=none
|
||||
enable_mca_no_build=maffinity-first_use,maffinity-libnuma,paffinity-linux,timer-linux,gpr-proxy,gpr-replica,iof-svc,ns-proxy,oob-tcp,pls-rsh,ras-dash_host,ras-hostfile,ras-localhost,rds-hostfile,rds-resfile,rmaps-round_robin,rmgr-proxy,rmgr-urm,rml-oob,sds-env,sds-seed,sds-singleton,btl-sm,btl-self,coll-hierarch,coll-sm,common-sm,mpool-sm,pml-dr,filem-rsh,grpcomm-basic
|
||||
enable_mca_no_build=carto-file,maffinity,paffinity,timer,errmgr,iof,odls,oob,plm,ras,rmaps,rml,routed,filem,btl-sm,btl-self,coll-hierarch,coll-sm,common-sm,mpool-sm,pml-dr,libnbc,vt
|
||||
with_rte_support=no
|
||||
enable_heterogeneous=no
|
||||
enable_pty_support=no
|
||||
enable_mem_debug=no
|
||||
|
@ -25,6 +25,4 @@ headers += \
|
||||
libmpi_la_SOURCES += \
|
||||
communicator/comm_init.c \
|
||||
communicator/comm.c \
|
||||
communicator/comm_cid.c \
|
||||
communicator/comm_dyn.c \
|
||||
communicator/comm_publish.c
|
||||
communicator/comm_cid.c
|
||||
|
@ -23,7 +23,10 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "ompi/constants.h"
|
||||
#include "orte/dss/dss.h"
|
||||
|
||||
#include "opal/dss/dss.h"
|
||||
#include "orte/util/name_fns.h"
|
||||
|
||||
#include "ompi/proc/proc.h"
|
||||
#include "opal/threads/mutex.h"
|
||||
#include "opal/util/bit_ops.h"
|
||||
@ -31,7 +34,7 @@
|
||||
#include "opal/util/convert.h"
|
||||
#include "ompi/mca/topo/topo.h"
|
||||
#include "ompi/mca/topo/base/base.h"
|
||||
#include "orte/mca/ns/ns.h"
|
||||
#include "ompi/mca/dpm/dpm.h"
|
||||
|
||||
#include "ompi/attribute/attribute.h"
|
||||
#include "ompi/communicator/communicator.h"
|
||||
@ -139,7 +142,7 @@ int ompi_comm_set ( ompi_communicator_t **ncomm,
|
||||
|
||||
/* Check how many different jobids are represented in this communicator.
|
||||
Necessary for the disconnect of dynamic communicators. */
|
||||
ompi_comm_mark_dyncomm (newcomm);
|
||||
ompi_dpm.mark_dyncomm (newcomm);
|
||||
|
||||
/* Set error handler */
|
||||
newcomm->error_handler = errh;
|
||||
@ -1035,7 +1038,7 @@ ompi_proc_t **ompi_comm_get_rprocs ( ompi_communicator_t *local_comm,
|
||||
ompi_proc_t **rprocs=NULL;
|
||||
orte_std_cntr_t size_len;
|
||||
int int_len, rlen;
|
||||
orte_buffer_t *sbuf=NULL, *rbuf=NULL;
|
||||
opal_buffer_t *sbuf=NULL, *rbuf=NULL;
|
||||
void *sendbuf;
|
||||
char *recvbuf;
|
||||
ompi_proc_t **proc_list=NULL;
|
||||
@ -1045,7 +1048,7 @@ ompi_proc_t **ompi_comm_get_rprocs ( ompi_communicator_t *local_comm,
|
||||
local_size = ompi_comm_size (local_comm);
|
||||
|
||||
if (local_rank == local_leader) {
|
||||
sbuf = OBJ_NEW(orte_buffer_t);
|
||||
sbuf = OBJ_NEW(opal_buffer_t);
|
||||
if (NULL == sbuf) {
|
||||
rc = ORTE_ERROR;
|
||||
goto err_exit;
|
||||
@ -1065,7 +1068,7 @@ ompi_proc_t **ompi_comm_get_rprocs ( ompi_communicator_t *local_comm,
|
||||
if ( OMPI_SUCCESS != rc ) {
|
||||
goto err_exit;
|
||||
}
|
||||
if (ORTE_SUCCESS != (rc = orte_dss.unload(sbuf, &sendbuf, &size_len))) {
|
||||
if (ORTE_SUCCESS != (rc = opal_dss.unload(sbuf, &sendbuf, &size_len))) {
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
@ -1131,13 +1134,13 @@ ompi_proc_t **ompi_comm_get_rprocs ( ompi_communicator_t *local_comm,
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
rbuf = OBJ_NEW(orte_buffer_t);
|
||||
rbuf = OBJ_NEW(opal_buffer_t);
|
||||
if (NULL == rbuf) {
|
||||
rc = ORTE_ERROR;
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
if (ORTE_SUCCESS != (rc = orte_dss.load(rbuf, recvbuf, rlen))) {
|
||||
if (ORTE_SUCCESS != (rc = opal_dss.load(rbuf, recvbuf, rlen))) {
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
@ -1250,7 +1253,7 @@ int ompi_comm_determine_first ( ompi_communicator_t *intercomm, int high )
|
||||
theirproc = ompi_group_peer_lookup(intercomm->c_remote_group,0);
|
||||
|
||||
mask = ORTE_NS_CMP_JOBID | ORTE_NS_CMP_VPID;
|
||||
rc = orte_ns.compare_fields(mask, &(ourproc->proc_name), &(theirproc->proc_name));
|
||||
rc = orte_util_compare_name_fields(mask, &(ourproc->proc_name), &(theirproc->proc_name));
|
||||
if ( 0 > rc ) {
|
||||
flag = true;
|
||||
}
|
||||
@ -1611,7 +1614,7 @@ static int ompi_comm_fill_rest (ompi_communicator_t *comm,
|
||||
|
||||
/* verify whether to set the flag, that this comm
|
||||
contains process from more than one jobid. */
|
||||
ompi_comm_mark_dyncomm (comm);
|
||||
ompi_dpm.mark_dyncomm (comm);
|
||||
|
||||
/* set the error handler */
|
||||
comm->error_handler = errh;
|
||||
|
@ -22,9 +22,9 @@
|
||||
|
||||
#include "ompi_config.h"
|
||||
|
||||
#include "orte/dss/dss.h"
|
||||
#include "opal/dss/dss.h"
|
||||
#include "opal/util/convert.h"
|
||||
#include "orte/mca/ns/ns_types.h"
|
||||
#include "orte/types.h"
|
||||
#include "ompi/communicator/communicator.h"
|
||||
#include "ompi/proc/proc.h"
|
||||
#include "ompi/constants.h"
|
||||
@ -35,10 +35,10 @@
|
||||
#include "orte/mca/rml/rml.h"
|
||||
#include "ompi/request/request.h"
|
||||
#include "ompi/runtime/mpiruntime.h"
|
||||
#include "ompi/mca/dpm/dpm.h"
|
||||
|
||||
BEGIN_C_DECLS
|
||||
|
||||
#if defined(c_plusplus) || defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
/**
|
||||
* These functions make sure, that we determine the global result over
|
||||
* an intra communicators (simple), an inter-communicator and a
|
||||
@ -774,26 +774,26 @@ static int ompi_comm_allreduce_intra_oob (int *inbuf, int *outbuf,
|
||||
}
|
||||
|
||||
if (local_rank == local_leader ) {
|
||||
orte_buffer_t *sbuf;
|
||||
orte_buffer_t *rbuf;
|
||||
opal_buffer_t *sbuf;
|
||||
opal_buffer_t *rbuf;
|
||||
|
||||
sbuf = OBJ_NEW(orte_buffer_t);
|
||||
rbuf = OBJ_NEW(orte_buffer_t);
|
||||
sbuf = OBJ_NEW(opal_buffer_t);
|
||||
rbuf = OBJ_NEW(opal_buffer_t);
|
||||
|
||||
if (ORTE_SUCCESS != (rc = orte_dss.pack(sbuf, tmpbuf, (orte_std_cntr_t)count, ORTE_INT))) {
|
||||
if (ORTE_SUCCESS != (rc = opal_dss.pack(sbuf, tmpbuf, (orte_std_cntr_t)count, OPAL_INT))) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if ( send_first ) {
|
||||
rc = orte_rml.send_buffer(remote_leader, sbuf, ORTE_RML_TAG_COMM_CID_INTRA, 0);
|
||||
rc = orte_rml.recv_buffer(remote_leader, rbuf, ORTE_RML_TAG_COMM_CID_INTRA, 0);
|
||||
rc = orte_rml.send_buffer(remote_leader, sbuf, OMPI_RML_TAG_COMM_CID_INTRA, 0);
|
||||
rc = orte_rml.recv_buffer(remote_leader, rbuf, OMPI_RML_TAG_COMM_CID_INTRA, 0);
|
||||
}
|
||||
else {
|
||||
rc = orte_rml.recv_buffer(remote_leader, rbuf, ORTE_RML_TAG_COMM_CID_INTRA, 0);
|
||||
rc = orte_rml.send_buffer(remote_leader, sbuf, ORTE_RML_TAG_COMM_CID_INTRA, 0);
|
||||
rc = orte_rml.recv_buffer(remote_leader, rbuf, OMPI_RML_TAG_COMM_CID_INTRA, 0);
|
||||
rc = orte_rml.send_buffer(remote_leader, sbuf, OMPI_RML_TAG_COMM_CID_INTRA, 0);
|
||||
}
|
||||
|
||||
if (ORTE_SUCCESS != (rc = orte_dss.unpack(rbuf, outbuf, &size_count, ORTE_INT))) {
|
||||
if (ORTE_SUCCESS != (rc = opal_dss.unpack(rbuf, outbuf, &size_count, OPAL_INT))) {
|
||||
goto exit;
|
||||
}
|
||||
OBJ_RELEASE(sbuf);
|
||||
@ -834,6 +834,5 @@ static int ompi_comm_allreduce_intra_oob (int *inbuf, int *outbuf,
|
||||
|
||||
return (rc);
|
||||
}
|
||||
#if defined(c_plusplus) || defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
END_C_DECLS
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -28,11 +28,11 @@
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
#include "ompi/mca/coll/base/base.h"
|
||||
#include "ompi/mca/topo/base/base.h"
|
||||
#include "orte/mca/ns/base/base.h"
|
||||
#include "ompi/runtime/params.h"
|
||||
#include "ompi/communicator/communicator.h"
|
||||
#include "ompi/attribute/attribute.h"
|
||||
#include "ompi/mca/topo/topo.h"
|
||||
#include "ompi/mca/dpm/dpm.h"
|
||||
#include "ompi/memchecker.h"
|
||||
|
||||
/*
|
||||
@ -210,7 +210,7 @@ int ompi_comm_finalize(void)
|
||||
OBJ_DESTRUCT( &ompi_mpi_comm_self );
|
||||
|
||||
/* disconnect all dynamic communicators */
|
||||
ompi_comm_dyn_finalize();
|
||||
ompi_dpm.dyn_finalize();
|
||||
|
||||
/* Shut down MPI_COMM_WORLD */
|
||||
OBJ_DESTRUCT( &ompi_mpi_comm_world );
|
||||
|
@ -1,166 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2004-2006 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) 2007 Cisco, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
*
|
||||
* $HEADER$
|
||||
*/
|
||||
|
||||
#include "ompi_config.h"
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "ompi/communicator/communicator.h"
|
||||
#include "ompi/proc/proc.h"
|
||||
#include "ompi/constants.h"
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
|
||||
#include "orte/dss/dss.h"
|
||||
#include "orte/mca/errmgr/errmgr.h"
|
||||
#include "orte/mca/ns/ns.h"
|
||||
#include "orte/mca/gpr/gpr.h"
|
||||
#include "orte/mca/rml/rml_types.h"
|
||||
|
||||
#define OMPI_COMM_PORT_KEY "ompi-port-name"
|
||||
|
||||
|
||||
int ompi_open_port(char *port_name)
|
||||
{
|
||||
ompi_proc_t **myproc=NULL;
|
||||
char *name=NULL;
|
||||
size_t size=0;
|
||||
orte_rml_tag_t lport_id=0;
|
||||
int rc;
|
||||
|
||||
/*
|
||||
* The port_name is equal to the OOB-contact information
|
||||
* and an integer. The reason for adding the integer is
|
||||
* to make the port unique for multi-threaded scenarios.
|
||||
*/
|
||||
|
||||
myproc = ompi_proc_self (&size);
|
||||
if (ORTE_SUCCESS != (rc = orte_ns.get_proc_name_string (&name, &(myproc[0]->proc_name)))) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (ORTE_SUCCESS != (rc = orte_ns.assign_rml_tag(&lport_id, NULL))) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
sprintf (port_name, "%s:%d", name, lport_id);
|
||||
free ( myproc );
|
||||
free ( name );
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
||||
/* takes a port_name and separates it into the process_name
|
||||
and the tag
|
||||
*/
|
||||
char *ompi_parse_port (char *port_name, orte_rml_tag_t *tag)
|
||||
{
|
||||
char tmp_port[MPI_MAX_PORT_NAME], *tmp_string;
|
||||
|
||||
tmp_string = (char *) malloc (MPI_MAX_PORT_NAME);
|
||||
if (NULL == tmp_string ) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
strncpy (tmp_port, port_name, MPI_MAX_PORT_NAME);
|
||||
strncpy (tmp_string, strtok(tmp_port, ":"), MPI_MAX_PORT_NAME);
|
||||
sscanf( strtok(NULL, ":"),"%d", (int*)tag);
|
||||
|
||||
return tmp_string;
|
||||
}
|
||||
|
||||
/*
|
||||
* publish the port_name using the service_name as a token
|
||||
* jobid and vpid are used later to make
|
||||
* sure, that only this process can unpublish the information.
|
||||
*/
|
||||
int ompi_comm_namepublish ( char *service_name, char *port_name )
|
||||
{
|
||||
orte_gpr_value_t *value;
|
||||
int rc;
|
||||
|
||||
if (ORTE_SUCCESS != (rc = orte_gpr.create_value(&value, ORTE_GPR_TOKENS_AND | ORTE_GPR_OVERWRITE,
|
||||
OMPI_NAMESPACE_SEGMENT, 1, 1))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
value->tokens[0] = strdup(service_name);
|
||||
|
||||
if (ORTE_SUCCESS != (rc = orte_gpr.create_keyval(&(value->keyvals[0]), OMPI_COMM_PORT_KEY, ORTE_STRING, port_name))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
OBJ_RELEASE(value);
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (ORTE_SUCCESS != (rc = orte_gpr.put(1, &value))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
}
|
||||
|
||||
OBJ_RELEASE(value);
|
||||
return rc;
|
||||
}
|
||||
|
||||
char* ompi_comm_namelookup ( char *service_name )
|
||||
{
|
||||
char *token[2], *key[2];
|
||||
orte_gpr_keyval_t **keyvals=NULL;
|
||||
orte_gpr_value_t **values;
|
||||
orte_std_cntr_t cnt=0;
|
||||
char *stmp=NULL;
|
||||
int ret;
|
||||
|
||||
token[0] = service_name;
|
||||
token[1] = NULL;
|
||||
|
||||
key[0] = strdup(OMPI_COMM_PORT_KEY);
|
||||
key[1] = NULL;
|
||||
|
||||
ret = orte_gpr.get(ORTE_GPR_TOKENS_AND, OMPI_NAMESPACE_SEGMENT,
|
||||
token, key, &cnt, &values);
|
||||
if (ORTE_SUCCESS != ret) {
|
||||
return NULL;
|
||||
}
|
||||
if ( 0 < cnt && NULL != values[0] ) { /* should be only one, if any */
|
||||
keyvals = values[0]->keyvals;
|
||||
stmp = strdup((const char*)keyvals[0]->value->data);
|
||||
OBJ_RELEASE(values[0]);
|
||||
}
|
||||
|
||||
return (stmp);
|
||||
}
|
||||
|
||||
/*
|
||||
* delete the entry. Just the process who has published
|
||||
* the service_name, has the right to remove this
|
||||
* service. Will be done later, by adding jobid and vpid
|
||||
* as tokens
|
||||
*/
|
||||
int ompi_comm_nameunpublish ( char *service_name )
|
||||
{
|
||||
char *token[2];
|
||||
|
||||
token[0] = service_name;
|
||||
token[1] = NULL;
|
||||
#if 0
|
||||
return orte_gpr.delete_entries(ORTE_GPR_TOKENS_AND,
|
||||
OMPI_NAMESPACE_SEGMENT,
|
||||
token, NULL);
|
||||
#endif
|
||||
return OMPI_SUCCESS;
|
||||
}
|
@ -65,7 +65,6 @@ OMPI_DECLSPEC OBJ_CLASS_DECLARATION(ompi_communicator_t);
|
||||
/* a set of special tags: */
|
||||
|
||||
/* to recognize an MPI_Comm_join in the comm_connect_accept routine. */
|
||||
#define OMPI_COMM_JOIN_TAG -32000
|
||||
|
||||
#define OMPI_COMM_ALLGATHER_TAG -31078
|
||||
#define OMPI_COMM_BARRIER_TAG -31079
|
||||
@ -356,7 +355,7 @@ struct ompi_communicator_t {
|
||||
* the OOB version.
|
||||
* This routine has to be thread safe in the final version.
|
||||
*/
|
||||
int ompi_comm_nextcid ( ompi_communicator_t* newcomm,
|
||||
OMPI_DECLSPEC int ompi_comm_nextcid ( ompi_communicator_t* newcomm,
|
||||
ompi_communicator_t* oldcomm,
|
||||
ompi_communicator_t* bridgecomm,
|
||||
void* local_leader,
|
||||
@ -373,7 +372,7 @@ struct ompi_communicator_t {
|
||||
* This is THE routine, where all the communicator stuff
|
||||
* is really set.
|
||||
*/
|
||||
int ompi_comm_set ( ompi_communicator_t** newcomm,
|
||||
OMPI_DECLSPEC int ompi_comm_set ( ompi_communicator_t** newcomm,
|
||||
ompi_communicator_t* oldcomm,
|
||||
int local_size,
|
||||
int *local_ranks,
|
||||
@ -412,7 +411,7 @@ struct ompi_communicator_t {
|
||||
int high );
|
||||
|
||||
|
||||
int ompi_comm_activate ( ompi_communicator_t* newcomm,
|
||||
OMPI_DECLSPEC int ompi_comm_activate ( ompi_communicator_t* newcomm,
|
||||
ompi_communicator_t* oldcomm,
|
||||
ompi_communicator_t* bridgecomm,
|
||||
void* local_leader,
|
||||
@ -427,35 +426,9 @@ struct ompi_communicator_t {
|
||||
*/
|
||||
int ompi_comm_dump ( ompi_communicator_t *comm );
|
||||
|
||||
/**
|
||||
* a simple function to determint a port number
|
||||
*/
|
||||
int ompi_open_port (char *port_name);
|
||||
|
||||
/**
|
||||
* takes a port_name and returns the oob-contact information
|
||||
* and the tag
|
||||
*/
|
||||
char * ompi_parse_port (char *port_name, orte_rml_tag_t *tag) ;
|
||||
|
||||
/**
|
||||
* routines handling name publishing, lookup and unpublishing
|
||||
*/
|
||||
int ompi_comm_namepublish ( char *service_name, char *port_name );
|
||||
char* ompi_comm_namelookup ( char *service_name );
|
||||
int ompi_comm_nameunpublish ( char *service_name );
|
||||
|
||||
|
||||
/* setting name */
|
||||
int ompi_comm_set_name (ompi_communicator_t *comm, char *name );
|
||||
|
||||
/* THE routine for dynamic process management. This routine
|
||||
sets the connection up between two independent applications.
|
||||
*/
|
||||
int ompi_comm_connect_accept ( ompi_communicator_t *comm, int root,
|
||||
orte_process_name_t *port, int send_first,
|
||||
ompi_communicator_t **newcomm, orte_rml_tag_t tag);
|
||||
|
||||
/*
|
||||
* these are the init and finalize functions for the comm_reg
|
||||
* stuff. These routines are necessary for handling multi-threading
|
||||
@ -464,59 +437,9 @@ struct ompi_communicator_t {
|
||||
void ompi_comm_reg_init(void);
|
||||
void ompi_comm_reg_finalize(void);
|
||||
|
||||
/* start the new processes from MPI_Comm_spawn_multiple. Initial
|
||||
* version, very rough
|
||||
*/
|
||||
int ompi_comm_start_processes(int count, char **array_of_commands,
|
||||
char ***array_of_argv,
|
||||
int *array_of_maxprocs,
|
||||
MPI_Info *array_of_info,
|
||||
char *port_name);
|
||||
|
||||
/*
|
||||
* This routine checks, whether an application has been spawned
|
||||
* by another MPI application, or has been independently started.
|
||||
* If it has been spawned, it establishes the parent communicator.
|
||||
* Since the routine has to communicate, it should be among the last
|
||||
* steps in MPI_Init, to be sure that everything is already set up.
|
||||
*/
|
||||
int ompi_comm_dyn_init(void);
|
||||
|
||||
/**
|
||||
* Executes internally a disconnect on all dynamic communicators
|
||||
* in case the user did not disconnect them.
|
||||
*/
|
||||
int ompi_comm_dyn_finalize(void);
|
||||
|
||||
/* this routine counts the number of different jobids of the processes
|
||||
given in a certain communicator. If there is more than one jobid,
|
||||
we mark the communicator as 'dynamic'. This is especially relevant
|
||||
for the MPI_Comm_disconnect *and* for MPI_Finalize, where we have
|
||||
to wait for all still connected processes. */
|
||||
/* global variable to save the number od dynamic communicators */
|
||||
extern int ompi_comm_num_dyncomm;
|
||||
void ompi_comm_mark_dyncomm (ompi_communicator_t *comm);
|
||||
|
||||
/* the next two routines implement a kind of non-blocking barrier.
|
||||
the only difference is, that you can wait for the completion
|
||||
of more than one initiated ibarrier. This is required for waiting
|
||||
for all still connected processes in MPI_Finalize.
|
||||
|
||||
ompi_comm_disconnect_init returns a handle, which has to be passed in
|
||||
to ompi_comm_disconnect_waitall. The second routine blocks, until
|
||||
all non-blocking barriers described by the handles are finished.
|
||||
The communicators can than be released.
|
||||
*/
|
||||
|
||||
struct ompi_comm_disconnect_obj {
|
||||
ompi_communicator_t *comm;
|
||||
int size;
|
||||
struct ompi_request_t **reqs;
|
||||
int buf;
|
||||
};
|
||||
typedef struct ompi_comm_disconnect_obj ompi_comm_disconnect_obj;
|
||||
|
||||
ompi_comm_disconnect_obj *ompi_comm_disconnect_init (ompi_communicator_t *comm);
|
||||
void ompi_comm_disconnect_waitall (int count, ompi_comm_disconnect_obj **objs );
|
||||
|
||||
END_C_DECLS
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#ifdef HAVE_STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
|
||||
#include "opal/prefetch.h"
|
||||
|
||||
|
@ -24,6 +24,8 @@
|
||||
#include "ompi/datatype/convertor_internal.h"
|
||||
#include "ompi/datatype/datatype_internal.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#if OMPI_ENABLE_DEBUG
|
||||
extern int ompi_unpack_debug;
|
||||
#define DO_DEBUG(INST) if( ompi_unpack_debug ) { INST }
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "ompi/datatype/datatype.h"
|
||||
#include "ompi/datatype/datatype_internal.h"
|
||||
#include "ompi/datatype/convertor_internal.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#if OMPI_ENABLE_DEBUG
|
||||
#include "opal/mca/base/mca_base_param.h"
|
||||
|
@ -136,7 +136,7 @@ OMPI_DECLSPEC extern ompi_group_t ompi_mpi_group_null;
|
||||
*
|
||||
* @return Pointer to new group structure
|
||||
*/
|
||||
ompi_group_t *ompi_group_allocate(int group_size);
|
||||
OMPI_DECLSPEC ompi_group_t *ompi_group_allocate(int group_size);
|
||||
ompi_group_t *ompi_group_allocate_sporadic(int group_size);
|
||||
ompi_group_t *ompi_group_allocate_strided(void);
|
||||
ompi_group_t *ompi_group_allocate_bmap(int orig_group_size, int group_size);
|
||||
|
@ -286,7 +286,7 @@ typedef int (MPI_Grequest_cancel_function)(void *, int);
|
||||
#define MPI_ARGV_NULL ((char **) 0) /* NULL argument vector */
|
||||
#define MPI_ARGVS_NULL ((char ***) 0) /* NULL argument vectors */
|
||||
#define MPI_ERRCODES_IGNORE ((int *) 0) /* don't return error codes */
|
||||
#define MPI_MAX_PORT_NAME 36 /* max port name length */
|
||||
#define MPI_MAX_PORT_NAME 256 /* max port name length */
|
||||
#define MPI_MAX_NAME_LEN MPI_MAX_PORT_NAME /* max port name length */
|
||||
#define MPI_ORDER_C 0 /* C row major order */
|
||||
#define MPI_ORDER_FORTRAN 1 /* Fortran column major order */
|
||||
|
@ -133,7 +133,7 @@
|
||||
parameter (MPI_BSEND_OVERHEAD=128)
|
||||
parameter (MPI_MAX_INFO_KEY=35)
|
||||
parameter (MPI_MAX_INFO_VAL=255)
|
||||
parameter (MPI_MAX_PORT_NAME=35)
|
||||
parameter (MPI_MAX_PORT_NAME=255)
|
||||
parameter (MPI_MAX_OBJECT_NAME=63)
|
||||
parameter (MPI_ORDER_C=0)
|
||||
parameter (MPI_ORDER_FORTRAN=1)
|
||||
|
@ -19,7 +19,7 @@
|
||||
#ifndef OMPI_CONSTANTS_H
|
||||
#define OMPI_CONSTANTS_H
|
||||
|
||||
#include "orte/orte_constants.h"
|
||||
#include "orte/constants.h"
|
||||
|
||||
#define OMPI_ERR_BASE ORTE_ERR_MAX
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
* University of Stuttgart. All rights reserved.
|
||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -27,6 +28,7 @@
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "ompi/constants.h"
|
||||
#include "ompi/info/info.h"
|
||||
@ -207,6 +209,46 @@ int ompi_info_get (ompi_info_t *info, char *key, int valuelen,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Similar to ompi_info_get(), but cast the result into a boolean
|
||||
* using some well-defined rules.
|
||||
*/
|
||||
int ompi_info_get_bool(ompi_info_t *info, char *key, bool *value, int *flag)
|
||||
{
|
||||
char *ptr;
|
||||
char str[256];
|
||||
|
||||
str[sizeof(str) - 1] = '\0';
|
||||
ompi_info_get(info, key, sizeof(str) - 1, str, flag);
|
||||
if (*flag) {
|
||||
*value = false;
|
||||
|
||||
/* Trim whitespace */
|
||||
ptr = str + sizeof(str) - 1;
|
||||
while (ptr >= str && isspace(*ptr)) {
|
||||
*ptr = '\0';
|
||||
--ptr;
|
||||
}
|
||||
ptr = str;
|
||||
while (ptr < str + sizeof(str) - 1 && *ptr != '\0' &&
|
||||
isspace(*ptr)) {
|
||||
++ptr;
|
||||
}
|
||||
if ('\0' != *ptr) {
|
||||
if (isdigit(*ptr)) {
|
||||
*value = (bool) atoi(ptr);
|
||||
} else if (0 == strcasecmp(ptr, "yes") ||
|
||||
0 == strcasecmp(ptr, "true")) {
|
||||
*value = true;
|
||||
} else if (0 != strcasecmp(ptr, "no") &&
|
||||
0 != strcasecmp(ptr, "false")) {
|
||||
/* RHC unrecognized value -- print a warning? */
|
||||
}
|
||||
}
|
||||
}
|
||||
return MPI_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete a key from an info
|
||||
*/
|
||||
|
@ -10,6 +10,7 @@
|
||||
* University of Stuttgart. All rights reserved.
|
||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -148,6 +149,32 @@ int ompi_info_set (ompi_info_t *info, char *key, char *value);
|
||||
*/
|
||||
int ompi_info_free (ompi_info_t **info);
|
||||
|
||||
/**
|
||||
* Get a (key, value) pair from an 'MPI_Info' object and assign it
|
||||
* into a boolen output.
|
||||
*
|
||||
* @param info Pointer to ompi_info_t object
|
||||
* @param key null-terminated character string of the index key
|
||||
* @param value Boolean output value
|
||||
* @param flag true (1) if 'key' defined on 'info', false (0) if not
|
||||
* (logical)
|
||||
*
|
||||
* @retval MPI_SUCCESS
|
||||
*
|
||||
* If found, the string value will be cast to the boolen output in
|
||||
* the following manner:
|
||||
*
|
||||
* - If the string value is digits, the return value is "(bool)
|
||||
* atoi(value)"
|
||||
* - If the string value is (case-insensitive) "yes" or "true", the
|
||||
* result is true
|
||||
* - If the string value is (case-insensitive) "no" or "false", the
|
||||
* result is false
|
||||
* - All other values are false
|
||||
*/
|
||||
OMPI_DECLSPEC int ompi_info_get_bool (ompi_info_t *info, char *key, bool *value,
|
||||
int *flag);
|
||||
|
||||
/**
|
||||
* Get a (key, value) pair from an 'MPI_Info' object
|
||||
*
|
||||
@ -163,8 +190,8 @@ int ompi_info_free (ompi_info_t **info);
|
||||
* In C and C++, 'valuelen' should be one less than the allocated
|
||||
* space to allow for for the null terminator.
|
||||
*/
|
||||
int ompi_info_get (ompi_info_t *info, char *key, int valuelen,
|
||||
char *value, int *flag);
|
||||
OMPI_DECLSPEC int ompi_info_get (ompi_info_t *info, char *key, int valuelen,
|
||||
char *value, int *flag);
|
||||
|
||||
/**
|
||||
* Delete a (key,value) pair from "info"
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "opal/util/show_help.h"
|
||||
#include "orte/mca/ns/ns.h"
|
||||
#include "ompi/class/ompi_bitmap.h"
|
||||
#include "ompi/mca/bml/bml.h"
|
||||
#include "ompi/mca/bml/base/base.h"
|
||||
@ -34,6 +33,7 @@
|
||||
#include "ompi/mca/bml/base/bml_base_btl.h"
|
||||
#include "bml_r2.h"
|
||||
#include "orte/class/orte_proc_table.h"
|
||||
#include "orte/util/name_fns.h"
|
||||
#include "ompi/proc/proc.h"
|
||||
|
||||
extern mca_bml_base_component_t mca_bml_r2_component;
|
||||
@ -450,9 +450,9 @@ int mca_bml_r2_add_procs(
|
||||
OMPI_ERR_UNREACH == ret) {
|
||||
char *local, *remote;
|
||||
|
||||
orte_ns.get_proc_name_string(&local,
|
||||
orte_util_convert_process_name_to_string(&local,
|
||||
&(ompi_proc_local_proc->proc_name));
|
||||
orte_ns.get_proc_name_string(&remote,
|
||||
orte_util_convert_process_name_to_string(&remote,
|
||||
&(unreach_proc->proc_name));
|
||||
|
||||
opal_show_help("help-mca-bml-r2",
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "opal/util/show_help.h"
|
||||
#include "orte/mca/ns/ns.h"
|
||||
#include "ompi/runtime/ompi_cr.h"
|
||||
#include "ompi/class/ompi_bitmap.h"
|
||||
#include "ompi/mca/bml/bml.h"
|
||||
@ -35,9 +34,7 @@
|
||||
#include "ompi/mca/bml/base/bml_base_btl.h"
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
#include "ompi/mca/pml/base/base.h"
|
||||
#include "orte/mca/smr/smr.h"
|
||||
#include "orte/mca/rml/rml.h"
|
||||
#include "orte/mca/gpr/gpr.h"
|
||||
#include "orte/class/orte_proc_table.h"
|
||||
#include "ompi/proc/proc.h"
|
||||
|
||||
@ -117,9 +114,11 @@ int mca_bml_r2_ft_event(int state) {
|
||||
|
||||
if( NULL != mca_bml_r2.btl_modules) {
|
||||
free( mca_bml_r2.btl_modules);
|
||||
mca_bml_r2.btl_modules = NULL;
|
||||
}
|
||||
if( NULL != mca_bml_r2.btl_progress ) {
|
||||
free( mca_bml_r2.btl_progress);
|
||||
mca_bml_r2.btl_progress = NULL;
|
||||
}
|
||||
|
||||
opal_output_verbose(10, ompi_cr_output,
|
||||
@ -163,8 +162,10 @@ int mca_bml_r2_ft_event(int state) {
|
||||
mca_bml_r2.btls_added = false;
|
||||
|
||||
for(p = 0; p < (int)num_procs; ++p) {
|
||||
OBJ_RELEASE(procs[p]->proc_bml);
|
||||
procs[p]->proc_bml = NULL;
|
||||
if( NULL != procs[p]->proc_bml) {
|
||||
OBJ_RELEASE(procs[p]->proc_bml);
|
||||
procs[p]->proc_bml = NULL;
|
||||
}
|
||||
|
||||
OBJ_RELEASE(procs[p]);
|
||||
}
|
||||
|
@ -25,8 +25,11 @@
|
||||
#include "base.h"
|
||||
#include "btl_base_error.h"
|
||||
#include "opal/util/show_help.h"
|
||||
|
||||
#include "orte/util/sys_info.h"
|
||||
#include "orte/mca/ns/ns_types.h"
|
||||
#include "orte/types.h"
|
||||
#include "orte/util/name_fns.h"
|
||||
#include "orte/runtime/orte_globals.h"
|
||||
|
||||
int mca_btl_base_verbose;
|
||||
|
||||
@ -60,7 +63,7 @@ void mca_btl_base_error_no_nics(const char* transport,
|
||||
char *procid;
|
||||
if (mca_btl_base_warn_component_unused) {
|
||||
/* print out no-nic warning if user told us to */
|
||||
asprintf(&procid, "%s", ORTE_NAME_PRINT(orte_process_info.my_name));
|
||||
asprintf(&procid, "%s", ORTE_NAME_PRINT(ORTE_PROC_MY_NAME));
|
||||
|
||||
opal_show_help("help-mpi-btl-base.txt", "btl:no-nics",
|
||||
true, procid, transport, orte_system_info.nodename,
|
||||
|
@ -28,7 +28,8 @@
|
||||
|
||||
#include "orte/util/proc_info.h"
|
||||
#include "orte/util/sys_info.h"
|
||||
#include "orte/mca/ns/ns_types.h"
|
||||
#include "orte/util/name_fns.h"
|
||||
#include "orte/runtime/orte_globals.h"
|
||||
|
||||
OMPI_DECLSPEC extern int mca_btl_base_verbose;
|
||||
|
||||
@ -39,7 +40,7 @@ extern int mca_btl_base_out(const char*, ...);
|
||||
do { \
|
||||
mca_btl_base_out("[%s]%s[%s:%d:%s] ", \
|
||||
orte_system_info.nodename, \
|
||||
ORTE_NAME_PRINT(orte_process_info.my_name), \
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), \
|
||||
__FILE__, __LINE__, __func__); \
|
||||
mca_btl_base_out args; \
|
||||
mca_btl_base_out("\n"); \
|
||||
@ -50,7 +51,7 @@ do { \
|
||||
do { \
|
||||
mca_btl_base_err("[%s]%s[%s:%d:%s] ", \
|
||||
orte_system_info.nodename, \
|
||||
ORTE_NAME_PRINT(orte_process_info.my_name), \
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), \
|
||||
__FILE__, __LINE__, __func__); \
|
||||
mca_btl_base_err args; \
|
||||
mca_btl_base_err("\n"); \
|
||||
@ -59,7 +60,7 @@ do { \
|
||||
#define BTL_PEER_ERROR(proc, args) \
|
||||
do { \
|
||||
mca_btl_base_err("%s[%s:%d:%s] from %s ", \
|
||||
ORTE_NAME_PRINT(orte_process_info.my_name), \
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), \
|
||||
__FILE__, __LINE__, __func__, \
|
||||
orte_system_info.nodename); \
|
||||
if(proc && proc->proc_hostname) { \
|
||||
@ -76,7 +77,7 @@ do { \
|
||||
if(mca_btl_base_verbose > 0) { \
|
||||
mca_btl_base_err("[%s]%s[%s:%d:%s] ", \
|
||||
orte_system_info.nodename, |