1
1
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
Ralph Castain 2017-09-22 10:48:00 -07:00
родитель b4ad81da85
Коммит 3493c43468
13 изменённых файлов: 195 добавлений и 44 удалений

Просмотреть файл

@ -17,17 +17,17 @@ my $usempirun = 0;
my $useaprun = 0;
my $useaprun = 0;
my $myapp;
my $runall = 0;
my $runall = 1;
my $rawoutput = 0;
my $myresults = "myresults";
my $ppn = 1;
my @csvrow;
my @tests = qw(/bin/true ./orte_no_op ./mpi_no_op ./mpi_no_op ./mpi_no_op);
my @options = ("", "", "", "--fwd-mpirun-port -mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1", "--fwd-mpirun-port -mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1 -mca async_mpi_init 1 -mca async_mpi_finalize 1");
my @starterlist = qw(mpirun orterun srun aprun);
my @options = ("", "", "", "-mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1", "-mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1 -mca async_mpi_init 1 -mca async_mpi_finalize 1");
my @starterlist = qw(mpirun prun srun aprun);
my @starteroptionlist = ("--novm",
"--hnp file:dvm_uri",
"",
"--distribution=cyclic -N",
"-N");
@ -49,7 +49,6 @@ GetOptions(
"aprun" => \$useaprun,
"mpirun" => \$usempirun,
"myapp=s" => \$myapp,
"all" => \$runall,
"results=s" => \$myresults,
"rawout" => \$rawoutput,
"ppn=s" => \$ppn,
@ -67,8 +66,7 @@ if ($HELP) {
--srun Use srun (if available) to execute the test
--arpun Use aprun (if available) to execute the test
--myapp=s In addition to the standard tests, run this specific application (including any args)
--all Use all available start commands [default]
--results=file File where results are to stored in comma-separated value format
--results=file File where results are to be stored in comma-separated value format
--rawout Provide raw timing output to the file
--ppn=n Run n procs/node
";
@ -90,7 +88,13 @@ my $havedvm = 0;
my @starters;
my @starteroptions;
# if they asked for all, then set all starters to requested
# if they explicitly requested specific starters, then
# only use those
if ($useaprun || $usempirun || $usesrun || $usedvm) {
$runall = 0
}
# if they didn't specify something, then set all starters to requested
if ($runall) {
$useaprun = 1;
$usempirun = 1;
@ -112,7 +116,7 @@ foreach $starter (@starterlist) {
}
}
if ($exists) {
if ($usedvm && $starter eq "orterun") {
if ($usedvm && $starter eq "prun") {
push @starters, $starter;
$opt = $starteroptionlist[$idx] . " --npernode " . $ppn;
push @starteroptions, $opt;
@ -261,21 +265,14 @@ sub runcmd()
foreach $starter (@starters) {
print "STARTER: $starter\n";
# if we are going to use the dvm, then we
if ($starter eq "orterun") {
if ($starter eq "prun") {
# need to start it
if (-e "dvm_uri") {
system("rm -f dvm_uri");
}
$cmd = "orte-dvm --report-uri dvm_uri 2>&1 &";
$cmd = "orte-dvm 2>&1 &";
if ($myresults) {
print FILE "\n\n$cmd\n";
}
if (!$SHOWME) {
system($cmd);
# wait for the rendezvous file to appear
while (! -e "dvm_uri") {
sleep(1);
}
$havedvm = 1;
}
}
@ -321,12 +318,9 @@ foreach $starter (@starters) {
}
if ($havedvm) {
if (!$SHOWME) {
$cmd = "orterun --hnp file:dvm_uri --terminate";
$cmd = "prun --terminate";
system($cmd);
}
if (-e "dvm_uri") {
system("rm -f dvm_uri");
}
}
$index = $index + 1;
}

Просмотреть файл

@ -11,7 +11,7 @@
# All rights reserved.
# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2012-2013 Los Alamos National Security, Inc. All rights reserved.
# Copyright (c) 2013-2016 Intel, Inc. All rights reserved
# Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
@ -23,7 +23,7 @@
# via AC_CONFIG_MACRO_DIR in configure.ac.
ACLOCAL_AMFLAGS = -I ./config
SUBDIRS = config contrib include src
SUBDIRS = config contrib include src etc
headers =
@ -61,4 +61,3 @@ nroff:
dist-hook:
env LS_COLORS= sh "$(top_srcdir)/config/distscript.sh" "$(top_srcdir)" "$(distdir)" "$(PMIX_VERSION)" "$(PMIX_REPO_REV)"

Просмотреть файл

@ -30,7 +30,7 @@ greek=
# command, or with the date (if "git describe" fails) in the form of
# "date<date>".
repo_rev=git2389189
repo_rev=gited5be7e
# If tarball_version is not empty, it is used as the version string in
# the tarball filename, regardless of all other versions listed in
@ -44,7 +44,7 @@ tarball_version=
# The date when this release was created
date="Sep 14, 2017"
date="Sep 22, 2017"
# The shared library version of each of PMIx's public libraries.
# These versions are maintained in accordance with the "Library

Просмотреть файл

@ -15,6 +15,7 @@
# and Technology (RIST). All rights reserved.
# Copyright (c) 2015 Los Alamos National Security, LLC. All rights
# reserved.
# Copyright (c) 2017 Intel, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
@ -54,3 +55,13 @@ touch -r "${srcdir}/VERSION" "${distdir}/VERSION"
echo "*** Updated VERSION file with repo rev: $repo_rev"
echo "*** (via dist-hook / config/distscript.sh)"
#
# Update pmix.spec:%{version} with the main version
#
PMIX_SPEC=contrib/pmix.spec
perl -pi -e 's/^Version:.*/Version: '$PMIX_REPO_REV'/' -- "${distdir}/$PMIX_SPEC"
touch -r "${srcdir}/$PMIX_VERSION" "${distdir}/$PMIX_VERSION"
echo "*** Updated $PMIX_SPEC file with repo rev: $PMIX_REPO_REV"
echo "*** (via dist-hook / config/distscript.sh)"

Просмотреть файл

@ -763,6 +763,7 @@ AC_DEFUN([PMIX_SETUP_CORE],[
AC_CONFIG_FILES(
pmix_config_prefix[Makefile]
pmix_config_prefix[config/Makefile]
pmix_config_prefix[etc/Makefile]
pmix_config_prefix[include/Makefile]
pmix_config_prefix[src/Makefile]
pmix_config_prefix[src/util/keyval/Makefile]
@ -950,7 +951,7 @@ DSTORE_PTHREAD_LOCK="1"
AC_MSG_CHECKING([if want dstore pthread-based locking])
AC_ARG_ENABLE([dstore-pthlck],
[AC_HELP_STRING([--disable-dstore-pthlck],
[Disable pthread-based lockig in dstor (default: enabled)])])
[Disable pthread-based locking in dstor (default: enabled)])])
if test "$enable_dstore_pthlck" = "no" ; then
AC_MSG_RESULT([no])
DSTORE_PTHREAD_LOCK="0"

Просмотреть файл

@ -192,11 +192,11 @@
Summary: An extended/exascale implementation of PMI
Name: %{?_name:%{_name}}%{!?_name:pmix}
Version: $VERSION
Version: 2.1.0
Release: 1%{?dist}
License: BSD
Group: Development/Libraries
Source: pmix-%{version}.tar.$EXTENSION
Source0: https://github.com/pmix/pmix/releases/download/v%{version}/pmix-%{version}.tar.bz2
Packager: %{?_packager:%{_packager}}%{!?_packager:%{_vendor}}
Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:%{_vendor}}
Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}}
@ -469,9 +469,9 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT
%{_prefix}
%endif
# If the sysconfdir is not under the prefix, then list it explicitly.
#%if !%{sysconfdir_in_prefix}
#%{_sysconfdir}/*
#%endif
%if !%{sysconfdir_in_prefix}
%{_sysconfdir}/*
%endif
# If %{install_in_opt}, then we're instaling PMIx to
# /opt/pmix<version>. But be sure to also explicitly mention
# /opt/pmix so that it can be removed by RPM when everything under
@ -497,6 +497,9 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT
#
#############################################################################
%changelog
* Thu Sep 21 2017 Ralph Castain <rhc@open-mpi.org>
- Add PMIx etc directory
* Tue Sep 12 2017 Ralph Castain <rhc@open-mpi.org>
- Port to pmix

70
opal/mca/pmix/pmix2x/pmix/etc/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,70 @@
#
# 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) 2008 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2017 Intel, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
pmix_config_files = pmix-mca-params.conf
pmix_file_from_platform = no
EXTRA_DIST = $(pmix_config_files)
# Steal a little trickery from a generated Makefile to only install
# files if they do not already exist at the target. Be sure to read
# thread starting here
# (http://www.open-mpi.org/community/lists/devel/2008/06/4080.php) for
# details why the mkdir is in install-data-local.
install-data-local:
$(MKDIR_P) $(DESTDIR)$(sysconfdir)
@ p="$(pmix_config_files)"; \
if test "$(pmix_file_from_platform)" = "yes"; then \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(sysconfdir)/pmix-mca-params.conf"; \
$(INSTALL_DATA) $$d$$p $(DESTDIR)$(sysconfdir)/pmix-mca-params.conf; \
else \
for file in $$p; do \
if test -f $(DESTDIR)$(sysconfdir)/pmix-mca-params.conf; then \
echo "******************************* WARNING ************************************"; \
echo "*** Not installing new $$file over existing file in:"; \
echo "*** $(DESTDIR)$(sysconfdir)/$$file"; \
echo "******************************* WARNING ************************************"; \
else \
if test -f "$$file"; then d=; else d="$(srcdir)/"; fi; \
f="`echo $$file | sed -e 's|^.*/||'`"; \
echo " $(INSTALL_DATA) $$d$$file $(DESTDIR)$(sysconfdir)/$$f"; \
$(INSTALL_DATA) $$d$$file $(DESTDIR)$(sysconfdir)/$$f; \
fi; \
done \
fi;
# Only remove if exactly the same as what in our tree
# NOTE TO READER: Bourne shell if ... fi evaluates the body if
# the return of the evaluted command is 0 (as opposed to non-zero
# as used by everyone else)
uninstall-local:
@ p="$(pmix_config_files)"; \
for file in $$p; do \
if test -f "$(DESTDIR)$(sysconfdir)/$$file"; then \
if test -f "$$file"; then d=; else d="$(srcdir)/"; fi; \
if diff "$(DESTDIR)$(sysconfdir)/$$file" "$$d$$file" > /dev/null 2>&1 ; then \
echo "rm -f $(DESTDIR)$(sysconfdir)/$$file" ; \
rm -f "$(DESTDIR)$(sysconfdir)/$$file" ; \
fi ; \
fi ; \
done

Просмотреть файл

@ -0,0 +1,59 @@
#
# 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-2017 Cisco Systems, Inc. All rights reserved
# Copyright (c) 2017 Intel, 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/.pmix/mca-params.conf:$sysconf/pmix-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, processes each read this file
# during their call to PMIx_Init to determine what default values for MCA
# parameters should be used. Launchers generally do not bundle up the values in
# this file from the node where they are run and send them to all nodes;
# the default value decisions are effectively distributed. Hence,
# these values are typically 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:
# Set debugging verbosity on the PTL framework
# ptl_base_verbose = 10
# 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/pmix:~/my_pmix_components
# See "pinfo --param all all --level 9" for a full listing of PMIx
# MCA parameters available and their default values.

Просмотреть файл

@ -13,7 +13,7 @@
* All rights reserved.
* Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
* Copyright (c) 2013-2016 Intel, Inc. All rights reserved.
* Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
* Copyright (c) 2015 Mellanox Technologies, Inc. All rights reserved.
* $COPYRIGHT$
*
@ -167,9 +167,16 @@ int main(int argc, char **argv)
fprintf(stderr, "Client ns %s rank %d: PMIx_Get universe size failed: %d\n", myproc.nspace, myproc.rank, rc);
goto done;
}
fprintf(stderr, "Client %s:%d universe size %d\n", myproc.nspace, myproc.rank, val->data.uint32);
/* get the number of procs in our job - univ size is the total number of allocated
* slots, not the number of procs in the job */
if (PMIX_SUCCESS != (rc = PMIx_Get(&proc, PMIX_JOB_SIZE, NULL, 0, &val))) {
fprintf(stderr, "Client ns %s rank %d: PMIx_Get job size failed: %d\n", myproc.nspace, myproc.rank, rc);
goto done;
}
nprocs = val->data.uint32;
PMIX_VALUE_RELEASE(val);
fprintf(stderr, "Client %s:%d universe size %d\n", myproc.nspace, myproc.rank, nprocs);
fprintf(stderr, "Client %s:%d num procs %d\n", myproc.nspace, myproc.rank, nprocs);
/* put a few values */
if (0 > asprintf(&tmp, "%s-%d-internal", myproc.nspace, myproc.rank)) {

Просмотреть файл

@ -41,7 +41,6 @@ int main(int argc, char **argv)
uint32_t nprocs;
pmix_info_t *info;
pmix_pdata_t *pdata;
pmix_data_range_t range = PMIX_RANGE_LOCAL;
/* init us */
if (PMIX_SUCCESS != (rc = PMIx_Init(&myproc, NULL, 0))) {
@ -70,15 +69,14 @@ int main(int argc, char **argv)
/* publish something */
if (0 == myproc.rank) {
PMIX_INFO_CREATE(info, 3);
PMIX_INFO_CREATE(info, 2);
(void)strncpy(info[0].key, "FOOBAR", PMIX_MAX_KEYLEN);
info[0].value.type = PMIX_UINT8;
info[0].value.data.uint8 = 1;
(void)strncpy(info[1].key, "PANDA", PMIX_MAX_KEYLEN);
info[1].value.type = PMIX_SIZE;
info[1].value.data.size = 123456;
PMIX_INFO_LOAD(&info[2], PMIX_RANGE, &range, PMIX_DATA_RANGE);
if (PMIX_SUCCESS != (rc = PMIx_Publish(info, 3))) {
if (PMIX_SUCCESS != (rc = PMIx_Publish(info, 2))) {
fprintf(stderr, "Client ns %s rank %d: PMIx_Publish failed: %d\n", myproc.nspace, myproc.rank, rc);
goto done;
}

Просмотреть файл

@ -357,7 +357,7 @@ pmix_status_t hash_cache_job_info(struct pmix_nspace_t *ns,
char **nodes=NULL, **procs=NULL;
uint8_t *tmp;
pmix_rank_t rank;
pmix_status_t rc;
pmix_status_t rc=PMIX_SUCCESS;
size_t n, j, size, len;
pmix_output_verbose(2, pmix_gds_base_framework.framework_output,
@ -584,7 +584,7 @@ static pmix_status_t register_info(pmix_peer_t *peer,
return rc;
}
if (NULL == val->data.darray ||
if (NULL == val || NULL == val->data.darray ||
PMIX_INFO != val->data.darray->type ||
0 == val->data.darray->size) {
return PMIX_ERR_NOT_FOUND;
@ -610,7 +610,9 @@ static pmix_status_t register_info(pmix_peer_t *peer,
}
return rc;
}
if (NULL == val) {
return PMIX_ERR_NOT_FOUND;
}
PMIX_CONSTRUCT(&buf, pmix_buffer_t);
rank = rinfo->pname.rank;
PMIX_BFROPS_PACK(rc, peer, &buf, &rank, 1, PMIX_PROC_RANK);

Просмотреть файл

@ -597,7 +597,7 @@ static pmix_status_t setup_listener(pmix_info_t info[], size_t ninfo,
/* output my nspace and rank plus the URI */
fprintf(fp, "%s\n", lt->uri);
/* add a flag that indicates we accept v2.1 protocols */
fprintf(fp, "%s\n", PMIX_VERSION);
fprintf(fp, "v%s\n", PMIX_VERSION);
fclose(fp);
/* set the file mode */
if (0 != chmod(mca_ptl_tcp_component.system_filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) {

Просмотреть файл

@ -1185,7 +1185,14 @@ static int notify_event(int status,
n=0;
OPAL_LIST_FOREACH(kv, info, opal_value_t) {
(void)strncpy(op->info[n].key, kv->key, PMIX_MAX_KEYLEN);
pmix2x_value_load(&op->info[n].value, kv);
/* little dicey here as we need to convert a status, if
* provided, and it will be an int coming down to us */
if (0 == strcmp(kv->key, OPAL_PMIX_JOB_TERM_STATUS)) {
op->info[n].value.type = PMIX_STATUS;
op->info[n].value.data.status = pmix2x_convert_opalrc(kv->data.integer);
} else {
pmix2x_value_load(&op->info[n].value, kv);
}
++n;
}
}