1
1

Merge pull request #7081 from msbrowning/pr/fixed-README

Removed text block from line 883 of README.
Этот коммит содержится в:
Jeff Squyres 2019-10-10 14:52:23 -04:00 коммит произвёл GitHub
родитель f7ee4463b3 77b3ff9d38
Коммит 65fd12feff
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
15 изменённых файлов: 0 добавлений и 992 удалений

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

@ -874,9 +874,6 @@ Open MPI Extensions
- affinity: Provides the OMPI_Affinity_str() a string indicating the
resources which a process is bound. For more details, see its man
page.
- cr: Provides routines to access to checkpoint restart routines.
See ompi/mpiext/cr/mpiext_cr_c.h for a listing of available
functions.
- cuda: When the library is compiled with CUDA-aware support, it
provides two things. First, a macro
MPIX_CUDA_AWARE_SUPPORT. Secondly, the function

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

@ -1,21 +0,0 @@
#
# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# This Makefile is not traversed during a normal "make all" in an OMPI
# build. It *is* traversed during "make dist", however. So you can
# put EXTRA_DIST targets in here.
#
# You can also use this as a convenience for building this MPI
# extension (i.e., "make all" in this directory to invoke "make all"
# in all the subdirectories).
SUBDIRS = c

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

@ -1,47 +0,0 @@
#
# Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2018 Research Organization for Information Science
# and Technology (RIST). All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# This file builds the C bindings for MPI extensions. It must be
# present in all MPI extensions.
# We must set these #defines so that the inner OMPI MPI prototype
# header files do the Right Thing.
AM_CPPFLAGS = -DOMPI_PROFILE_LAYER=0 -DOMPI_COMPILING_FORTRAN_WRAPPERS=1
# Convenience libtool library that will be slurped up into libmpi.la.
noinst_LTLIBRARIES = libmpiext_cr_c.la
# This is where the top-level header file (that is included in
# <mpi-ext.h>) must be installed.
ompidir = $(ompiincludedir)/mpiext
# This is the header file that is installed.
ompi_HEADERS = mpiext_cr_c.h
# Sources for the convenience libtool library. Other than the one
# header file, all source files in the extension have no file naming
# conventions.
libmpiext_cr_c_la_SOURCES = \
$(ompi_HEADERS) \
checkpoint.c \
restart.c \
migrate.c \
inc_register_callback.c \
quiesce_start.c \
quiesce_end.c \
quiesce_checkpoint.c \
self_register_checkpoint.c \
self_register_restart.c \
self_register_continue.c
libmpiext_cr_c_la_LDFLAGS = -module -avoid-version

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

@ -1,89 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "ompi/info/info.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "orte/mca/snapc/snapc.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
static const char FUNC_NAME[] = "OMPI_CR_Checkpoint";
#define HANDLE_SIZE_MAX 256
int OMPI_CR_Checkpoint(char **handle, int *seq, MPI_Info *info)
{
int ret = MPI_SUCCESS;
MPI_Comm comm = MPI_COMM_WORLD;
orte_snapc_base_request_op_t *datum = NULL;
int state = 0;
int my_rank;
/* argument checking */
if (MPI_PARAM_CHECK) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
/*
* Setup the data structure for the operation
*/
datum = OBJ_NEW(orte_snapc_base_request_op_t);
datum->event = ORTE_SNAPC_OP_CHECKPOINT;
datum->is_active = true;
MPI_Comm_rank(comm, &my_rank);
if( 0 == my_rank ) {
datum->leader = OMPI_PROC_MY_NAME->vpid;
} else {
datum->leader = -1; /* Unknown from non-root ranks */
}
/*
* All processes must make this call before it can start
*/
MPI_Barrier(comm);
/*
* Leader sends the request
*/
OPAL_CR_ENTER_LIBRARY();
ret = orte_snapc.request_op(datum);
if( OMPI_SUCCESS != ret ) {
OBJ_RELEASE(datum);
OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_OTHER,
FUNC_NAME);
}
OPAL_CR_EXIT_LIBRARY();
/*
* Leader then sends out the commit message
*/
if( datum->leader == (int)OMPI_PROC_MY_NAME->vpid ) {
*handle = strdup(datum->global_handle);
*seq = datum->seq_num;
state = 0;
} else {
*handle = (char*)malloc(sizeof(char)*HANDLE_SIZE_MAX);
}
MPI_Bcast(&state, 1, MPI_INT, 0, comm);
MPI_Bcast(seq, 1, MPI_INT, 0, comm);
MPI_Bcast(*handle, HANDLE_SIZE_MAX, MPI_CHAR, 0, comm);
datum->is_active = false;
OBJ_RELEASE(datum);
return ret;
}

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

