d446675526
This commit adds an API for registering and querying performance variables (mca_base_pvar) in the MCA base. The existing MCA variable system API has been updated to reflect the new API: MCA variable groups have performance variables, and new types have been added (double, unsigned long long) to reflect what is required by the MPI_T interface. Additionally, the MCA variable group code has been split into its own set of files: mca_base_var_group.[ch]. Details of the new API can be found in doxygen comments in the header: mca_base_pvar.h. Other changes to the variable system: - Use an opal_hash_table to speed up variable/group lookup. - Clean up code associated with MCA variable types. - Registered performance variables are printed by ompi_info -a. In the future an option should be added to control this behavior. Changes to OMPI: - Added full support for the MPI_T performance variable interface. This commit was SVN r28800.
54 строки
1.4 KiB
C
54 строки
1.4 KiB
C
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
|
/*
|
|
* Copyright (c) 2012-2013 Los Alamos National Security, LLC. All rights
|
|
* reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#include "ompi/mpit/mpit-internal.h"
|
|
|
|
static const char FUNC_NAME[] = "MPI_T_pvar_stop";
|
|
|
|
static int pvar_handle_stop (mca_base_pvar_handle_t *handle)
|
|
{
|
|
if (OPAL_SUCCESS != mca_base_pvar_handle_stop (handle)) {
|
|
return MPI_T_ERR_PVAR_NO_STARTSTOP;
|
|
}
|
|
|
|
return MPI_SUCCESS;
|
|
}
|
|
|
|
int MPI_T_pvar_stop(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
|
|
{
|
|
int ret;
|
|
|
|
if (!mpit_is_initialized ()) {
|
|
return MPI_T_ERR_NOT_INITIALIZED;
|
|
}
|
|
|
|
mpit_lock ();
|
|
|
|
if (MPI_T_PVAR_ALL_HANDLES == handle) {
|
|
OPAL_LIST_FOREACH(handle, &session->handles, mca_base_pvar_handle_t) {
|
|
/* Per MPI 3.0: ignore continuous and stopped variables when stopping
|
|
all variable handles. */
|
|
if (mca_base_pvar_handle_is_running (handle) && !mca_base_pvar_is_continuous (handle->pvar) &&
|
|
MPI_SUCCESS != pvar_handle_stop (handle)) {
|
|
/* If we failed to stop any variable we need to return
|
|
an error. */
|
|
ret = MPI_T_ERR_PVAR_NO_STARTSTOP;
|
|
}
|
|
}
|
|
} else {
|
|
ret = pvar_handle_stop (handle);
|
|
}
|
|
|
|
mpit_unlock ();
|
|
|
|
return ret;
|
|
}
|