Remove stale tool
This commit was SVN r24720.
Этот коммит содержится в:
родитель
1b5ca323c6
Коммит
8c08ee9c3d
@ -34,7 +34,6 @@ install-exec-hook:
|
|||||||
(cd $(DESTDIR)$(bindir); rm -f mpiexec$(EXEEXT); $(LN_S) orterun$(EXEEXT) mpiexec$(EXEEXT))
|
(cd $(DESTDIR)$(bindir); rm -f mpiexec$(EXEEXT); $(LN_S) orterun$(EXEEXT) mpiexec$(EXEEXT))
|
||||||
(cd $(DESTDIR)$(bindir); rm -f ompi-ps$(EXEEXT); $(LN_S) orte-ps$(EXEEXT) ompi-ps$(EXEEXT))
|
(cd $(DESTDIR)$(bindir); rm -f ompi-ps$(EXEEXT); $(LN_S) orte-ps$(EXEEXT) ompi-ps$(EXEEXT))
|
||||||
(cd $(DESTDIR)$(bindir); rm -f ompi-clean$(EXEEXT); $(LN_S) orte-clean$(EXEEXT) ompi-clean$(EXEEXT))
|
(cd $(DESTDIR)$(bindir); rm -f ompi-clean$(EXEEXT); $(LN_S) orte-clean$(EXEEXT) ompi-clean$(EXEEXT))
|
||||||
(cd $(DESTDIR)$(bindir); rm -f ompi-iof$(EXEEXT); $(LN_S) orte-iof$(EXEEXT) ompi-iof$(EXEEXT))
|
|
||||||
(cd $(DESTDIR)$(bindir); rm -f ompi-top$(EXEEXT); $(LN_S) orte-top$(EXEEXT) ompi-top$(EXEEXT))
|
(cd $(DESTDIR)$(bindir); rm -f ompi-top$(EXEEXT); $(LN_S) orte-top$(EXEEXT) ompi-top$(EXEEXT))
|
||||||
if WANT_FT
|
if WANT_FT
|
||||||
(cd $(DESTDIR)$(bindir); rm -f ompi-checkpoint$(EXEEXT); $(LN_S) orte-checkpoint$(EXEEXT) ompi-checkpoint$(EXEEXT))
|
(cd $(DESTDIR)$(bindir); rm -f ompi-checkpoint$(EXEEXT); $(LN_S) orte-checkpoint$(EXEEXT) ompi-checkpoint$(EXEEXT))
|
||||||
@ -85,12 +84,6 @@ $(top_builddir)/orte/tools/orte-checkpoint/orte-checkpoint.1:
|
|||||||
ompi-checkpoint.1: $(top_builddir)/orte/tools/orte-checkpoint/orte-checkpoint.1
|
ompi-checkpoint.1: $(top_builddir)/orte/tools/orte-checkpoint/orte-checkpoint.1
|
||||||
cp -f $(top_builddir)/orte/tools/orte-checkpoint/orte-checkpoint.1 ompi-checkpoint.1
|
cp -f $(top_builddir)/orte/tools/orte-checkpoint/orte-checkpoint.1 ompi-checkpoint.1
|
||||||
|
|
||||||
$(top_builddir)/orte/tools/orte-iof/orte-iof.1:
|
|
||||||
(cd $(top_builddir)/orte/tools/orte-iof && $(MAKE) $(AM_MAKEFLAGS) orte-iof.1)
|
|
||||||
|
|
||||||
ompi-iof.1: $(top_builddir)/orte/tools/orte-iof/orte-iof.1
|
|
||||||
cp -f $(top_builddir)/orte/tools/orte-iof/orte-iof.1 ompi-iof.1
|
|
||||||
|
|
||||||
$(top_builddir)/orte/tools/orte-restart/orte-restart.1:
|
$(top_builddir)/orte/tools/orte-restart/orte-restart.1:
|
||||||
(cd $(top_builddir)/orte/tools/orte-restart && $(MAKE) $(AM_MAKEFLAGS) orte-restart.1)
|
(cd $(top_builddir)/orte/tools/orte-restart && $(MAKE) $(AM_MAKEFLAGS) orte-restart.1)
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ AC_DEFUN([ORTE_CONFIG_FILES],[
|
|||||||
orte/tools/wrappers/ortec++-wrapper-data.txt
|
orte/tools/wrappers/ortec++-wrapper-data.txt
|
||||||
orte/tools/wrappers/orte.pc
|
orte/tools/wrappers/orte.pc
|
||||||
orte/tools/orte-checkpoint/Makefile
|
orte/tools/orte-checkpoint/Makefile
|
||||||
orte/tools/orte-iof/Makefile
|
|
||||||
orte/tools/orte-restart/Makefile
|
orte/tools/orte-restart/Makefile
|
||||||
orte/tools/orte-ps/Makefile
|
orte/tools/orte-ps/Makefile
|
||||||
orte/tools/orte-clean/Makefile
|
orte/tools/orte-clean/Makefile
|
||||||
|
@ -27,7 +27,6 @@ SUBDIRS += \
|
|||||||
tools/orte-bootproxy \
|
tools/orte-bootproxy \
|
||||||
tools/orte-checkpoint \
|
tools/orte-checkpoint \
|
||||||
tools/orte-clean \
|
tools/orte-clean \
|
||||||
tools/orte-iof \
|
|
||||||
tools/orte-ps \
|
tools/orte-ps \
|
||||||
tools/orte-restart \
|
tools/orte-restart \
|
||||||
tools/orted \
|
tools/orted \
|
||||||
@ -41,7 +40,6 @@ DIST_SUBDIRS += \
|
|||||||
tools/orte-bootproxy \
|
tools/orte-bootproxy \
|
||||||
tools/orte-checkpoint \
|
tools/orte-checkpoint \
|
||||||
tools/orte-clean \
|
tools/orte-clean \
|
||||||
tools/orte-iof \
|
|
||||||
tools/orte-ps \
|
tools/orte-ps \
|
||||||
tools/orte-restart \
|
tools/orte-restart \
|
||||||
tools/orted \
|
tools/orted \
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
#
|
|
||||||
# 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) 2008 Sun Microsystems, Inc. All rights reserved.
|
|
||||||
# $COPYRIGHT$
|
|
||||||
#
|
|
||||||
# Additional copyrights may follow
|
|
||||||
#
|
|
||||||
# $HEADER$
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(top_srcdir)/Makefile.man-page-rules
|
|
||||||
|
|
||||||
man_pages = orte-iof.1
|
|
||||||
EXTRA_DIST = $(man_pages:.1=.1in)
|
|
||||||
|
|
||||||
if !ORTE_DISABLE_FULL_SUPPORT
|
|
||||||
if OMPI_INSTALL_BINARIES
|
|
||||||
|
|
||||||
bin_PROGRAMS = orte-iof
|
|
||||||
|
|
||||||
nodist_man_MANS = $(man_pages)
|
|
||||||
|
|
||||||
# Ensure that the man pages are rebuilt if the opal_config.h file
|
|
||||||
# changes; a "good enough" way to know if configure was run again (and
|
|
||||||
# therefore the release date or version may have changed)
|
|
||||||
$(nodist_man_MANS): $(top_builddir)/opal/include/opal_config.h
|
|
||||||
|
|
||||||
dist_pkgdata_DATA = help-orte-iof.txt
|
|
||||||
|
|
||||||
endif # OMPI_INSTALL_BINARIES
|
|
||||||
|
|
||||||
orte_iof_SOURCES = orte-iof.c
|
|
||||||
orte_iof_LDADD = $(top_builddir)/orte/libopen-rte.la
|
|
||||||
|
|
||||||
endif # !ORTE_DISABLE_FULL_SUPPORT
|
|
||||||
|
|
||||||
distclean-local:
|
|
||||||
rm -f $(man_pages)
|
|
@ -1,36 +0,0 @@
|
|||||||
# -*- text -*-
|
|
||||||
#
|
|
||||||
# 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$
|
|
||||||
#
|
|
||||||
# This is the US/English help file for Open MPI IOF tool
|
|
||||||
#
|
|
||||||
[usage]
|
|
||||||
orte-iof [OPTIONS]
|
|
||||||
Open MPI IO Forwarding Tool
|
|
||||||
|
|
||||||
%s
|
|
||||||
|
|
||||||
#
|
|
||||||
[pid-required]
|
|
||||||
The orte-iof tool requires the pid of the mpirun whose output
|
|
||||||
you would like to monitor. This is needed to ensure that the
|
|
||||||
tool contacts the correct mpirun when requesting access to the
|
|
||||||
output from the specified ranks.
|
|
||||||
|
|
||||||
Please use the --pid option to specify the mpirun's pid.
|
|
||||||
#
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
|||||||
.\"
|
|
||||||
.\" Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
|
||||||
.\" University Research and Technology
|
|
||||||
.\" Corporation. All rights reserved.
|
|
||||||
.\" Copyright (c) 2008-2009 Sun Microsystems, Inc. All rights reserved.
|
|
||||||
.\"
|
|
||||||
.\" Man page for OMPI's ompi-iof command
|
|
||||||
.\"
|
|
||||||
.\" .TH name section center-footer left-footer center-header
|
|
||||||
.TH OMPI-IOF 1 "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
|
|
||||||
.\" **************************
|
|
||||||
.\" Name Section
|
|
||||||
.\" **************************
|
|
||||||
.SH NAME
|
|
||||||
.
|
|
||||||
ompi-iof, orte-iof \- Displays a copy of the output streams from a process.
|
|
||||||
.
|
|
||||||
.PP
|
|
||||||
.
|
|
||||||
\fBNOTE:\fP \fIompi-iof\fP, and \fIorte-iof\fP are exact
|
|
||||||
synonyms for each other. Using any of the names will result in exactly
|
|
||||||
identical behavior.
|
|
||||||
.
|
|
||||||
.\" **************************
|
|
||||||
.\" Synopsis Section
|
|
||||||
.\" **************************
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.
|
|
||||||
.B ompi-iof
|
|
||||||
.B [ options ]
|
|
||||||
.
|
|
||||||
.\" **************************
|
|
||||||
.\" Options Section
|
|
||||||
.\" **************************
|
|
||||||
.SH Options
|
|
||||||
.
|
|
||||||
\fIompi-iof\fR will display a copy of the indicated stdout, stderr, and/or stddiag streams
|
|
||||||
from the designated process.
|
|
||||||
.
|
|
||||||
.TP 10
|
|
||||||
.B -pid | --pid
|
|
||||||
The pid of the mpirun executing the process whose streams are to be copied
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.TP
|
|
||||||
.B -stdout | --stdout
|
|
||||||
Display a copy of the specified process' stdout. If no options are specified, this will
|
|
||||||
act as the default
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.TP
|
|
||||||
.B -stderr | --stderr
|
|
||||||
Display a copy of the specified process' stderr.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.TP
|
|
||||||
.B -stddiag | --stddiag
|
|
||||||
Display a copy of the specified process' stddiag.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.TP
|
|
||||||
.B -rank | --rank
|
|
||||||
The rank of the process whose output is to be copied.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.TP
|
|
||||||
.B -tag-output | --tag-output
|
|
||||||
Tag each line of output with the process name and stream name.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.\" **************************
|
|
||||||
.\" Description Section
|
|
||||||
.\" **************************
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.
|
|
||||||
.PP
|
|
||||||
\fIompi-iof\fR displays a copy of the indicated stdout, stderr, and/or stddiag streams
|
|
||||||
from the designated process. At this time, a ctrl-C must be used to terminate the program.
|
|
||||||
The program will terminate cleanly, telling the associated mpirun to close the requested
|
|
||||||
streams before exiting.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.\" **************************
|
|
||||||
.\" See Also Section
|
|
||||||
.\" **************************
|
|
||||||
.
|
|
||||||
.SH SEE ALSO
|
|
||||||
orterun(1)
|
|
||||||
.
|
|
@ -1,315 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2004-2010 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) 2007 Sun Microsystems, Inc. All rights reserved.
|
|
||||||
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
|
||||||
* reserved.
|
|
||||||
* $COPYRIGHT$
|
|
||||||
*
|
|
||||||
* Additional copyrights may follow
|
|
||||||
*
|
|
||||||
* $HEADER$
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fie
|
|
||||||
* ORTE PS command
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "orte_config.h"
|
|
||||||
#include "orte/constants.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#ifdef HAVE_UNISTD_H
|
|
||||||
#include <unistd.h>
|
|
||||||
#endif /* HAVE_UNISTD_H */
|
|
||||||
#ifdef HAVE_STDLIB_H
|
|
||||||
#include <stdlib.h>
|
|
||||||
#endif /* HAVE_STDLIB_H */
|
|
||||||
#ifdef HAVE_SIGNAL_H
|
|
||||||
#include <signal.h>
|
|
||||||
#endif /* HAVE_SIGNAL_H */
|
|
||||||
#ifdef HAVE_SYS_STAT_H
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#endif /* HAVE_SYS_STAT_H */
|
|
||||||
#ifdef HAVE_SYS_TYPES_H
|
|
||||||
#include <sys/types.h>
|
|
||||||
#endif /* HAVE_SYS_TYPES_H */
|
|
||||||
#ifdef HAVE_SYS_WAIT_H
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#endif /* HAVE_SYS_WAIT_H */
|
|
||||||
#ifdef HAVE_STRING_H
|
|
||||||
#include <string.h>
|
|
||||||
#endif /* HAVE_STRING_H */
|
|
||||||
#ifdef HAVE_DIRENT_H
|
|
||||||
#include <dirent.h>
|
|
||||||
#endif /* HAVE_DIRENT_H */
|
|
||||||
|
|
||||||
#include "opal/mca/event/event.h"
|
|
||||||
#include "opal/util/cmd_line.h"
|
|
||||||
#include "opal/util/argv.h"
|
|
||||||
#include "opal/util/opal_environ.h"
|
|
||||||
#include "opal/util/opal_sos.h"
|
|
||||||
#include "opal/mca/base/base.h"
|
|
||||||
#include "opal/mca/base/mca_base_param.h"
|
|
||||||
#include "opal/runtime/opal.h"
|
|
||||||
|
|
||||||
#include "orte/runtime/runtime.h"
|
|
||||||
#include "orte/util/hnp_contact.h"
|
|
||||||
#include "orte/util/show_help.h"
|
|
||||||
#include "orte/util/parse_options.h"
|
|
||||||
#include "orte/util/proc_info.h"
|
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
|
||||||
#include "orte/mca/iof/iof.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************
|
|
||||||
* Global Vars for Command line Arguments
|
|
||||||
*****************************************/
|
|
||||||
static struct {
|
|
||||||
bool help;
|
|
||||||
int hnppid;
|
|
||||||
char *ranks;
|
|
||||||
bool stdout_req;
|
|
||||||
bool stderr_req;
|
|
||||||
bool stddiag_req;
|
|
||||||
bool tag;
|
|
||||||
orte_hnp_contact_t *target_hnp;
|
|
||||||
} my_globals;
|
|
||||||
|
|
||||||
opal_cmd_line_init_t cmd_line_opts[] = {
|
|
||||||
{ NULL, NULL, NULL,
|
|
||||||
'h', NULL, "help",
|
|
||||||
0,
|
|
||||||
&my_globals.help, OPAL_CMD_LINE_TYPE_BOOL,
|
|
||||||
"This help message" },
|
|
||||||
|
|
||||||
{ NULL, NULL, NULL,
|
|
||||||
'\0', "pid", "pid",
|
|
||||||
1,
|
|
||||||
&my_globals.hnppid, OPAL_CMD_LINE_TYPE_INT,
|
|
||||||
"The pid of the mpirun whose output you wish to see" },
|
|
||||||
|
|
||||||
{ NULL, NULL, NULL,
|
|
||||||
'\0', "stdout", "stdout",
|
|
||||||
0,
|
|
||||||
&my_globals.stdout_req, OPAL_CMD_LINE_TYPE_BOOL,
|
|
||||||
"Display stdout from specified process (default)" },
|
|
||||||
|
|
||||||
{ NULL, NULL, NULL,
|
|
||||||
'\0', "stderr", "stderr",
|
|
||||||
0,
|
|
||||||
&my_globals.stderr_req, OPAL_CMD_LINE_TYPE_BOOL,
|
|
||||||
"Display stderr from specified process" },
|
|
||||||
|
|
||||||
{ NULL, NULL, NULL,
|
|
||||||
'\0', "stddiag", "stddiag",
|
|
||||||
0,
|
|
||||||
&my_globals.stddiag_req, OPAL_CMD_LINE_TYPE_BOOL,
|
|
||||||
"Display stddiag from specified process" },
|
|
||||||
|
|
||||||
{ NULL, NULL, NULL,
|
|
||||||
'\0', "ranks", "ranks",
|
|
||||||
1,
|
|
||||||
&my_globals.ranks, OPAL_CMD_LINE_TYPE_STRING,
|
|
||||||
"Ranks whose output is to be displayed (Comma separated list, each element can contain range)" },
|
|
||||||
|
|
||||||
{ "orte", "tag", "output",
|
|
||||||
'\0', "tag-output", "tag-output",
|
|
||||||
0,
|
|
||||||
NULL, OPAL_CMD_LINE_TYPE_BOOL,
|
|
||||||
"Tag output with the stream and [job,rank] (default: no tags)" },
|
|
||||||
|
|
||||||
/* End of list */
|
|
||||||
{ NULL, NULL, NULL,
|
|
||||||
'\0', NULL, NULL,
|
|
||||||
0,
|
|
||||||
NULL, OPAL_CMD_LINE_TYPE_NULL,
|
|
||||||
NULL }
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Local variables & functions
|
|
||||||
*/
|
|
||||||
static void abort_exit_callback(int fd, short flags, void *arg) __opal_attribute_noreturn__;
|
|
||||||
static opal_event_t term_handler;
|
|
||||||
static opal_event_t int_handler;
|
|
||||||
static opal_list_t hnp_list;
|
|
||||||
static orte_process_name_t target_proc;
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int ret, i;
|
|
||||||
opal_cmd_line_t cmd_line;
|
|
||||||
opal_list_item_t* item = NULL;
|
|
||||||
orte_iof_tag_t stream;
|
|
||||||
char **ranks=NULL;
|
|
||||||
|
|
||||||
/***************
|
|
||||||
* Initialize
|
|
||||||
***************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Make sure to init util before parse_args
|
|
||||||
* to ensure installdirs is setup properly
|
|
||||||
* before calling mca_base_open();
|
|
||||||
*/
|
|
||||||
if( ORTE_SUCCESS != (ret = opal_init_util(&argc, &argv)) ) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* initialize the globals */
|
|
||||||
my_globals.help = false;
|
|
||||||
my_globals.hnppid = -1;
|
|
||||||
my_globals.stdout_req = false;
|
|
||||||
my_globals.stderr_req = false;
|
|
||||||
my_globals.stddiag_req = false;
|
|
||||||
my_globals.ranks = "0";
|
|
||||||
|
|
||||||
/* Parse the command line options */
|
|
||||||
opal_cmd_line_create(&cmd_line, cmd_line_opts);
|
|
||||||
|
|
||||||
mca_base_open();
|
|
||||||
mca_base_cmd_line_setup(&cmd_line);
|
|
||||||
ret = opal_cmd_line_parse(&cmd_line, false, argc, argv);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Now start parsing our specific arguments
|
|
||||||
*/
|
|
||||||
if (OPAL_SUCCESS != ret || my_globals.help) {
|
|
||||||
char *args = NULL;
|
|
||||||
args = opal_cmd_line_get_usage_msg(&cmd_line);
|
|
||||||
orte_show_help("help-orte-iof.txt", "usage", true, args);
|
|
||||||
free(args);
|
|
||||||
return ORTE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Must specify the mpirun pid
|
|
||||||
*/
|
|
||||||
if(my_globals.hnppid < 0) {
|
|
||||||
orte_show_help("help-orte-iof.txt", "pid-required", true);
|
|
||||||
return ORTE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************
|
|
||||||
* We need all of OPAL and the TOOL portion of ORTE
|
|
||||||
***************************/
|
|
||||||
if (ORTE_SUCCESS != orte_init(&argc, &argv, ORTE_PROC_TOOL)) {
|
|
||||||
orte_finalize();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** setup callbacks for abort signals - from this point
|
|
||||||
* forward, we need to abort in a manner that allows us
|
|
||||||
* to cleanup
|
|
||||||
*/
|
|
||||||
opal_event_signal_set(opal_event_base, &term_handler, SIGTERM,
|
|
||||||
abort_exit_callback, &term_handler);
|
|
||||||
opal_event_signal_add(&term_handler, NULL);
|
|
||||||
opal_event_signal_set(opal_event_base, &int_handler, SIGINT,
|
|
||||||
abort_exit_callback, &int_handler);
|
|
||||||
opal_event_signal_add(&int_handler, NULL);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the list of available hnp's and setup contact info
|
|
||||||
* to them in the RML
|
|
||||||
*/
|
|
||||||
OBJ_CONSTRUCT(&hnp_list, opal_list_t);
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_list_local_hnps(&hnp_list, true) ) ) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For each hnp in the listing
|
|
||||||
*/
|
|
||||||
while (NULL != (item = opal_list_remove_first(&hnp_list))) {
|
|
||||||
orte_hnp_contact_t *hnp = (orte_hnp_contact_t*)item;
|
|
||||||
if (my_globals.hnppid == hnp->pid) {
|
|
||||||
/* this is the one we want */
|
|
||||||
my_globals.target_hnp = hnp;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
OBJ_RELEASE(hnp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* setup the stream */
|
|
||||||
stream = 0;
|
|
||||||
if (my_globals.stderr_req) {
|
|
||||||
stream |= ORTE_IOF_STDERR;
|
|
||||||
}
|
|
||||||
if (my_globals.stddiag_req) {
|
|
||||||
stream |= ORTE_IOF_STDDIAG;
|
|
||||||
}
|
|
||||||
if (my_globals.stdout_req) {
|
|
||||||
stream |= ORTE_IOF_STDOUT;
|
|
||||||
}
|
|
||||||
if (0 == stream) {
|
|
||||||
/* default to stdout */
|
|
||||||
stream |= ORTE_IOF_STDOUT;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* parse the input ranks */
|
|
||||||
orte_util_parse_range_options(my_globals.ranks, &ranks);
|
|
||||||
|
|
||||||
/* pull the specified output streams and dump to our stdout */
|
|
||||||
for (i=0; i < opal_argv_count(ranks); i++) {
|
|
||||||
target_proc.jobid = my_globals.target_hnp->name.jobid + 1;
|
|
||||||
target_proc.vpid = strtol(ranks[i], NULL, 10);
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_iof.pull(&target_proc, stream, 1))) {
|
|
||||||
ORTE_ERROR_LOG(ret);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* just wait until the abort is fired */
|
|
||||||
opal_event_dispatch(opal_event_base);
|
|
||||||
|
|
||||||
/***************
|
|
||||||
* Cleanup
|
|
||||||
***************/
|
|
||||||
cleanup:
|
|
||||||
while (NULL != (item = opal_list_remove_first(&hnp_list))) {
|
|
||||||
OBJ_RELEASE(item);
|
|
||||||
}
|
|
||||||
OBJ_DESTRUCT(&hnp_list);
|
|
||||||
opal_argv_free(ranks);
|
|
||||||
orte_finalize();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void abort_exit_callback(int fd, short ign, void *arg)
|
|
||||||
{
|
|
||||||
opal_list_item_t *item;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Remove the TERM and INT signal handlers */
|
|
||||||
opal_event_signal_del(&term_handler);
|
|
||||||
opal_event_signal_del(&int_handler);
|
|
||||||
|
|
||||||
/* close the outstanding pull */
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_iof.close(&target_proc, ORTE_IOF_STDOUT))) {
|
|
||||||
ORTE_ERROR_LOG(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (NULL != (item = opal_list_remove_first(&hnp_list))) {
|
|
||||||
OBJ_RELEASE(item);
|
|
||||||
}
|
|
||||||
OBJ_DESTRUCT(&hnp_list);
|
|
||||||
orte_finalize();
|
|
||||||
exit(1);
|
|
||||||
}
|
|
Загрузка…
Ссылка в новой задаче
Block a user