@ -1,40 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "opal/runtime/opal_cr.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "ompi/errhandler/errhandler.h"
static const char FUNC_NAME[] = "OMPI_CR_INC_register_callback";
int OMPI_CR_INC_register_callback(OMPI_CR_INC_callback_event_t event,
OMPI_CR_INC_callback_function function,
OMPI_CR_INC_callback_function *prev_function)
{
int rc;
if ( MPI_PARAM_CHECK ) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
OPAL_CR_ENTER_LIBRARY();
rc = opal_cr_user_inc_register_callback(event, function, prev_function);
OMPI_ERRHANDLER_RETURN(rc, MPI_COMM_WORLD, rc, FUNC_NAME);
}

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

@ -1,122 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012-2018 Cisco Systems, Inc. All rights reserved
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "opal/util/string_copy.h"
#include "ompi/mpi/c/bindings.h"
#include "ompi/info/info.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "orte/mca/snapc/snapc.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
static const char FUNC_NAME[] = "OMPI_CR_Migrate";
int OMPI_CR_Migrate(MPI_Comm comm, char *hostname, int rank, MPI_Info *info)
{
int ret = MPI_SUCCESS;
orte_snapc_base_request_op_t *datum = NULL;
int my_rank, my_size, i;
char loc_hostname[MPI_MAX_PROCESSOR_NAME];
int my_vpid;
int info_flag;
char info_value[6];
int my_off_node = (int)false;
/* argument checking */
if (MPI_PARAM_CHECK) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
/*
* Setup the data structure for the operation
*/
datum = OBJ_NEW(orte_snapc_base_request_op_t);
datum->event = ORTE_SNAPC_OP_MIGRATE;
datum->is_active = true;
MPI_Comm_rank(comm, &my_rank);
MPI_Comm_size(comm, &my_size);
if( 0 == my_rank ) {
datum->leader = OMPI_PROC_MY_NAME->vpid;
} else {
datum->leader = -1; /* Unknown from non-root ranks */
}
/*
* Gather all preferences to the root
*/
if( NULL == hostname ) {
loc_hostname[0] = '\0';
} else {
opal_string_copy(loc_hostname, hostname, sizeof(loc_hostname));
}
my_vpid = (int) OMPI_PROC_MY_NAME->vpid;
if( 0 == my_rank ) {
datum->mig_num = my_size;
datum->mig_vpids = (int *) malloc(sizeof(int) * my_size);
datum->mig_host_pref = (char (*)[OPAL_MAX_PROCESSOR_NAME]) malloc(sizeof(char) * my_size * MPI_MAX_PROCESSOR_NAME);
datum->mig_vpid_pref = (int *) malloc(sizeof(int) * my_size);
datum->mig_off_node = (int *) malloc(sizeof(int) * my_size);
for( i = 0; i < my_size; ++i ) {
(datum->mig_vpids)[i] = 0;
(datum->mig_host_pref)[i][0] = '\0';
(datum->mig_vpid_pref)[i] = 0;
(datum->mig_off_node)[i] = (int)false;
}
}
my_off_node = (int)false;
if( NULL != info ) {
MPI_Info_get(*info, "CR_OFF_NODE", 5, info_value, &info_flag);
if( info_flag ) {
if( 0 == strncmp(info_value, "true", strlen("true")) ) {
my_off_node = (int)true;
}
}
}
MPI_Gather(&my_vpid, 1, MPI_INT,
(datum->mig_vpids), 1, MPI_INT, 0, comm);
MPI_Gather(loc_hostname, MPI_MAX_PROCESSOR_NAME, MPI_CHAR,
(datum->mig_host_pref), MPI_MAX_PROCESSOR_NAME, MPI_CHAR, 0, comm);
MPI_Gather(&my_vpid, 1, MPI_INT,
(datum->mig_vpid_pref), 1, MPI_INT, 0, comm);
MPI_Gather(&my_off_node, 1, MPI_INT,
(datum->mig_off_node), 1, MPI_INT, 0, comm);
/*
* Leader sends the request
*/
OPAL_CR_ENTER_LIBRARY();
ret = orte_snapc.request_op(datum);
if( OMPI_SUCCESS != ret ) {
OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_OTHER,
FUNC_NAME);
}
OPAL_CR_EXIT_LIBRARY();
datum->is_active = false;
OBJ_RELEASE(datum);
/*
* All processes must sync before leaving
*/
MPI_Barrier(comm);
return ret;
}

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

