basesmuma: do not call MB directly
opal does not always define MB. It is recommended that opal_atomic_[rw]mb is called instead. We will need to address the cases where these functions are no-ops on weak-memory ordered cpus. cmr=v1.7.5:ticket=trac:4158 This commit was SVN r30534. The following Trac tickets were found above: Ticket 4158 --> https://svn.open-mpi.org/trac/ompi/ticket/4158
Этот коммит содержится в:
родитель
c2b061cc84
Коммит
64321acc22
@ -207,7 +207,7 @@ MAIN_PHASE:
|
|||||||
/* we start the recursive k - ing phase */
|
/* we start the recursive k - ing phase */
|
||||||
for( *iteration = 0; *iteration < pow_k; (*iteration)++) {
|
for( *iteration = 0; *iteration < pow_k; (*iteration)++) {
|
||||||
/* announce my arrival */
|
/* announce my arrival */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[ALLGATHER_FLAG][bcol_id] = ready_flag;
|
my_ctl_pointer->flags[ALLGATHER_FLAG][bcol_id] = ready_flag;
|
||||||
/* calculate the number of active requests */
|
/* calculate the number of active requests */
|
||||||
CALC_ACTIVE_REQUESTS(active_requests,exchange_node->rank_exchanges[*iteration],tree_order);
|
CALC_ACTIVE_REQUESTS(active_requests,exchange_node->rank_exchanges[*iteration],tree_order);
|
||||||
@ -271,7 +271,7 @@ MAIN_PHASE:
|
|||||||
/* finish off the last piece, send the data back to the extra */
|
/* finish off the last piece, send the data back to the extra */
|
||||||
if( 0 < exchange_node->n_extra_sources ) {
|
if( 0 < exchange_node->n_extra_sources ) {
|
||||||
/* simply announce my arrival */
|
/* simply announce my arrival */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[ALLGATHER_FLAG][bcol_id] = ready_flag;
|
my_ctl_pointer->flags[ALLGATHER_FLAG][bcol_id] = ready_flag;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -433,7 +433,7 @@ MAIN_PHASE:
|
|||||||
/* start the recursive k - ing phase */
|
/* start the recursive k - ing phase */
|
||||||
for( *iter=*iteration; *iter < pow_k; (*iter)++) {
|
for( *iter=*iteration; *iter < pow_k; (*iter)++) {
|
||||||
/* I am ready at this level */
|
/* I am ready at this level */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[ALLGATHER_FLAG][bcol_id] = ready_flag;
|
my_ctl_pointer->flags[ALLGATHER_FLAG][bcol_id] = ready_flag;
|
||||||
if( 0 == *active_requests ) {
|
if( 0 == *active_requests ) {
|
||||||
/* flip some bits, if we don't have active requests from a previous visit */
|
/* flip some bits, if we don't have active requests from a previous visit */
|
||||||
@ -499,7 +499,7 @@ MAIN_PHASE:
|
|||||||
/* finish off the last piece, send the data back to the extra */
|
/* finish off the last piece, send the data back to the extra */
|
||||||
if( 0 < exchange_node->n_extra_sources ) {
|
if( 0 < exchange_node->n_extra_sources ) {
|
||||||
/* simply announce my arrival */
|
/* simply announce my arrival */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[ALLGATHER_FLAG][bcol_id] = ready_flag;
|
my_ctl_pointer->flags[ALLGATHER_FLAG][bcol_id] = ready_flag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009-2013 Oak Ridge National Laboratory. All rights reserved.
|
* Copyright (c) 2009-2013 Oak Ridge National Laboratory. All rights reserved.
|
||||||
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
||||||
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2013-2014 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -409,7 +409,7 @@ int bcol_basesmuma_allreduce_intra_recursive_doubling(bcol_function_args_t *inpu
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* signal that I have arrived */
|
/* signal that I have arrived */
|
||||||
/* MB(); */
|
/* opal_atomic_wmb (); */
|
||||||
my_ctl_pointer->sequence_number = sequence_number;
|
my_ctl_pointer->sequence_number = sequence_number;
|
||||||
|
|
||||||
/* If we use this buffer more than once by an sm module in
|
/* If we use this buffer more than once by an sm module in
|
||||||
@ -581,7 +581,7 @@ int bcol_basesmuma_allreduce_intra_recursive_doubling(bcol_function_args_t *inpu
|
|||||||
/*
|
/*
|
||||||
* Signal parent that data is ready
|
* Signal parent that data is ready
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
/*my_ctl_pointer->flags[ALLREDUCE_FLAG] = ready_flag;*/
|
/*my_ctl_pointer->flags[ALLREDUCE_FLAG] = ready_flag;*/
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
|
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
|
||||||
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
||||||
|
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
|
||||||
|
* reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -236,7 +238,7 @@ int bcol_basesmuma_bcast(bcol_function_args_t *input_args,
|
|||||||
memcpy(data_addr, (void *)parent_data_pointer,pack_len);
|
memcpy(data_addr, (void *)parent_data_pointer,pack_len);
|
||||||
|
|
||||||
/* Signal to children that they may read the data from my shared buffer */
|
/* Signal to children that they may read the data from my shared buffer */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[BCAST_FLAG][bcol_id] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAG][bcol_id] = ready_flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -438,7 +440,7 @@ int bcol_basesmuma_hdl_zerocopy_bcast(bcol_function_args_t *input_args,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Signal to children that they may read the data from my shared buffer */
|
/* Signal to children that they may read the data from my shared buffer */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
hdl_desc->des_src = hdl_seg;
|
hdl_desc->des_src = hdl_seg;
|
||||||
hdl_desc->des_src_cnt = 1;
|
hdl_desc->des_src_cnt = 1;
|
||||||
for (ridx = 0; ridx < my_fanout_read_tree->n_children; ridx++) {
|
for (ridx = 0; ridx < my_fanout_read_tree->n_children; ridx++) {
|
||||||
|
@ -165,7 +165,7 @@ int bcol_basesmuma_bcast_k_nomial_knownroot(bcol_function_args_t *input_args,
|
|||||||
} else {
|
} else {
|
||||||
ready_flag = my_ctl_pointer->flags[BCAST_FLAG][bcol_id];
|
ready_flag = my_ctl_pointer->flags[BCAST_FLAG][bcol_id];
|
||||||
}
|
}
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->sequence_number = sequence_number;
|
my_ctl_pointer->sequence_number = sequence_number;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ int bcol_basesmuma_bcast_k_nomial_knownroot(bcol_function_args_t *input_args,
|
|||||||
/*
|
/*
|
||||||
* signal ready flag
|
* signal ready flag
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[BCAST_FLAG][bcol_id] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAG][bcol_id] = ready_flag;
|
||||||
|
|
||||||
/* root is finished */
|
/* root is finished */
|
||||||
@ -214,7 +214,7 @@ int bcol_basesmuma_bcast_k_nomial_knownroot(bcol_function_args_t *input_args,
|
|||||||
/* copy the data */
|
/* copy the data */
|
||||||
memcpy(data_addr, (void *) parent_data_pointer, pack_len);
|
memcpy(data_addr, (void *) parent_data_pointer, pack_len);
|
||||||
/* set the memory barrier to ensure completion */
|
/* set the memory barrier to ensure completion */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
/* signal that I am done */
|
/* signal that I am done */
|
||||||
my_ctl_pointer->flags[BCAST_FLAG][bcol_id] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAG][bcol_id] = ready_flag;
|
||||||
|
|
||||||
@ -312,7 +312,7 @@ int bcol_basesmuma_bcast_k_nomial_anyroot(bcol_function_args_t *input_args,
|
|||||||
* set the radix_mask */
|
* set the radix_mask */
|
||||||
radix_mask = pow_k_group_size;
|
radix_mask = pow_k_group_size;
|
||||||
/* send to children */
|
/* send to children */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
BASESMUMA_K_NOMIAL_SEND_CHILDREN(radix_mask,
|
BASESMUMA_K_NOMIAL_SEND_CHILDREN(radix_mask,
|
||||||
radix,0,
|
radix,0,
|
||||||
my_rank,group_size, ready_flag);
|
my_rank,group_size, ready_flag);
|
||||||
@ -347,7 +347,7 @@ int bcol_basesmuma_bcast_k_nomial_anyroot(bcol_function_args_t *input_args,
|
|||||||
radix_mask /= radix;
|
radix_mask /= radix;
|
||||||
|
|
||||||
/* send to children */
|
/* send to children */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
BASESMUMA_K_NOMIAL_SEND_CHILDREN(radix_mask,
|
BASESMUMA_K_NOMIAL_SEND_CHILDREN(radix_mask,
|
||||||
radix, relative_rank,
|
radix, relative_rank,
|
||||||
my_rank, group_size, ready_flag);
|
my_rank, group_size, ready_flag);
|
||||||
@ -515,7 +515,7 @@ int bcol_basesmuma_binary_scatter_allgather_segment(bcol_function_args_t *input_
|
|||||||
/* important that these be set before my children
|
/* important that these be set before my children
|
||||||
* see the ready flag raised
|
* see the ready flag raised
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
/* root is finished */
|
/* root is finished */
|
||||||
@ -638,7 +638,7 @@ int bcol_basesmuma_binary_scatter_allgather_segment(bcol_function_args_t *input_
|
|||||||
my_ctl_pointer->n_sends = parent_ctl_pointer->n_sends;
|
my_ctl_pointer->n_sends = parent_ctl_pointer->n_sends;
|
||||||
|
|
||||||
/* set the memory barrier */
|
/* set the memory barrier */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
|
|
||||||
/* fire the ready flag */
|
/* fire the ready flag */
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
@ -696,7 +696,7 @@ int bcol_basesmuma_binary_scatter_allgather_segment(bcol_function_args_t *input_
|
|||||||
(size_t)length);
|
(size_t)length);
|
||||||
}
|
}
|
||||||
/* set the memory barrier to ensure completion */
|
/* set the memory barrier to ensure completion */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
/* signal that I am done */
|
/* signal that I am done */
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
/* set my status */
|
/* set my status */
|
||||||
@ -746,14 +746,14 @@ int bcol_basesmuma_binary_scatter_allgather_segment(bcol_function_args_t *input_
|
|||||||
local_offset = my_ctl_pointer->offset_zip;
|
local_offset = my_ctl_pointer->offset_zip;
|
||||||
/* compute the correct length */
|
/* compute the correct length */
|
||||||
length = length*(1<<(start - 1));
|
length = length*(1<<(start - 1));
|
||||||
/* careful! skip over the MB() to avoid the
|
/* careful! skip over the opal_atomic_wmb () to avoid the
|
||||||
* cost on every re-entry
|
* cost on every re-entry
|
||||||
*/
|
*/
|
||||||
goto Loop;
|
goto Loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
/* I am ready, set the flag */
|
/* I am ready, set the flag */
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
@ -813,7 +813,7 @@ int bcol_basesmuma_binary_scatter_allgather_segment(bcol_function_args_t *input_
|
|||||||
/* bump the ready flag */
|
/* bump the ready flag */
|
||||||
ready_flag++;
|
ready_flag++;
|
||||||
/* ensure completion */
|
/* ensure completion */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
|
|
||||||
/* fire the flag for the next level */
|
/* fire the flag for the next level */
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
|
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
|
||||||
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
||||||
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2013-2014 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -698,7 +698,7 @@ int bcol_basesmuma_k_nomial_gather(bcol_function_args_t *input_args,
|
|||||||
exchange_node->rank_exchanges[i][j], buff_offset + exchange_node->payload_info[i][j].r_offset,
|
exchange_node->rank_exchanges[i][j], buff_offset + exchange_node->payload_info[i][j].r_offset,
|
||||||
exchange_node->payload_info[i][j].r_len*pack_len);
|
exchange_node->payload_info[i][j].r_len*pack_len);
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
knt++;
|
knt++;
|
||||||
if(knt == exchange_node->n_actual_exchanges) {
|
if(knt == exchange_node->n_actual_exchanges) {
|
||||||
/* this is the trick to break the root out,
|
/* this is the trick to break the root out,
|
||||||
@ -1063,7 +1063,7 @@ int bcol_basesmuma_k_nomial_gather(bcol_function_args_t *input_args,
|
|||||||
fprintf(stderr,"hello n_actual_exch is %d \n",
|
fprintf(stderr,"hello n_actual_exch is %d \n",
|
||||||
exchange_node->n_actual_exchanges);
|
exchange_node->n_actual_exchanges);
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->gflag = ready_flag;
|
my_ctl_pointer->gflag = ready_flag;
|
||||||
|
|
||||||
goto LAST_STEP;
|
goto LAST_STEP;
|
||||||
|
@ -215,7 +215,7 @@ int bcol_basesmuma_lmsg_scatter_allgather_portals_bcast_old(bcol_function_args_t
|
|||||||
/* important that these be set before my children
|
/* important that these be set before my children
|
||||||
* see the ready flag raised
|
* see the ready flag raised
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
/* Wait for my scatter partner */
|
/* Wait for my scatter partner */
|
||||||
@ -342,7 +342,7 @@ Probe:
|
|||||||
/* important that these be set before my children
|
/* important that these be set before my children
|
||||||
* see the ready flag raised
|
* see the ready flag raised
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
wait_for_peers(my_rank, my_lmsg_ctl_pointer->n_sends, data_buffs,
|
wait_for_peers(my_rank, my_lmsg_ctl_pointer->n_sends, data_buffs,
|
||||||
@ -415,7 +415,7 @@ Probe:
|
|||||||
msg_posted = true;
|
msg_posted = true;
|
||||||
/* set the memory barrier to ensure completion
|
/* set the memory barrier to ensure completion
|
||||||
* and signal I am done getting scatter data*/
|
* and signal I am done getting scatter data*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
wait_for_peers(my_rank, my_lmsg_ctl_pointer->n_sends, data_buffs,
|
wait_for_peers(my_rank, my_lmsg_ctl_pointer->n_sends, data_buffs,
|
||||||
@ -441,7 +441,7 @@ Probe:
|
|||||||
remote_offset, length);
|
remote_offset, length);
|
||||||
|
|
||||||
/* signal that I am done reading data from parent */
|
/* signal that I am done reading data from parent */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -499,7 +499,7 @@ Allgather:
|
|||||||
|
|
||||||
|
|
||||||
ready_flag++;
|
ready_flag++;
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -533,7 +533,7 @@ Allgather:
|
|||||||
local_sg_offset, length);
|
local_sg_offset, length);
|
||||||
|
|
||||||
ready_flag++;
|
ready_flag++;
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
/* Block until partner completed this level of recursive-doubling stage */
|
/* Block until partner completed this level of recursive-doubling stage */
|
||||||
@ -753,7 +753,7 @@ int bcol_basesmuma_lmsg_scatter_allgather_portals_bcast(bcol_function_args_t *in
|
|||||||
/* important that these be set before my children
|
/* important that these be set before my children
|
||||||
* see the ready flag raised
|
* see the ready flag raised
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[BCAST_FLAGS] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAGS] = ready_flag;
|
||||||
BASESMUMA_VERBOSE(1,("I am the root(ctl_pointer %x) of the data flag value %d",my_ctl_pointer, my_ctl_pointer->flag));
|
BASESMUMA_VERBOSE(1,("I am the root(ctl_pointer %x) of the data flag value %d",my_ctl_pointer, my_ctl_pointer->flag));
|
||||||
/* Wait for my scatter partner */
|
/* Wait for my scatter partner */
|
||||||
@ -879,7 +879,7 @@ Probe:
|
|||||||
/* important that these be set before my children
|
/* important that these be set before my children
|
||||||
* see the ready flag raised
|
* see the ready flag raised
|
||||||
*/
|
*/
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
||||||
|
|
||||||
wait_for_peers_nb(my_rank, my_ctl_pointer->n_sends, ctl_structs,
|
wait_for_peers_nb(my_rank, my_ctl_pointer->n_sends, ctl_structs,
|
||||||
@ -949,7 +949,7 @@ Probe:
|
|||||||
);
|
);
|
||||||
msg_posted = true;
|
msg_posted = true;
|
||||||
/* set the memory barrier to ensure completion */
|
/* set the memory barrier to ensure completion */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
/* signal that I am done */
|
/* signal that I am done */
|
||||||
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
||||||
|
|
||||||
@ -977,7 +977,7 @@ Probe:
|
|||||||
remote_offset, length);
|
remote_offset, length);
|
||||||
|
|
||||||
/* signal that I am done reading data from parent */
|
/* signal that I am done reading data from parent */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1034,7 +1034,7 @@ Allgather:
|
|||||||
}
|
}
|
||||||
|
|
||||||
ready_flag++;
|
ready_flag++;
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
||||||
|
|
||||||
for( i = 1; i < pow_2_levels; i++) {
|
for( i = 1; i < pow_2_levels; i++) {
|
||||||
@ -1064,7 +1064,7 @@ Allgather:
|
|||||||
local_sg_offset, length);
|
local_sg_offset, length);
|
||||||
|
|
||||||
ready_flag++;
|
ready_flag++;
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
my_ctl_pointer->flags[BCAST_FLAG] = ready_flag;
|
||||||
|
|
||||||
/* Block until partner is at this level of recursive-doubling stage */
|
/* Block until partner is at this level of recursive-doubling stage */
|
||||||
@ -1257,7 +1257,7 @@ Extra :
|
|||||||
rc = sm_portals_root_scatter(sg_state);
|
rc = sm_portals_root_scatter(sg_state);
|
||||||
|
|
||||||
/* gvm Fix: Redudant
|
/* gvm Fix: Redudant
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
sg_state->my_ctl_pointer->flag = sg_state->ready_flag;
|
sg_state->my_ctl_pointer->flag = sg_state->ready_flag;
|
||||||
@ -1433,7 +1433,7 @@ Scatter_parent_wait:
|
|||||||
|
|
||||||
/* signal that I am done reading data from parent */
|
/* signal that I am done reading data from parent */
|
||||||
/*
|
/*
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
*/
|
*/
|
||||||
sg_state->my_ctl_pointer->flag = sg_state->ready_flag;
|
sg_state->my_ctl_pointer->flag = sg_state->ready_flag;
|
||||||
}
|
}
|
||||||
@ -1487,7 +1487,7 @@ Allgather:
|
|||||||
BASESMUMA_VERBOSE(5,("Done with allgather phase"));
|
BASESMUMA_VERBOSE(5,("Done with allgather phase"));
|
||||||
/* I reached an allgather phase */
|
/* I reached an allgather phase */
|
||||||
sg_state->ready_flag++;
|
sg_state->ready_flag++;
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
sg_state->my_ctl_pointer->flag = sg_state->ready_flag;
|
sg_state->my_ctl_pointer->flag = sg_state->ready_flag;
|
||||||
|
|
||||||
rc = sm_portals_bcasts_allgather_phase(sg_state);
|
rc = sm_portals_bcasts_allgather_phase(sg_state);
|
||||||
@ -1840,7 +1840,7 @@ Allgather:
|
|||||||
}
|
}
|
||||||
|
|
||||||
sg_state->ready_flag++;
|
sg_state->ready_flag++;
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
sg_state->my_ctl_pointer->flag = sg_state->ready_flag;
|
sg_state->my_ctl_pointer->flag = sg_state->ready_flag;
|
||||||
|
|
||||||
rc = sm_portals_bcasts_allgather_phase(sg_state);
|
rc = sm_portals_bcasts_allgather_phase(sg_state);
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
|
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
|
||||||
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
||||||
|
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
|
||||||
|
* reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -214,7 +216,7 @@ int bcol_basesmuma_lmsg_bcast_k_nomial_anyroot(bcol_function_args_t *input_args,
|
|||||||
mca_bcol_basesmuma_portals_get_msg(cs, parent_lmsg_ctl_pointer, userbuf, pack_len);
|
mca_bcol_basesmuma_portals_get_msg(cs, parent_lmsg_ctl_pointer, userbuf, pack_len);
|
||||||
|
|
||||||
/* set the memory barrier to ensure completion */
|
/* set the memory barrier to ensure completion */
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
/* signal that I am done */
|
/* signal that I am done */
|
||||||
my_ctl_pointer->flag = ready_flag;
|
my_ctl_pointer->flag = ready_flag;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009-2013 Oak Ridge National Laboratory. All rights reserved.
|
* Copyright (c) 2009-2013 Oak Ridge National Laboratory. All rights reserved.
|
||||||
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
||||||
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2013-2014 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -91,7 +91,7 @@ int bcol_basesmuma_recursive_double_barrier(bcol_function_args_t *input_args,
|
|||||||
my_ctl->flag = -1;
|
my_ctl->flag = -1;
|
||||||
/* don't need to set this flag anymore */
|
/* don't need to set this flag anymore */
|
||||||
my_ctl->sequence_number = sequence_number;
|
my_ctl->sequence_number = sequence_number;
|
||||||
/* MB();*/
|
/* opal_atomic_wmb ();*/
|
||||||
|
|
||||||
if(0 < my_exchange_node->n_extra_sources) {
|
if(0 < my_exchange_node->n_extra_sources) {
|
||||||
if (EXCHANGE_NODE == my_exchange_node->node_type) {
|
if (EXCHANGE_NODE == my_exchange_node->node_type) {
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
* Copyright (c) 2009-2012 UT-Battelle, LLC. All rights reserved.
|
* Copyright (c) 2009-2012 UT-Battelle, LLC. All rights reserved.
|
||||||
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
||||||
* Copyright (c) 2013 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2013 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
|
||||||
|
* reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -72,7 +74,7 @@ int bcol_basesmuma_rd_nb_barrier_init_admin(
|
|||||||
/* signal that I have arrived */
|
/* signal that I have arrived */
|
||||||
my_ctl->flag = -1;
|
my_ctl->flag = -1;
|
||||||
|
|
||||||
MB();
|
opal_atomic_wmb ();
|
||||||
|
|
||||||
/* don't need to set this flag anymore */
|
/* don't need to set this flag anymore */
|
||||||
my_ctl->sequence_number = bank_genaration;
|
my_ctl->sequence_number = bank_genaration;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user