583bf425c0
Short version: remove opal_paffinity_alone and restore mpi_paffinity_alone. ORTE makes various information available for the MPI layer to decide what it wants to do in terms of processor affinity. Details: * remove opal_paffinity_alone MCA param; restore mpi_paffinity_alone MCA param * move opal_paffinity_slot_list param registration to paffinity base * ompi_mpi_init() calls opal_paffinity_base_slot_list_set(); if that succeeds use that. If no slot list was set, see if mpi_paffinity_alone was set. If so, bind this process to its Node Local Rank (NLR). The NLR is the ORTE-maintained slot ID; if you COMM_SPAWN to a host in this ORTE universe that already has procs on it, the NLR for the new job will start at N (not 0). So this is slightly better than mpi_paffinity_alone in the v1.2 series. * If a slot list is specified *and* mpi_paffinity_alone is set, we display an error and abort. * Remove calls from rmaps/rank_file component to register and lookup opal_paffinity mca params. * Remove code in orte/odls that set affinities - instead, have them just pass a slot_list if it exists. * Cleanup the orte/odls code that determined oversubscribed/want_processor as these were just opposites of each other. This commit was SVN r18874. The following Trac tickets were found above: Ticket 1383 --> https://svn.open-mpi.org/trac/ompi/ticket/1383
89 строки
2.8 KiB
C
89 строки
2.8 KiB
C
/*
|
|
* 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$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
|
|
#include "opal_config.h"
|
|
|
|
#include "opal/constants.h"
|
|
#include "opal/util/output.h"
|
|
#include "opal/mca/mca.h"
|
|
#include "opal/mca/base/base.h"
|
|
#include "opal/mca/base/mca_base_param.h"
|
|
#include "opal/mca/paffinity/paffinity.h"
|
|
#include "opal/mca/paffinity/base/base.h"
|
|
|
|
|
|
/*
|
|
* The following file was created by configure. It contains extern
|
|
* statements and the definition of an array of pointers to each
|
|
* component's public mca_base_component_t struct.
|
|
*/
|
|
#include "opal/mca/paffinity/base/static-components.h"
|
|
|
|
|
|
/*
|
|
* Globals
|
|
*/
|
|
int opal_paffinity_base_output = -1;
|
|
bool opal_paffinity_base_components_opened_valid = false;
|
|
opal_list_t opal_paffinity_base_components_opened;
|
|
|
|
|
|
/*
|
|
* Function for finding and opening either all MCA components, or the one
|
|
* that was specifically requested via a MCA parameter.
|
|
*/
|
|
int opal_paffinity_base_open(void)
|
|
{
|
|
int value;
|
|
|
|
/* Debugging / verbose output */
|
|
|
|
mca_base_param_reg_int_name("paffinity", "base_verbose",
|
|
"Verbosity level of the paffinity framework",
|
|
false, false,
|
|
0, &value);
|
|
if (0 != value) {
|
|
opal_paffinity_base_output = opal_output_open(NULL);
|
|
} else {
|
|
opal_paffinity_base_output = -1;
|
|
}
|
|
|
|
opal_paffinity_base_components_opened_valid = false;
|
|
|
|
mca_base_param_reg_string_name("opal", "paffinity_base_slot_list",
|
|
"Used to set list of processor IDs to bind MPI processes to (e.g., used in conjunction with rank files)",
|
|
true, false, NULL, NULL);
|
|
|
|
/* Open up all available components */
|
|
|
|
if (OPAL_SUCCESS !=
|
|
mca_base_components_open("paffinity", opal_paffinity_base_output,
|
|
mca_paffinity_base_static_components,
|
|
&opal_paffinity_base_components_opened,
|
|
true)) {
|
|
return OPAL_ERROR;
|
|
}
|
|
opal_paffinity_base_components_opened_valid = true;
|
|
|
|
/* All done */
|
|
|
|
return OPAL_SUCCESS;
|
|
}
|