![Ralph Castain](/assets/img/avatar_default.png)
can't apply its normal precedence rules. So...print a big "deprecated" warning for the old params and error out if a conflict is detected. I know that isn't what people really wanted, but it's the best we can do. If only the old style param is given, then process it after the warning. Extend the current map-by param to add support for ppr and cpus-per-proc, adding the latter to the list of allowed modifiers using "pe=n" for processing elements/proc. Thus, you can map-by socket:pe=2,oversubscribe to map by socket, binding 2 processing elements/process, with oversubscription allowed. Or you can map-by ppr:2:socket:pe=4 to map two processes to every socket in the allocation, binding each process to 4 processing elements. For those wondering, a processing element is defined as a hwthread if --use-hwthreads-as-cpus is given, or else as a core. Refs trac:4117 This commit was SVN r30620. The following Trac tickets were found above: Ticket 4117 --> https://svn.open-mpi.org/trac/ompi/ticket/4117
84 строки
2.0 KiB
C
84 строки
2.0 KiB
C
/*
|
|
* Copyright (c) 2011 Cisco Systems, Inc. All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#include "orte_config.h"
|
|
#include "orte/constants.h"
|
|
|
|
#include "opal/mca/base/base.h"
|
|
|
|
#include "orte/util/show_help.h"
|
|
|
|
#include "orte/mca/rmaps/base/base.h"
|
|
#include "rmaps_ppr.h"
|
|
|
|
/*
|
|
* Local functions
|
|
*/
|
|
|
|
static int orte_rmaps_ppr_open(void);
|
|
static int orte_rmaps_ppr_close(void);
|
|
static int orte_rmaps_ppr_query(mca_base_module_t **module, int *priority);
|
|
static int orte_rmaps_ppr_register(void);
|
|
|
|
orte_rmaps_base_component_t mca_rmaps_ppr_component = {
|
|
{
|
|
ORTE_RMAPS_BASE_VERSION_2_0_0,
|
|
|
|
"ppr", /* MCA component name */
|
|
ORTE_MAJOR_VERSION, /* MCA component major version */
|
|
ORTE_MINOR_VERSION, /* MCA component minor version */
|
|
ORTE_RELEASE_VERSION, /* MCA component release version */
|
|
orte_rmaps_ppr_open, /* component open */
|
|
orte_rmaps_ppr_close, /* component close */
|
|
orte_rmaps_ppr_query, /* component query */
|
|
orte_rmaps_ppr_register
|
|
},
|
|
{
|
|
/* The component is checkpoint ready */
|
|
MCA_BASE_METADATA_PARAM_CHECKPOINT
|
|
}
|
|
};
|
|
|
|
static int my_priority;
|
|
|
|
static int orte_rmaps_ppr_open(void)
|
|
{
|
|
return ORTE_SUCCESS;
|
|
}
|
|
|
|
|
|
static int orte_rmaps_ppr_query(mca_base_module_t **module, int *priority)
|
|
{
|
|
*priority = my_priority;
|
|
*module = (mca_base_module_t *)&orte_rmaps_ppr_module;
|
|
return ORTE_SUCCESS;
|
|
}
|
|
|
|
/**
|
|
* Close all subsystems.
|
|
*/
|
|
|
|
static int orte_rmaps_ppr_close(void)
|
|
{
|
|
return ORTE_SUCCESS;
|
|
}
|
|
|
|
|
|
static int orte_rmaps_ppr_register(void)
|
|
{
|
|
my_priority = 90;
|
|
(void) mca_base_component_var_register(&mca_rmaps_ppr_component.base_version,
|
|
"priority", "Priority of the ppr rmaps component",
|
|
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
|
OPAL_INFO_LVL_9,
|
|
MCA_BASE_VAR_SCOPE_READONLY, &my_priority);
|
|
|
|
return ORTE_SUCCESS;
|
|
}
|