1
1
openmpi/opal/mca/maffinity/base/base.h

125 строки
4.3 KiB
C
Исходник Обычный вид История

/*
* Copyright (c) 2004-2005 The Trustees of Indiana University.
* All rights reserved.
* Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
* 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$
*
*/
#ifndef OPAL_MAFFINITY_BASE_H
#define OPAL_MAFFINITY_BASE_H
#include "ompi_config.h"
#include "mca/maffinity/maffinity.h"
/*
* Global functions for MCA overall maffinity open and close
*/
#if defined(c_plusplus) || defined(__cplusplus)
extern "C" {
#endif
/**
* Initialize the maffinity MCA framework
*
* @retval OPAL_SUCCESS Upon success
* @retval OPAL_ERROR Upon failure
*
* This must be the first function invoked in the maffinity MCA
* framework. It initializes the maffinity MCA framework, finds
* and opens maffinity components, etc.
*
* This function fills in the internal global variable
* opal_maffinity_base_components_opened, which is a list of all
* maffinity components that were successfully opened. This
* variable should \em only be used by other maffinity base
* functions -- it is not considered a public interface member --
* and is only mentioned here for completeness.
*/
OMPI_DECLSPEC int opal_maffinity_base_open(void);
/**
* Select an available component.
*
* @return OPAL_SUCCESS Upon success.
* @return OPAL_NOT_FOUND If no component can be selected.
* @return OPAL_ERROR Upon other failure.
*
* This function invokes the selection process for maffinity
* components, which works as follows:
*
* - If the \em maffinity MCA parameter is not specified, the
* selection set is all available maffinity components.
* - If the \em maffinity MCA parameter is specified, the
* selection set is just that component.
* - All components in the selection set are queried to see if
* they want to run. All components that want to run are ranked
* by their priority and the highest priority component is
* selected. All non-selected components have their "close"
* function invoked to let them know that they were not selected.
* - The selected component will have its "init" function invoked to
* let it know that it was selected.
*
* If we fall through this entire process and no component is
* selected, then return OPAL_NOT_FOUND (this is not a fatal
* error).
*
* At the end of this process, we'll either have a single
* component that is selected and initialized, or no component was
* selected. If no component was selected, subsequent invocation
* of the maffinity wrapper functions will return an error.
*/
OMPI_DECLSPEC int opal_maffinity_base_select(void);
/**
* Set memory affinity.
*
* @param segments Array describing segments and what process they
* belong to
* @param num_segments Length of the segments array
* @param am_allocator True if this process created the shared
* memory block
*
* @retval OPAL_SUCCESS upon success
* @retval OPAL_NOT_FOUND if no maffinity components are available.
* @retval OPAL_ERROR upon other error.
*
* Set the affinity of the memory segments described in the \em
* segments array.
*
* If no maffinity components were available, or if the
* opal_maffinity_base_select() was never invoked, OPAL_NOT_FOUND
* is returned.
*/
OMPI_DECLSPEC int opal_maffinity_base_set(opal_maffinity_base_segment_t *segments, size_t num_segments, bool am_allocator);
/**
* Shut down the maffinity MCA framework.
*
* @retval OPAL_SUCCESS Always
*
* This function shuts down everything in the maffinity MCA
* framework.
*
* It must be the last function invoked on the maffinity MCA
* framework.
*/
OMPI_DECLSPEC int opal_maffinity_base_close(void);
#if defined(c_plusplus) || defined(__cplusplus)
}
#endif
#endif /* OPAL_BASE_MAFFINITY_H */