sentinel: use type uintptr_t for sentinel
MSB is now automatically cleared when right shifting Thanks George for pointing this
Этот коммит содержится в:
родитель
7850517215
Коммит
030a5f2054
@ -18,7 +18,7 @@
|
|||||||
* Copyright (c) 2012 Oak Ridge National Labs. All rights reserved.
|
* Copyright (c) 2012 Oak Ridge National Labs. All rights reserved.
|
||||||
* Copyright (c) 2012-2015 Los Alamos National Security, LLC.
|
* Copyright (c) 2012-2015 Los Alamos National Security, LLC.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2014 Research Organization for Information Science
|
* Copyright (c) 2014-2016 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
* Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
|
* Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
|
||||||
* Copyright (c) 2015 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2015 Mellanox Technologies. All rights reserved.
|
||||||
@ -699,7 +699,7 @@ static int ompi_comm_split_type_get_part (ompi_group_t *group, int *results, int
|
|||||||
int include = false;
|
int include = false;
|
||||||
|
|
||||||
if (ompi_proc_is_sentinel (proc)) {
|
if (ompi_proc_is_sentinel (proc)) {
|
||||||
opal_process_name_t proc_name = ompi_proc_sentinel_to_name ((intptr_t) proc);
|
opal_process_name_t proc_name = ompi_proc_sentinel_to_name ((uintptr_t) proc);
|
||||||
|
|
||||||
u16ptr = &locality;
|
u16ptr = &locality;
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ int ompi_dpm_connect_accept(ompi_communicator_t *comm, int root,
|
|||||||
for (i=0; i < size; i++) {
|
for (i=0; i < size; i++) {
|
||||||
opal_process_name_t proc_name;
|
opal_process_name_t proc_name;
|
||||||
if (ompi_proc_is_sentinel (proc_list[i])) {
|
if (ompi_proc_is_sentinel (proc_list[i])) {
|
||||||
proc_name = ompi_proc_sentinel_to_name ((intptr_t) proc_list[i]);
|
proc_name = ompi_proc_sentinel_to_name ((uintptr_t) proc_list[i]);
|
||||||
} else {
|
} else {
|
||||||
proc_name = proc_list[i]->super.proc_name;
|
proc_name = proc_list[i]->super.proc_name;
|
||||||
}
|
}
|
||||||
@ -532,7 +532,7 @@ static int construct_peers(ompi_group_t *group, opal_list_t *peers)
|
|||||||
return OMPI_ERR_NOT_FOUND;
|
return OMPI_ERR_NOT_FOUND;
|
||||||
}
|
}
|
||||||
if (ompi_proc_is_sentinel (proct)) {
|
if (ompi_proc_is_sentinel (proct)) {
|
||||||
proc_name = ompi_proc_sentinel_to_name ((intptr_t)proct);
|
proc_name = ompi_proc_sentinel_to_name ((uintptr_t)proct);
|
||||||
} else {
|
} else {
|
||||||
proc_name = proct->super.proc_name;
|
proc_name = proct->super.proc_name;
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
* Copyright (c) 2012 Oak Ridge National Labs. All rights reserved.
|
* Copyright (c) 2012 Oak Ridge National Labs. All rights reserved.
|
||||||
* Copyright (c) 2013-2015 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2013-2015 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2016 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -352,7 +354,7 @@ static inline struct ompi_proc_t *ompi_group_dense_lookup (ompi_group_t *group,
|
|||||||
|
|
||||||
/* replace sentinel value with an actual ompi_proc_t */
|
/* replace sentinel value with an actual ompi_proc_t */
|
||||||
ompi_proc_t *real_proc =
|
ompi_proc_t *real_proc =
|
||||||
(ompi_proc_t *) ompi_proc_for_name (ompi_proc_sentinel_to_name ((intptr_t) proc));
|
(ompi_proc_t *) ompi_proc_for_name (ompi_proc_sentinel_to_name ((uintptr_t) proc));
|
||||||
|
|
||||||
if (opal_atomic_cmpset_ptr (group->grp_proc_pointers + peer_id, proc, real_proc)) {
|
if (opal_atomic_cmpset_ptr (group->grp_proc_pointers + peer_id, proc, real_proc)) {
|
||||||
OBJ_RETAIN(real_proc);
|
OBJ_RETAIN(real_proc);
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2013-2015 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2013-2015 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2016 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -61,7 +63,7 @@ static struct ompi_proc_t *ompi_group_dense_lookup_raw (ompi_group_t *group, con
|
|||||||
{
|
{
|
||||||
if (OPAL_UNLIKELY(ompi_proc_is_sentinel (group->grp_proc_pointers[peer_id]))) {
|
if (OPAL_UNLIKELY(ompi_proc_is_sentinel (group->grp_proc_pointers[peer_id]))) {
|
||||||
ompi_proc_t *proc =
|
ompi_proc_t *proc =
|
||||||
(ompi_proc_t *) ompi_proc_lookup (ompi_proc_sentinel_to_name ((intptr_t) group->grp_proc_pointers[peer_id]));
|
(ompi_proc_t *) ompi_proc_lookup (ompi_proc_sentinel_to_name ((uintptr_t) group->grp_proc_pointers[peer_id]));
|
||||||
if (NULL != proc) {
|
if (NULL != proc) {
|
||||||
/* replace sentinel value with an actual ompi_proc_t */
|
/* replace sentinel value with an actual ompi_proc_t */
|
||||||
group->grp_proc_pointers[peer_id] = proc;
|
group->grp_proc_pointers[peer_id] = proc;
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2013-2015 Inria. All rights reserved.
|
* Copyright (c) 2013-2015 Inria. All rights reserved.
|
||||||
* Copyright (c) 2015 Bull SAS. All rights reserved.
|
* Copyright (c) 2015 Bull SAS. All rights reserved.
|
||||||
|
* Copyright (c) 2016 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -77,7 +79,7 @@ int mca_pml_monitoring_add_procs(struct ompi_proc_t **procs,
|
|||||||
my_rank = i;
|
my_rank = i;
|
||||||
/* Extract the peer procname from the procs array */
|
/* Extract the peer procname from the procs array */
|
||||||
if( ompi_proc_is_sentinel(procs[i]) ) {
|
if( ompi_proc_is_sentinel(procs[i]) ) {
|
||||||
tmp = ompi_proc_sentinel_to_name((intptr_t)procs[i]);
|
tmp = ompi_proc_sentinel_to_name((uintptr_t)procs[i]);
|
||||||
} else {
|
} else {
|
||||||
tmp = procs[i]->super.proc_name;
|
tmp = procs[i]->super.proc_name;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* Copyright (c) 2012-2015 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2012-2015 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2013-2015 Intel, Inc. All rights reserved
|
* Copyright (c) 2013-2015 Intel, Inc. All rights reserved
|
||||||
* Copyright (c) 2014-2015 Research Organization for Information Science
|
* Copyright (c) 2014-2016 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
* Copyright (c) 2015 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2015 Mellanox Technologies. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -642,7 +642,7 @@ ompi_proc_pack(ompi_proc_t **proclist, int proclistsize,
|
|||||||
ompi_proc_t *proc = proclist[i];
|
ompi_proc_t *proc = proclist[i];
|
||||||
|
|
||||||
if (ompi_proc_is_sentinel (proc)) {
|
if (ompi_proc_is_sentinel (proc)) {
|
||||||
proc = ompi_proc_for_name_nolock (ompi_proc_sentinel_to_name ((intptr_t) proc));
|
proc = ompi_proc_for_name_nolock (ompi_proc_sentinel_to_name ((uintptr_t) proc));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* send proc name */
|
/* send proc name */
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
* Copyright (c) 2007-2012 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2007-2012 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2013-2014 Intel, Inc. All rights reserved
|
* Copyright (c) 2013-2014 Intel, Inc. All rights reserved
|
||||||
* Copyright (c) 2015 Research Organization for Information Science
|
* Copyright (c) 2015-2016 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -369,15 +369,14 @@ static inline bool ompi_proc_is_sentinel (ompi_proc_t *proc)
|
|||||||
return (intptr_t) proc & 0x1;
|
return (intptr_t) proc & 0x1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline intptr_t ompi_proc_name_to_sentinel (opal_process_name_t name)
|
static inline uintptr_t ompi_proc_name_to_sentinel (opal_process_name_t name)
|
||||||
{
|
{
|
||||||
return (*((intptr_t *) &name) << 1) | 0x1;
|
return (*((uintptr_t *) &name) << 1) | 0x1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline opal_process_name_t ompi_proc_sentinel_to_name (intptr_t sentinel)
|
static inline opal_process_name_t ompi_proc_sentinel_to_name (uintptr_t sentinel)
|
||||||
{
|
{
|
||||||
sentinel >>= 1;
|
sentinel >>= 1;
|
||||||
sentinel &= 0x7FFFFFFFFFFFFFFF;
|
|
||||||
return *((opal_process_name_t *) &sentinel);
|
return *((opal_process_name_t *) &sentinel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user