@ -1,83 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University.
* All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*
*/
#include "opal/runtime/opal_cr.h"
/********************************
* C/R Interfaces
********************************/
/*
* Request a checkpoint
*/
OMPI_DECLSPEC int OMPI_CR_Checkpoint(char **handle, int *seq, MPI_Info *info);
/*
* Request a restart
*/
OMPI_DECLSPEC int OMPI_CR_Restart(char *handle, int seq, MPI_Info *info);
/********************************
* Migration Interface
********************************/
/*
* Request a migration
*/
OMPI_DECLSPEC int OMPI_CR_Migrate(MPI_Comm comm, char *hostname, int rank, MPI_Info *info);
/********************************
* INC Interfaces
********************************/
typedef opal_cr_user_inc_callback_event_t OMPI_CR_INC_callback_event_t;
typedef opal_cr_user_inc_callback_state_t OMPI_CR_INC_callback_state_t;
typedef int (*OMPI_CR_INC_callback_function)(OMPI_CR_INC_callback_event_t event,
OMPI_CR_INC_callback_state_t state);
OMPI_DECLSPEC int OMPI_CR_INC_register_callback(OMPI_CR_INC_callback_event_t event,
OMPI_CR_INC_callback_function function,
OMPI_CR_INC_callback_function *prev_function);
/********************************
* SELF CRS Application Interfaces
********************************/
typedef int (*OMPI_CR_self_checkpoint_fn)(char **restart_cmd);
typedef int (*OMPI_CR_self_restart_fn)(void);
typedef int (*OMPI_CR_self_continue_fn)(void);
OMPI_DECLSPEC int OMPI_CR_self_register_checkpoint_callback(OMPI_CR_self_checkpoint_fn function);
OMPI_DECLSPEC int OMPI_CR_self_register_restart_callback(OMPI_CR_self_restart_fn function);
OMPI_DECLSPEC int OMPI_CR_self_register_continue_callback(OMPI_CR_self_continue_fn function);
/********************************
* Quiescence Interfaces
********************************/
/*
* Start the Quiescent region.
* Note: 'comm' required to be MPI_COMM_WORLD
*/
OMPI_DECLSPEC int OMPI_CR_Quiesce_start(MPI_Comm comm, MPI_Info *info);
/*
* Request a checkpoint during a quiescent region
* Note: 'comm' required to be MPI_COMM_WORLD
*/
OMPI_DECLSPEC int OMPI_CR_Quiesce_checkpoint(MPI_Comm comm, char **handle, int *seq, MPI_Info *info);
/*
* End the Quiescent Region
* Note: 'comm' required to be MPI_COMM_WORLD
*/
OMPI_DECLSPEC int OMPI_CR_Quiesce_end(MPI_Comm comm, MPI_Info *info);

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

@ -1,70 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "ompi/info/info.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "orte/mca/snapc/snapc.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
static const char FUNC_NAME[] = "OMPI_CR_Quiesce_checkpoint";
int OMPI_CR_Quiesce_checkpoint(MPI_Comm commP, char **handle, int *seq, MPI_Info *info)
{
int ret = MPI_SUCCESS;
MPI_Comm comm = MPI_COMM_WORLD; /* Currently ignore provided comm */
orte_snapc_base_request_op_t *datum = NULL;
int my_rank;
/* argument checking */
if (MPI_PARAM_CHECK) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
/*
* Setup the data structure for the operation
*/
datum = OBJ_NEW(orte_snapc_base_request_op_t);
datum->event = ORTE_SNAPC_OP_QUIESCE_CHECKPOINT;
datum->is_active = true;
MPI_Comm_rank(comm, &my_rank);
if( 0 == my_rank ) {
datum->leader = OMPI_PROC_MY_NAME->vpid;
} else {
datum->leader = -1; /* Unknown from non-root ranks */
}
/*
* Since we are quiescent, then this is a local operation
*/
OPAL_CR_ENTER_LIBRARY();
ret = orte_snapc.request_op(datum);
/*ret = ompi_crcp_base_quiesce_start(info);*/
if( OMPI_SUCCESS != ret ) {
OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_OTHER,
FUNC_NAME);
}
OPAL_CR_EXIT_LIBRARY();
*handle = strdup(datum->global_handle);
*seq = datum->seq_num;
datum->is_active = false;
OBJ_RELEASE(datum);
return ret;
}

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

