2005-08-13 18:00:56 +04:00
/*
2005-11-05 22:57:48 +03:00
* 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 .
2005-08-13 18:00:56 +04:00
* 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 .
2008-07-11 01:12:45 +04:00
* Copyright ( c ) 2008 Cisco Systems , Inc . All rights reserved .
2005-08-13 18:00:56 +04:00
* $ COPYRIGHT $
*
* Additional copyrights may follow
*
* $ HEADER $
*/
2006-02-12 04:33:29 +03:00
# include "opal_config.h"
2005-08-13 18:00:56 +04:00
2006-02-12 04:33:29 +03:00
# include "opal/constants.h"
2005-08-13 18:00:56 +04:00
# 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
*/
2009-03-20 13:13:01 +03:00
OPAL_DECLSPEC int opal_paffinity_base_output = - 1 ;
2005-08-13 18:00:56 +04:00
bool opal_paffinity_base_components_opened_valid = false ;
opal_list_t opal_paffinity_base_components_opened ;
2009-05-12 06:18:35 +04:00
bool opal_paffinity_alone = false ;
char * opal_paffinity_base_slot_list ;
2005-08-13 18:00:56 +04:00
/*
* 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 )
{
2009-05-12 06:18:35 +04:00
int value , id ;
2005-08-13 18:00:56 +04:00
/* Debugging / verbose output */
2007-08-18 07:05:45 +04:00
mca_base_param_reg_int_name ( " paffinity " , " base_verbose " ,
2005-08-13 18:00:56 +04:00
" 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 ;
}
2009-05-12 06:18:35 +04:00
id = mca_base_param_reg_int_name ( " opal " , " paffinity_alone " ,
" If nonzero, assume that this job is the only (set of) process(es) running on each node and bind processes to processors, starting with processor ID 0 " ,
false , false ,
0 , NULL ) ;
2009-05-12 19:41:11 +04:00
/* register the historical mpi_paffinity_alone synonym, but don't
* declare it deprecated so we don ' t scare the users
*
* Yes , this breaks the abstraction barrier , but as indicated
* on the developer list . . . . live with it . : - )
*/
mca_base_param_reg_syn_name ( id , " mpi " , " paffinity_alone " , false ) ;
2009-05-12 06:18:35 +04:00
mca_base_param_lookup_int ( id , & value ) ;
opal_paffinity_alone = OPAL_INT_TO_BOOL ( value ) ;
2005-08-13 18:00:56 +04:00
opal_paffinity_base_components_opened_valid = false ;
2008-07-11 01:12:45 +04:00
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) " ,
2009-05-12 06:18:35 +04:00
true , false , NULL , & opal_paffinity_base_slot_list ) ;
2005-08-13 18:00:56 +04:00
/* Open up all available components */
2006-02-12 04:33:29 +03:00
if ( OPAL_SUCCESS ! =
2005-08-13 18:00:56 +04:00
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 ;
}