Complete backout of prior sched_yield and paffinity changes
This commit was SVN r13530.
Этот коммит содержится в:
родитель
6ed6864fc4
Коммит
c7be9a7121
@ -80,11 +80,6 @@ void ompi_proc_construct(ompi_proc_t* proc)
|
|||||||
opal_list_append(&ompi_proc_list, (opal_list_item_t*)proc);
|
opal_list_append(&ompi_proc_list, (opal_list_item_t*)proc);
|
||||||
OPAL_THREAD_UNLOCK(&ompi_proc_lock);
|
OPAL_THREAD_UNLOCK(&ompi_proc_lock);
|
||||||
|
|
||||||
/* init the number of local procs */
|
|
||||||
proc->num_local_procs = 0;
|
|
||||||
|
|
||||||
/* init my local rank */
|
|
||||||
proc->local_rank = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -605,12 +600,6 @@ static void callback(orte_gpr_notify_data_t *data, void *cbdata)
|
|||||||
proc->proc_arch = arch;
|
proc->proc_arch = arch;
|
||||||
if (0 == strcmp(str, orte_system_info.nodename)) {
|
if (0 == strcmp(str, orte_system_info.nodename)) {
|
||||||
proc->proc_flags |= OMPI_PROC_FLAG_LOCAL;
|
proc->proc_flags |= OMPI_PROC_FLAG_LOCAL;
|
||||||
/* increment the number of procs on my node */
|
|
||||||
ompi_proc_local_proc->num_local_procs++;
|
|
||||||
/* is this vpid < mine? if so, bump my local rank */
|
|
||||||
if (name.vpid < ORTE_PROC_MY_NAME->vpid) {
|
|
||||||
ompi_proc_local_proc->local_rank++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if arch is different than mine, create a
|
/* if arch is different than mine, create a
|
||||||
|
@ -53,10 +53,6 @@ struct ompi_proc_t {
|
|||||||
char *proc_hostname;
|
char *proc_hostname;
|
||||||
/** flags for this proc */
|
/** flags for this proc */
|
||||||
uint8_t proc_flags;
|
uint8_t proc_flags;
|
||||||
/** number of local procs sharing this node */
|
|
||||||
uint8_t num_local_procs;
|
|
||||||
/** my local rank */
|
|
||||||
orte_vpid_t local_rank;
|
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Convenience typedef
|
* Convenience typedef
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2006-2007 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2006 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2006 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2006 University of Houston. All rights reserved.
|
* Copyright (c) 2006 University of Houston. All rights reserved.
|
||||||
@ -213,7 +213,10 @@ int ompi_mpi_init(int argc, char **argv, int requested, int *provided)
|
|||||||
bool timing = false;
|
bool timing = false;
|
||||||
int param, value;
|
int param, value;
|
||||||
struct timeval ompistart, ompistop;
|
struct timeval ompistart, ompistop;
|
||||||
|
#if 0
|
||||||
|
/* see comment below about sched_yield */
|
||||||
int num_processors;
|
int num_processors;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Join the run-time environment - do the things that don't hit
|
/* Join the run-time environment - do the things that don't hit
|
||||||
the registry */
|
the registry */
|
||||||
@ -283,6 +286,40 @@ int ompi_mpi_init(int argc, char **argv, int requested, int *provided)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Setup process affinity */
|
||||||
|
|
||||||
|
if (ompi_mpi_paffinity_alone) {
|
||||||
|
bool set = false;
|
||||||
|
param = mca_base_param_find("mpi", NULL, "paffinity_processor");
|
||||||
|
if (param >= 0) {
|
||||||
|
if (OMPI_SUCCESS == mca_base_param_lookup_int(param, &value)) {
|
||||||
|
if (value >= 0) {
|
||||||
|
if (OPAL_SUCCESS == opal_paffinity_base_set(value)) {
|
||||||
|
set = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!set) {
|
||||||
|
char *vpid;
|
||||||
|
orte_ns.get_vpid_string(&vpid, orte_process_info.my_name);
|
||||||
|
opal_show_help("help-mpi-runtime",
|
||||||
|
"mpi_init:startup:paffinity-unavailable",
|
||||||
|
true, vpid);
|
||||||
|
free(vpid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If we were able to set processor affinity, try setting
|
||||||
|
up memory affinity */
|
||||||
|
|
||||||
|
else {
|
||||||
|
if (OPAL_SUCCESS == opal_maffinity_base_open() &&
|
||||||
|
OPAL_SUCCESS == opal_maffinity_base_select()) {
|
||||||
|
ompi_mpi_maffinity_setup = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* initialize datatypes. This step should be done early as it will
|
/* initialize datatypes. This step should be done early as it will
|
||||||
* create the local convertor and local arch used in the proc
|
* create the local convertor and local arch used in the proc
|
||||||
* init.
|
* init.
|
||||||
@ -508,29 +545,6 @@ int ompi_mpi_init(int argc, char **argv, int requested, int *provided)
|
|||||||
gettimeofday(&ompistart, NULL);
|
gettimeofday(&ompistart, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup process affinity */
|
|
||||||
|
|
||||||
if (ompi_mpi_paffinity_alone) {
|
|
||||||
if (OPAL_SUCCESS ==
|
|
||||||
opal_paffinity_base_set(ompi_proc_local_proc->local_rank)) {
|
|
||||||
/* If we were able to set processor affinity, also try to
|
|
||||||
setup memory affinity */
|
|
||||||
if (OPAL_SUCCESS == opal_maffinity_base_open() &&
|
|
||||||
OPAL_SUCCESS == opal_maffinity_base_select()) {
|
|
||||||
ompi_mpi_maffinity_setup = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* If we failed to setup paffinity, then print a warning
|
|
||||||
because the user did specifically ask for it */
|
|
||||||
char *vpid;
|
|
||||||
orte_ns.get_vpid_string(&vpid, orte_process_info.my_name);
|
|
||||||
opal_show_help("help-mpi-runtime",
|
|
||||||
"mpi_init:startup:paffinity-unavailable",
|
|
||||||
true, vpid);
|
|
||||||
free(vpid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* start PTL's */
|
/* start PTL's */
|
||||||
ret = MCA_PML_CALL(enable(true));
|
ret = MCA_PML_CALL(enable(true));
|
||||||
if( OMPI_SUCCESS != ret ) {
|
if( OMPI_SUCCESS != ret ) {
|
||||||
@ -676,6 +690,13 @@ int ompi_mpi_init(int argc, char **argv, int requested, int *provided)
|
|||||||
param = mca_base_param_find("mpi", NULL, "yield_when_idle");
|
param = mca_base_param_find("mpi", NULL, "yield_when_idle");
|
||||||
mca_base_param_lookup_int(param, &value);
|
mca_base_param_lookup_int(param, &value);
|
||||||
if (value < 0) {
|
if (value < 0) {
|
||||||
|
/* TEMPORARY FIX - RIGHT NOW, WE DO NOT HAVE ACCESS TO
|
||||||
|
* INFO ON THE NUMBER OF LOCAL PROCS. THE ORTED IS SETTING
|
||||||
|
* THE MCA PARAM (OR THE PLS WILL, DEPENDING ON SYSTEM) SO
|
||||||
|
* THE FOLLOWING CODE WILL **NEVER** BE EXECUTED *EXCEPT*
|
||||||
|
* POSSIBLY BY SINGLETONS IN THE ABSENCE OF AN ENVIRO MCA PARAM
|
||||||
|
*/
|
||||||
|
#if 0
|
||||||
/* nope - so let's figure out what we can/should do...
|
/* nope - so let's figure out what we can/should do...
|
||||||
* first, get the number of processors - if we can't then
|
* first, get the number of processors - if we can't then
|
||||||
* we can't do anything but set conservative values
|
* we can't do anything but set conservative values
|
||||||
@ -695,6 +716,9 @@ int ompi_mpi_init(int argc, char **argv, int requested, int *provided)
|
|||||||
/* couldn't get num_processors - be conservative */
|
/* couldn't get num_processors - be conservative */
|
||||||
opal_progress_set_yield_when_idle(true);
|
opal_progress_set_yield_when_idle(true);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
/* always just default to conservative */
|
||||||
|
opal_progress_set_yield_when_idle(true);
|
||||||
} else {
|
} else {
|
||||||
/* yep, they specified it - so set idle accordingly */
|
/* yep, they specified it - so set idle accordingly */
|
||||||
opal_progress_set_yield_when_idle(value == 0 ? false : true);
|
opal_progress_set_yield_when_idle(value == 0 ? false : true);
|
||||||
|
@ -271,7 +271,8 @@ opal_progress_set_yield_when_idle(bool yieldopt)
|
|||||||
bool tmp = (call_yield == 0) ? false : true;
|
bool tmp = (call_yield == 0) ? false : true;
|
||||||
call_yield = (yieldopt) ? 1 : 0;
|
call_yield = (yieldopt) ? 1 : 0;
|
||||||
|
|
||||||
OPAL_OUTPUT((debug_output, "progress: progress_set_yield_when_idle to %d", call_yield));
|
OPAL_OUTPUT((debug_output, "progress: progress_set_yield_when_idle to %s",
|
||||||
|
call_yield == 0 ? "false" : "true"));
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user