@ -1,75 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "ompi/info/info.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "orte/mca/snapc/snapc.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
static const char FUNC_NAME[] = "OMPI_CR_Quiesce_end";
int OMPI_CR_Quiesce_end(MPI_Comm commP, MPI_Info *info)
{
int ret = MPI_SUCCESS;
MPI_Comm comm = MPI_COMM_WORLD; /* Currently ignore provided comm */
orte_snapc_base_request_op_t *datum = NULL;
int my_rank;
/* argument checking */
if (MPI_PARAM_CHECK) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
/*
* Setup the data structure for the operation
*/
datum = OBJ_NEW(orte_snapc_base_request_op_t);
datum->event = ORTE_SNAPC_OP_QUIESCE_END;
datum->is_active = true;
MPI_Comm_rank(comm, &my_rank);
if( 0 == my_rank ) {
datum->leader = OMPI_PROC_MY_NAME->vpid;
} else {
datum->leader = -1; /* Unknown from non-root ranks */
}
/*
* Leader sends the request
*/
OPAL_CR_ENTER_LIBRARY();
ret = orte_snapc.request_op(datum);
/*ret = ompi_crcp_base_quiesce_end(info);*/
if( OMPI_SUCCESS != ret ) {
OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_OTHER,
FUNC_NAME);
}
OPAL_CR_EXIT_LIBRARY();
/*
* All processes must make this call before it can complete
*/
MPI_Barrier(comm);
/*
* (Old) info logic
*/
/*cur_datum.epoch = -1;*/
return ret;
}

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

@ -1,215 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2011 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "ompi/info/info.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "orte/mca/snapc/snapc.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
static const char FUNC_NAME[] = "OMPI_CR_Quiesce_start";
int OMPI_CR_Quiesce_start(MPI_Comm commP, MPI_Info *info)
{
int ret = MPI_SUCCESS;
MPI_Comm comm = MPI_COMM_WORLD; /* Currently ignore provided comm */
orte_snapc_base_request_op_t *datum = NULL;
int my_rank;
/* argument checking */
if (MPI_PARAM_CHECK) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
/*
* Setup the data structure for the operation
*/
datum = OBJ_NEW(orte_snapc_base_request_op_t);
datum->event = ORTE_SNAPC_OP_QUIESCE_START;
datum->is_active = true;
MPI_Comm_rank(comm, &my_rank);
if( 0 == my_rank ) {
datum->leader = OMPI_PROC_MY_NAME->vpid;
} else {
datum->leader = -1; /* Unknown from non-root ranks */
}
/*
* All processes must make this call before it can start
*/
MPI_Barrier(comm);
/*
* Leader sends the request
*/
OPAL_CR_ENTER_LIBRARY();
ret = orte_snapc.request_op(datum);
/*ret = ompi_crcp_base_quiesce_start(info);*/
if( OMPI_SUCCESS != ret ) {
OBJ_RELEASE(datum);
OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_OTHER,
FUNC_NAME);
}
OPAL_CR_EXIT_LIBRARY();
datum->is_active = false;
OBJ_RELEASE(datum);
/*
* (Old) info logic
*/
/*opal_info_set((opal_info_t*)*info, "target", cur_datum.target_dir);*/
return ret;
}
/*****************
* Local Functions
******************/
#if 0
/* Info keys:
*
* - crs:
* none = (Default) No CRS Service
* default = Whatever CRS service MPI chooses
* blcr = BLCR
* self = app level callbacks
*
* - cmdline:
* Command line to restart the process with.
* If empty, the user must manually enter it
*
* - target:
* Absolute path to the target directory.
*
* - handle:
* first = Earliest checkpoint directory available
* last = Most recent checkpoint directory available
* [global:local] = handle provided by the MPI library
*
* - restarting:
* 0 = not restarting
* 1 = restarting
*
* - checkpointing:
* 0 = No need to prepare for checkpointing
* 1 = MPI should prepare for checkpointing
*
* - inflight:
* default = message
* message = Drain inflight messages at the message level
* network = Drain inflight messages at the network level (if possible)
*
* - user_space_mem:
* 0 = Memory does not need to be managed
* 1 = Memory must be in user space (i.e., not on network card
*
*/
static int extract_info_into_datum(opal_info_t *info, orte_snapc_base_quiesce_t *datum)
{
int info_flag = false;
int max_crs_len = 32;
bool info_bool = false;
char *info_char = NULL;
info_char = (char *) malloc(sizeof(char) * (OPAL_PATH_MAX+1));
/*
* Key: crs
*/
opal_info_get(info, "crs", max_crs_len, info_char, &info_flag);
if( info_flag) {
datum->crs_name = strdup(info_char);
}
/*
* Key: cmdline
*/
opal_info_get(info, "cmdline", OPAL_PATH_MAX, info_char, &info_flag);
if( info_flag) {
datum->cmdline = strdup(info_char);
}
/*
* Key: handle
*/
opal_info_get(info, "handle", OPAL_PATH_MAX, info_char, &info_flag);
if( info_flag) {
datum->handle = strdup(info_char);
}
/*
* Key: target
*/
opal_info_get(info, "target", OPAL_PATH_MAX, info_char, &info_flag);
if( info_flag) {
datum->target_dir = strdup(info_char);
}
/*
* Key: restarting
*/
opal_info_get_bool(info, "restarting", &info_bool, &info_flag);
if( info_flag ) {
datum->restarting = info_bool;
} else {
datum->restarting = false;
}
/*
* Key: checkpointing
*/
opal_info_get_bool(info, "checkpointing", &info_bool, &info_flag);
if( info_flag ) {
datum->checkpointing = info_bool;
} else {
datum->checkpointing = false;
}
/*
* Display all values
*/
OPAL_OUTPUT_VERBOSE((3, mca_crcp_bkmrk_component.super.output_handle,
"crcp:bkmrk: %s extract_info: Info('crs' = '%s')",
OMPI_NAME_PRINT(OMPI_PROC_MY_NAME),
(NULL == datum->crs_name ? "Default (none)" : datum->crs_name)));
OPAL_OUTPUT_VERBOSE((3, mca_crcp_bkmrk_component.super.output_handle,
"crcp:bkmrk: %s extract_info: Info('cmdline' = '%s')",
OMPI_NAME_PRINT(OMPI_PROC_MY_NAME),
(NULL == datum->cmdline ? "Default ()" : datum->cmdline)));
OPAL_OUTPUT_VERBOSE((3, mca_crcp_bkmrk_component.super.output_handle,
"crcp:bkmrk: %s extract_info: Info('checkpointing' = '%c')",
OMPI_NAME_PRINT(OMPI_PROC_MY_NAME),
(datum->checkpointing ? 'T' : 'F')));
OPAL_OUTPUT_VERBOSE((3, mca_crcp_bkmrk_component.super.output_handle,
"crcp:bkmrk: %s extract_info: Info('restarting' = '%c')",
OMPI_NAME_PRINT(OMPI_PROC_MY_NAME),
(datum->restarting ? 'T' : 'F')));
if( NULL != info_char ) {
free(info_char);
info_char = NULL;
}
return OMPI_SUCCESS;
}
#endif

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

@ -1,67 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "ompi/info/info.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "orte/mca/snapc/snapc.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
static const char FUNC_NAME[] = "OMPI_CR_Restart";
int OMPI_CR_Restart(char *handle, int seq, MPI_Info *info)
{
int ret = MPI_SUCCESS;
MPI_Comm comm = MPI_COMM_WORLD;
orte_snapc_base_request_op_t *datum = NULL;
/* argument checking */
if (MPI_PARAM_CHECK) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
/*
* Setup the data structure for the operation
*/
datum = OBJ_NEW(orte_snapc_base_request_op_t);
datum->event = ORTE_SNAPC_OP_RESTART;
datum->is_active = true;
/*
* Restart is not collective, so the caller is the leader
*/
datum->leader = OMPI_PROC_MY_NAME->vpid;
datum->seq_num = seq;
datum->global_handle = strdup(handle);
/*
* Leader sends the request
*/
OPAL_CR_ENTER_LIBRARY();
ret = orte_snapc.request_op(datum);
if( OMPI_SUCCESS != ret ) {
OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_OTHER,
FUNC_NAME);
}
OPAL_CR_EXIT_LIBRARY();
datum->is_active = false;
OBJ_RELEASE(datum);
/********** If successful, should never reach this point (JJH) ******/
return ret;
}

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

@ -1,40 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "opal/runtime/opal_cr.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "ompi/errhandler/errhandler.h"
#include "opal/mca/crs/crs.h"
#include "opal/mca/crs/base/base.h"
static const char FUNC_NAME[] = "OMPI_CR_self_register_checkpoint_callback";
int OMPI_CR_self_register_checkpoint_callback(OMPI_CR_self_checkpoint_fn function)
{
int rc;
if ( MPI_PARAM_CHECK ) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
OPAL_CR_ENTER_LIBRARY();
rc = opal_crs_base_self_register_checkpoint_callback(function);
OMPI_ERRHANDLER_RETURN(rc, MPI_COMM_WORLD, rc, FUNC_NAME);
}

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

@ -1,40 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "opal/runtime/opal_cr.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "ompi/errhandler/errhandler.h"
#include "opal/mca/crs/crs.h"
#include "opal/mca/crs/base/base.h"
static const char FUNC_NAME[] = "OMPI_CR_self_register_continue_callback";
int OMPI_CR_self_register_continue_callback(OMPI_CR_self_continue_fn function)
{
int rc;
if ( MPI_PARAM_CHECK ) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
OPAL_CR_ENTER_LIBRARY();
rc = opal_crs_base_self_register_continue_callback(function);
OMPI_ERRHANDLER_RETURN(rc, MPI_COMM_WORLD, rc, FUNC_NAME);
}

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

@ -1,40 +0,0 @@
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdio.h>
#include "ompi/mpi/c/bindings.h"
#include "opal/runtime/opal_cr.h"
#include "ompi/mpiext/cr/c/mpiext_cr_c.h"
#include "ompi/runtime/params.h"
#include "ompi/communicator/communicator.h"
#include "ompi/errhandler/errhandler.h"
#include "opal/mca/crs/crs.h"
#include "opal/mca/crs/base/base.h"
static const char FUNC_NAME[] = "OMPI_CR_self_register_restart_callback";
int OMPI_CR_self_register_restart_callback(OMPI_CR_self_restart_fn function)
{
int rc;
if ( MPI_PARAM_CHECK ) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
OPAL_CR_ENTER_LIBRARY();
rc = opal_crs_base_self_register_restart_callback(function);
OMPI_ERRHANDLER_RETURN(rc, MPI_COMM_WORLD, rc, FUNC_NAME);
}

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

@ -1,40 +0,0 @@
# -*- shell-script -*-
#
# Copyright (c) 2004-2010 The Trustees of Indiana University.
# All rights reserved.
# Copyright (c) 2012-2015 Cisco Systems, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# OMPI_MPIEXT_cr_CONFIG([action-if-found], [action-if-not-found])
# -----------------------------------------------------------
AC_DEFUN([OMPI_MPIEXT_cr_CONFIG],[
AC_CONFIG_FILES([ompi/mpiext/cr/Makefile])
AC_CONFIG_FILES([ompi/mpiext/cr/c/Makefile])
OPAL_VAR_SCOPE_PUSH([ompi_mpi_ext_cr_happy])
# If we don't want FT, don't compile this extention
AS_IF([test "$ENABLE_cr" = "1" || \
test "$ENABLE_EXT_ALL" = "1"],
[ompi_mpi_ext_cr_happy=1],
[ompi_mpi_ext_cr_happy=0])
AS_IF([test "$ompi_mpi_ext_cr_happy" = "1" && \
test "$opal_want_ft_cr" = "1"],
[$1],
[ # Error if the user specifically asked for this extension,
# but we can't build it.
AS_IF([test "$ENABLE_cr" = "1"],
[AC_MSG_WARN([Requested "cr" MPI extension, but cannot build it])
AC_MSG_WARN([because fault tolerance is not enabled.])
AC_MSG_WARN([Try again with --enable-ft])
AC_MSG_ERROR([Cannot continue])])
$2])
OPAL_VAR_SCOPE_POP
])