1
1

Moving mca/common/netpatterns and commpaterns to ompi/patterns.

This commit was SVN r28035.
Этот коммит содержится в:
Pavel Shamis 2013-02-05 21:52:55 +00:00
родитель 57b21014f8
Коммит a31bc57849
51 изменённых файлов: 235 добавлений и 474 удалений

Просмотреть файл

@ -182,6 +182,8 @@ include tools/Makefile.am
include mpi/Makefile.am include mpi/Makefile.am
include mpi/man/man3/Makefile.extra include mpi/man/man3/Makefile.extra
include mpiext/Makefile.am include mpiext/Makefile.am
include patterns/net/Makefile.am
include patterns/comm/Makefile.am
# Ensure that the man page directory exists before we try to make man # Ensure that the man page directory exists before we try to make man
# page files (because ompi/mpi/man/man3 has no config.status-generated # page files (because ompi/mpi/man/man3 has no config.status-generated

Просмотреть файл

@ -51,9 +51,7 @@ mcacomponent_LTLIBRARIES = $(component_install)
mca_bcol_basesmuma_la_SOURCES = $(sources) mca_bcol_basesmuma_la_SOURCES = $(sources)
mca_bcol_basesmuma_la_LDFLAGS = -module -avoid-version $(btl_portals_LDFLAGS) mca_bcol_basesmuma_la_LDFLAGS = -module -avoid-version $(btl_portals_LDFLAGS)
mca_bcol_basesmuma_la_LIBADD = \ mca_bcol_basesmuma_la_LIBADD = \
$(btl_portals_LIBS) \ $(btl_portals_LIBS)
$(top_ompi_builddir)/ompi/mca/common/netpatterns/libmca_common_netpatterns.la \
$(top_ompi_builddir)/ompi/mca/common/commpatterns/libmca_common_commpatterns.la
noinst_LTLIBRARIES = $(component_noinst) noinst_LTLIBRARIES = $(component_noinst)

Просмотреть файл

@ -19,7 +19,7 @@
#include "ompi/mca/coll/ml/coll_ml_allocation.h" #include "ompi/mca/coll/ml/coll_ml_allocation.h"
#include "ompi/request/request.h" #include "ompi/request/request.h"
#include "ompi/proc/proc.h" #include "ompi/proc/proc.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h" #include "ompi/patterns/net/netpatterns.h"
#include "opal/mca/mca.h" #include "opal/mca/mca.h"
#include "opal/util/arch.h" #include "opal/util/arch.h"
@ -774,16 +774,16 @@ struct mca_bcol_basesmuma_module_t {
sm_buffer_mgmt colls_with_user_data; sm_buffer_mgmt colls_with_user_data;
/* recursive-doubling tree node */ /* recursive-doubling tree node */
mca_common_netpatterns_pair_exchange_node_t recursive_doubling_tree; netpatterns_pair_exchange_node_t recursive_doubling_tree;
/* k-nomial gather/allgather tree */ /* k-nomial gather/allgather tree */
mca_common_netpatterns_k_exchange_node_t knomial_allgather_tree; netpatterns_k_exchange_node_t knomial_allgather_tree;
/* fanin tree node - root is rank 0 */ /* fanin tree node - root is rank 0 */
mca_common_netpatterns_tree_node_t fanin_node; netpatterns_tree_node_t fanin_node;
/* fanout tree node - root is rank 0 */ /* fanout tree node - root is rank 0 */
mca_common_netpatterns_tree_node_t fanout_node; netpatterns_tree_node_t fanout_node;
/* index of blocking barrier memory region to use */ /* index of blocking barrier memory region to use */
int index_blocking_barrier_memory_bank; int index_blocking_barrier_memory_bank;
@ -792,18 +792,18 @@ struct mca_bcol_basesmuma_module_t {
int *comm_to_sm_map; int *comm_to_sm_map;
/* reduction fanout tree */ /* reduction fanout tree */
mca_common_netpatterns_tree_node_t* reduction_tree; netpatterns_tree_node_t* reduction_tree;
/* broadcast fanout tree */ /* broadcast fanout tree */
mca_common_netpatterns_tree_node_t* fanout_read_tree; netpatterns_tree_node_t* fanout_read_tree;
/* scatter - k-ary tree */ /* scatter - k-ary tree */
int scatter_kary_radix; int scatter_kary_radix;
mca_common_netpatterns_tree_node_t *scatter_kary_tree; netpatterns_tree_node_t *scatter_kary_tree;
/* Knomial exchange tree */ /* Knomial exchange tree */
/* Currently used for only large message reduce */ /* Currently used for only large message reduce */
mca_common_netpatterns_k_exchange_node_t knomial_exchange_tree; netpatterns_k_exchange_node_t knomial_exchange_tree;
/* sequence number offset - want to make sure that we start /* sequence number offset - want to make sure that we start
* id'ing collectives with id 0, so we can have simple * id'ing collectives with id 0, so we can have simple

Просмотреть файл

@ -135,7 +135,7 @@ int bcol_basesmuma_bcast(bcol_function_args_t *input_args,
volatile char* parent_data_pointer; volatile char* parent_data_pointer;
mca_bcol_basesmuma_header_t *my_ctl_pointer; mca_bcol_basesmuma_header_t *my_ctl_pointer;
volatile mca_bcol_basesmuma_header_t *parent_ctl_pointer; volatile mca_bcol_basesmuma_header_t *parent_ctl_pointer;
mca_common_netpatterns_tree_node_t* my_fanout_read_tree; netpatterns_tree_node_t* my_fanout_read_tree;
size_t pack_len = 0, dt_size; size_t pack_len = 0, dt_size;
void *data_addr = (void *)((unsigned char *)input_args->src_desc->data_addr ); void *data_addr = (void *)((unsigned char *)input_args->src_desc->data_addr );
@ -268,7 +268,7 @@ int bcol_basesmuma_hdl_zerocopy_bcast(bcol_function_args_t *input_args,
mca_bcol_basesmuma_module_t* bcol_module= mca_bcol_basesmuma_module_t* bcol_module=
(mca_bcol_basesmuma_module_t *)c_input_args->bcol_module; (mca_bcol_basesmuma_module_t *)c_input_args->bcol_module;
mca_common_netpatterns_tree_node_t* my_fanout_read_tree; netpatterns_tree_node_t* my_fanout_read_tree;
size_t pack_len = 0, dt_size; size_t pack_len = 0, dt_size;
void *data_addr = (void *)((unsigned char *)input_args->src_desc->data_addr); void *data_addr = (void *)((unsigned char *)input_args->src_desc->data_addr);

Просмотреть файл

@ -20,7 +20,7 @@
#include "ompi/mca/bcol/bcol.h" #include "ompi/mca/bcol/bcol.h"
#include "ompi/mca/bcol/base/base.h" #include "ompi/mca/bcol/base/base.h"
#include "ompi/mca/coll/ml/coll_ml.h" #include "ompi/mca/coll/ml/coll_ml.h"
#include "ompi/mca/common/commpatterns/common_coll_ops.h" #include "ompi/patterns/comm/coll_ops.h"
#include "opal/dss/dss.h" #include "opal/dss/dss.h"

Просмотреть файл

@ -14,7 +14,7 @@
#include "ompi/constants.h" #include "ompi/constants.h"
#include "ompi/communicator/communicator.h" #include "ompi/communicator/communicator.h"
#include "ompi/mca/bcol/bcol.h" #include "ompi/mca/bcol/bcol.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h" #include "ompi/patterns/net/netpatterns.h"
#include "opal/sys/atomic.h" #include "opal/sys/atomic.h"
@ -52,7 +52,7 @@ static int bcol_basesmuma_fanin_new(bcol_function_args_t *input_args,
volatile mca_bcol_basesmuma_header_t *child_ctl; volatile mca_bcol_basesmuma_header_t *child_ctl;
mca_common_netpatterns_tree_node_t *my_tree_node = &(bcol_module->fanin_node); netpatterns_tree_node_t *my_tree_node = &(bcol_module->fanin_node);
/* Figure out - what instance of the basesmuma bcol I am */ /* Figure out - what instance of the basesmuma bcol I am */
sequence_number = input_args->sequence_num; sequence_number = input_args->sequence_num;
@ -134,7 +134,7 @@ static int bcol_basesmuma_fanin_new_progress(bcol_function_args_t *input_args,
volatile mca_bcol_basesmuma_header_t *child_ctl; volatile mca_bcol_basesmuma_header_t *child_ctl;
mca_common_netpatterns_tree_node_t *my_tree_node = &(bcol_module->fanin_node); netpatterns_tree_node_t *my_tree_node = &(bcol_module->fanin_node);
sequence_number = input_args->sequence_num; sequence_number = input_args->sequence_num;

Просмотреть файл

@ -14,7 +14,7 @@
#include "ompi/constants.h" #include "ompi/constants.h"
#include "ompi/communicator/communicator.h" #include "ompi/communicator/communicator.h"
#include "ompi/mca/bcol/bcol.h" #include "ompi/mca/bcol/bcol.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h" #include "ompi/patterns/net/netpatterns.h"
#include "opal/sys/atomic.h" #include "opal/sys/atomic.h"
@ -50,7 +50,7 @@ static int bcol_basesmuma_fanout_new(
volatile mca_bcol_basesmuma_header_t *parent_ctl; volatile mca_bcol_basesmuma_header_t *parent_ctl;
mca_common_netpatterns_tree_node_t *my_tree_node = &(bcol_module->fanin_node); netpatterns_tree_node_t *my_tree_node = &(bcol_module->fanin_node);
/* Figure out - what instance of the basesmuma bcol I am */ /* Figure out - what instance of the basesmuma bcol I am */
sequence_number = input_args->sequence_num; sequence_number = input_args->sequence_num;

Просмотреть файл

@ -20,7 +20,7 @@
#include "ompi/communicator/communicator.h" #include "ompi/communicator/communicator.h"
#include "ompi/mca/bcol/bcol.h" #include "ompi/mca/bcol/bcol.h"
#include "ompi/mca/bcol/base/base.h" #include "ompi/mca/bcol/base/base.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h" #include "ompi/patterns/net/netpatterns.h"
#include "opal/util/show_help.h" #include "opal/util/show_help.h"
#include "opal/align.h" #include "opal/align.h"
@ -217,7 +217,7 @@ static int load_recursive_knomial_info(mca_bcol_basesmuma_module_t
*sm_module) *sm_module)
{ {
int rc = OMPI_SUCCESS; int rc = OMPI_SUCCESS;
rc = mca_common_netpatterns_setup_recursive_knomial_tree_node( rc = netpatterns_setup_recursive_knomial_tree_node(
sm_module->super.sbgp_partner_module->group_size, sm_module->super.sbgp_partner_module->group_size,
sm_module->super.sbgp_partner_module->my_index, sm_module->super.sbgp_partner_module->my_index,
mca_bcol_basesmuma_component.k_nomial_radix, mca_bcol_basesmuma_component.k_nomial_radix,
@ -230,7 +230,7 @@ int bcol_basesmuma_setup_knomial_tree(mca_bcol_base_module_t *super)
{ {
mca_bcol_basesmuma_module_t *sm_module = (mca_bcol_basesmuma_module_t *) super; mca_bcol_basesmuma_module_t *sm_module = (mca_bcol_basesmuma_module_t *) super;
return mca_common_netpatterns_setup_recursive_knomial_allgather_tree_node( return netpatterns_setup_recursive_knomial_allgather_tree_node(
sm_module->super.sbgp_partner_module->group_size, sm_module->super.sbgp_partner_module->group_size,
sm_module->super.sbgp_partner_module->my_index, sm_module->super.sbgp_partner_module->my_index,
mca_bcol_basesmuma_component.k_nomial_radix, mca_bcol_basesmuma_component.k_nomial_radix,
@ -290,7 +290,7 @@ mca_bcol_basesmuma_comm_query(mca_sbgp_base_module_t *module, int *num_modules)
sm_module->reduction_tree = NULL; sm_module->reduction_tree = NULL;
sm_module->fanout_read_tree = NULL; sm_module->fanout_read_tree = NULL;
ret=mca_common_netpatterns_setup_recursive_doubling_tree_node( ret=netpatterns_setup_recursive_doubling_tree_node(
module->group_size,module->my_index, module->group_size,module->my_index,
&(sm_module->recursive_doubling_tree)); &(sm_module->recursive_doubling_tree));
if(OMPI_SUCCESS != ret) { if(OMPI_SUCCESS != ret) {
@ -302,7 +302,7 @@ mca_bcol_basesmuma_comm_query(mca_sbgp_base_module_t *module, int *num_modules)
/* setup the fanin tree - this is used only as part of a hierarchical /* setup the fanin tree - this is used only as part of a hierarchical
* barrier, so will set this up with rank 0 as the root */ * barrier, so will set this up with rank 0 as the root */
my_rank=module->my_index; my_rank=module->my_index;
ret=mca_common_netpatterns_setup_narray_tree(cs->radix_fanin, ret=netpatterns_setup_narray_tree(cs->radix_fanin,
my_rank,module->group_size,&(sm_module->fanin_node)); my_rank,module->group_size,&(sm_module->fanin_node));
if(OMPI_SUCCESS != ret) { if(OMPI_SUCCESS != ret) {
fprintf(stderr,"Error setting up fanin tree \n"); fprintf(stderr,"Error setting up fanin tree \n");
@ -312,7 +312,7 @@ mca_bcol_basesmuma_comm_query(mca_sbgp_base_module_t *module, int *num_modules)
/* setup the fanout tree - this is used only as part of a hierarchical /* setup the fanout tree - this is used only as part of a hierarchical
* barrier, so will set this up with rank 0 as the root */ * barrier, so will set this up with rank 0 as the root */
ret=mca_common_netpatterns_setup_narray_tree(cs->radix_fanout, ret=netpatterns_setup_narray_tree(cs->radix_fanout,
my_rank,module->group_size,&(sm_module->fanout_node)); my_rank,module->group_size,&(sm_module->fanout_node));
if(OMPI_SUCCESS != ret) { if(OMPI_SUCCESS != ret) {
fprintf(stderr,"Error setting up fanout tree \n"); fprintf(stderr,"Error setting up fanout tree \n");
@ -329,14 +329,14 @@ mca_bcol_basesmuma_comm_query(mca_sbgp_base_module_t *module, int *num_modules)
bcast_radix = cs->radix_read_tree; bcast_radix = cs->radix_read_tree;
/* initialize fan-out read tree */ /* initialize fan-out read tree */
sm_module->fanout_read_tree=(mca_common_netpatterns_tree_node_t*) malloc( sm_module->fanout_read_tree=(netpatterns_tree_node_t*) malloc(
sizeof(mca_common_netpatterns_tree_node_t)*module->group_size); sizeof(netpatterns_tree_node_t)*module->group_size);
if( NULL == sm_module->fanout_read_tree ) { if( NULL == sm_module->fanout_read_tree ) {
goto Error; goto Error;
} }
for(i = 0; i < module->group_size; i++){ for(i = 0; i < module->group_size; i++){
ret = mca_common_netpatterns_setup_narray_tree(bcast_radix, ret = netpatterns_setup_narray_tree(bcast_radix,
i, module->group_size, &(sm_module->fanout_read_tree[i])); i, module->group_size, &(sm_module->fanout_read_tree[i]));
if(OMPI_SUCCESS != ret) { if(OMPI_SUCCESS != ret) {
goto Error; goto Error;
@ -359,13 +359,13 @@ mca_bcol_basesmuma_comm_query(mca_sbgp_base_module_t *module, int *num_modules)
*/ */
/* initialize reduction tree */ /* initialize reduction tree */
sm_module->reduction_tree=(mca_common_netpatterns_tree_node_t *) malloc( sm_module->reduction_tree=(netpatterns_tree_node_t *) malloc(
sizeof(mca_common_netpatterns_tree_node_t )*module->group_size); sizeof(netpatterns_tree_node_t )*module->group_size);
if( NULL == sm_module->reduction_tree ) { if( NULL == sm_module->reduction_tree ) {
goto Error; goto Error;
} }
ret=mca_common_netpatterns_setup_multinomial_tree( ret=netpatterns_setup_multinomial_tree(
cs->order_reduction_tree,module->group_size, cs->order_reduction_tree,module->group_size,
sm_module->reduction_tree); sm_module->reduction_tree);
if( MPI_SUCCESS != ret ) { if( MPI_SUCCESS != ret ) {
@ -389,7 +389,7 @@ mca_bcol_basesmuma_comm_query(mca_sbgp_base_module_t *module, int *num_modules)
*/ */
sm_module->scatter_kary_radix=cs->scatter_kary_radix; sm_module->scatter_kary_radix=cs->scatter_kary_radix;
sm_module->scatter_kary_tree=NULL; sm_module->scatter_kary_tree=NULL;
ret=mca_common_netpatterns_setup_narray_tree_contigous_ranks( ret=netpatterns_setup_narray_tree_contigous_ranks(
sm_module->scatter_kary_radix, sm_module->scatter_kary_radix,
sm_module->super.sbgp_partner_module->group_size, sm_module->super.sbgp_partner_module->group_size,
&(sm_module->scatter_kary_tree)); &(sm_module->scatter_kary_tree));

Просмотреть файл

@ -17,7 +17,7 @@
#include "ompi/mca/bcol/bcol.h" #include "ompi/mca/bcol/bcol.h"
#include "bcol_basesmuma.h" #include "bcol_basesmuma.h"
#include "opal/sys/atomic.h" #include "opal/sys/atomic.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h" #include "ompi/patterns/net/netpatterns.h"
/* /*
* Initialize nonblocking barrier. This is code specific for handling * Initialize nonblocking barrier. This is code specific for handling
@ -35,7 +35,7 @@ int bcol_basesmuma_rd_nb_barrier_init_admin(
int ret=OMPI_SUCCESS, idx, leading_dim, loop_cnt, exchange; int ret=OMPI_SUCCESS, idx, leading_dim, loop_cnt, exchange;
int pair_rank; int pair_rank;
mca_bcol_basesmuma_ctl_struct_t **ctl_structs; mca_bcol_basesmuma_ctl_struct_t **ctl_structs;
mca_common_netpatterns_pair_exchange_node_t *my_exchange_node; netpatterns_pair_exchange_node_t *my_exchange_node;
int extra_rank, my_rank, pow_2; int extra_rank, my_rank, pow_2;
mca_bcol_basesmuma_ctl_struct_t volatile *partner_ctl; mca_bcol_basesmuma_ctl_struct_t volatile *partner_ctl;
mca_bcol_basesmuma_ctl_struct_t volatile *my_ctl; mca_bcol_basesmuma_ctl_struct_t volatile *my_ctl;
@ -205,7 +205,7 @@ int bcol_basesmuma_rd_nb_barrier_progress_admin(
int ret=OMPI_SUCCESS, idx, leading_dim, loop_cnt, exchange; int ret=OMPI_SUCCESS, idx, leading_dim, loop_cnt, exchange;
int pair_rank, start_index, restart_phase; int pair_rank, start_index, restart_phase;
mca_bcol_basesmuma_ctl_struct_t **ctl_structs; mca_bcol_basesmuma_ctl_struct_t **ctl_structs;
mca_common_netpatterns_pair_exchange_node_t *my_exchange_node; netpatterns_pair_exchange_node_t *my_exchange_node;
int extra_rank, my_rank, pow_2; int extra_rank, my_rank, pow_2;
mca_bcol_basesmuma_ctl_struct_t volatile *partner_ctl; mca_bcol_basesmuma_ctl_struct_t volatile *partner_ctl;
mca_bcol_basesmuma_ctl_struct_t volatile *my_ctl; mca_bcol_basesmuma_ctl_struct_t volatile *my_ctl;

Просмотреть файл

@ -55,7 +55,7 @@ int bcol_basesmuma_k_nomial_barrier_init(bcol_function_args_t *input_args,
int flag_offset = 0; int flag_offset = 0;
volatile int8_t ready_flag; volatile int8_t ready_flag;
mca_bcol_basesmuma_module_t *bcol_module = (mca_bcol_basesmuma_module_t *) const_args->bcol_module; mca_bcol_basesmuma_module_t *bcol_module = (mca_bcol_basesmuma_module_t *) const_args->bcol_module;
mca_common_netpatterns_k_exchange_node_t *exchange_node = &bcol_module->knomial_allgather_tree; netpatterns_k_exchange_node_t *exchange_node = &bcol_module->knomial_allgather_tree;
mca_bcol_basesmuma_component_t *cm = &mca_bcol_basesmuma_component; mca_bcol_basesmuma_component_t *cm = &mca_bcol_basesmuma_component;
uint32_t buffer_index = input_args->buffer_index; uint32_t buffer_index = input_args->buffer_index;
int *active_requests = int *active_requests =
@ -244,7 +244,7 @@ int bcol_basesmuma_k_nomial_barrier_progress(bcol_function_args_t *input_args,
int flag_offset; int flag_offset;
volatile int8_t ready_flag; volatile int8_t ready_flag;
mca_bcol_basesmuma_module_t *bcol_module = (mca_bcol_basesmuma_module_t *) const_args->bcol_module; mca_bcol_basesmuma_module_t *bcol_module = (mca_bcol_basesmuma_module_t *) const_args->bcol_module;
mca_common_netpatterns_k_exchange_node_t *exchange_node = &bcol_module->knomial_allgather_tree; netpatterns_k_exchange_node_t *exchange_node = &bcol_module->knomial_allgather_tree;
mca_bcol_basesmuma_component_t *cm = &mca_bcol_basesmuma_component; mca_bcol_basesmuma_component_t *cm = &mca_bcol_basesmuma_component;
uint32_t buffer_index = input_args->buffer_index; uint32_t buffer_index = input_args->buffer_index;
int *active_requests = int *active_requests =

Просмотреть файл

@ -22,7 +22,7 @@
#include "ompi/mca/mpool/base/base.h" #include "ompi/mca/mpool/base/base.h"
#include "ompi/mca/bcol/bcol.h" #include "ompi/mca/bcol/bcol.h"
#include "ompi/mca/bcol/base/base.h" #include "ompi/mca/bcol/base/base.h"
#include "ompi/mca/common/commpatterns/common_coll_ops.h" #include "ompi/patterns/comm/coll_ops.h"
#include "opal/class/opal_object.h" #include "opal/class/opal_object.h"
#include "opal/dss/dss.h" #include "opal/dss/dss.h"

Просмотреть файл

@ -19,7 +19,7 @@
#include <errno.h> #include <errno.h>
#include "ompi/proc/proc.h" #include "ompi/proc/proc.h"
#include "ompi/mca/common/commpatterns/common_coll_ops.h" #include "ompi/patterns/comm/coll_ops.h"
#include "opal/dss/dss.h" #include "opal/dss/dss.h"
#include "opal/util/error.h" #include "opal/util/error.h"

Просмотреть файл

@ -20,7 +20,7 @@
#include "ompi/datatype/ompi_datatype.h" #include "ompi/datatype/ompi_datatype.h"
#include "ompi/op/op.h" #include "ompi/op/op.h"
#include "ompi/include/ompi/constants.h" #include "ompi/include/ompi/constants.h"
#include "ompi/mca/common/netpatterns/common_netpatterns_knomial_tree.h" #include "ompi/patterns/net/netpatterns_knomial_tree.h"
#include <limits.h> #include <limits.h>

Просмотреть файл

@ -364,16 +364,16 @@ struct mca_bcol_iboffload_module_t {
opal_list_t collfrag_pending; opal_list_t collfrag_pending;
/* recursive-doubling tree node */ /* recursive-doubling tree node */
mca_common_netpatterns_pair_exchange_node_t recursive_doubling_tree; netpatterns_pair_exchange_node_t recursive_doubling_tree;
/* N exchange tree */ /* N exchange tree */
mca_common_netpatterns_pair_exchange_node_t n_exchange_tree; netpatterns_pair_exchange_node_t n_exchange_tree;
/* Knomial exchange tree */ /* Knomial exchange tree */
mca_common_netpatterns_k_exchange_node_t knomial_exchange_tree; netpatterns_k_exchange_node_t knomial_exchange_tree;
/* Knomial exchange tree */ /* Knomial exchange tree */
mca_common_netpatterns_k_exchange_node_t knomial_allgather_tree; netpatterns_k_exchange_node_t knomial_allgather_tree;
/* The array will keep pre-calculated task consumption per /* The array will keep pre-calculated task consumption per
* algorithm * algorithm

Просмотреть файл

@ -54,7 +54,7 @@ int mca_bcol_iboffload_barrier_intra_recursive_doubling(
mca_bcol_iboffload_frag_t *send_fragment = NULL, mca_bcol_iboffload_frag_t *send_fragment = NULL,
*preposted_recv_frag = NULL; *preposted_recv_frag = NULL;
mca_common_netpatterns_pair_exchange_node_t *my_exchange_node = netpatterns_pair_exchange_node_t *my_exchange_node =
&iboffload->recursive_doubling_tree; &iboffload->recursive_doubling_tree;
IBOFFLOAD_VERBOSE(10, ("Calling for mca_bcol_iboffload_barrier_intra_recursive_doubling.\n")); IBOFFLOAD_VERBOSE(10, ("Calling for mca_bcol_iboffload_barrier_intra_recursive_doubling.\n"));
@ -364,7 +364,7 @@ int mca_bcol_iboffload_nb_memory_service_barrier_intra(bcol_function_args_t *inp
/* Recursive K - ing*/ /* Recursive K - ing*/
static int recursive_knomial_start_connections(struct mca_bcol_iboffload_module_t *iboffload) static int recursive_knomial_start_connections(struct mca_bcol_iboffload_module_t *iboffload)
{ {
mca_common_netpatterns_k_exchange_node_t *my_exchange_node = netpatterns_k_exchange_node_t *my_exchange_node =
&iboffload->knomial_exchange_tree; &iboffload->knomial_exchange_tree;
int k, i, n_exchanges = my_exchange_node->n_exchanges, int k, i, n_exchanges = my_exchange_node->n_exchanges,
**exchanges = my_exchange_node->rank_exchanges, **exchanges = my_exchange_node->rank_exchanges,
@ -442,7 +442,7 @@ static int mca_bcol_iboffload_barrier_intra_recursive_knomial(
mca_bcol_iboffload_frag_t *send_fragment = NULL, mca_bcol_iboffload_frag_t *send_fragment = NULL,
*preposted_recv_frag = NULL; *preposted_recv_frag = NULL;
mca_common_netpatterns_k_exchange_node_t *my_exchange_node = netpatterns_k_exchange_node_t *my_exchange_node =
&iboffload->knomial_exchange_tree; &iboffload->knomial_exchange_tree;
IBOFFLOAD_VERBOSE(10, ("Calling for mca_bcol_iboffload_barrier_intra_recursive_knomial. Node type %d\n", my_exchange_node->node_type)); IBOFFLOAD_VERBOSE(10, ("Calling for mca_bcol_iboffload_barrier_intra_recursive_knomial. Node type %d\n", my_exchange_node->node_type));
@ -706,7 +706,7 @@ int mca_bcol_iboffload_barrier_intra_recursive_knomial_start(
int mca_bcol_iboffload_rec_doubling_start_connections(mca_bcol_iboffload_module_t *iboffload) int mca_bcol_iboffload_rec_doubling_start_connections(mca_bcol_iboffload_module_t *iboffload)
{ {
mca_common_netpatterns_pair_exchange_node_t *my_exchange_node = netpatterns_pair_exchange_node_t *my_exchange_node =
&iboffload->recursive_doubling_tree; &iboffload->recursive_doubling_tree;
int i, n_exchanges = my_exchange_node->n_exchanges, int i, n_exchanges = my_exchange_node->n_exchanges,

Просмотреть файл

@ -203,7 +203,7 @@ int mca_bcol_iboffload_small_msg_bcast_progress(
static int mca_bcol_iboffload_small_msg_bcast_exec(mca_bcol_iboffload_module_t *iboffload_module, static int mca_bcol_iboffload_small_msg_bcast_exec(mca_bcol_iboffload_module_t *iboffload_module,
mca_bcol_iboffload_collreq_t *coll_request) mca_bcol_iboffload_collreq_t *coll_request)
{ {
mca_common_netpatterns_pair_exchange_node_t *recursive_doubling_tree = netpatterns_pair_exchange_node_t *recursive_doubling_tree =
&iboffload_module->recursive_doubling_tree; &iboffload_module->recursive_doubling_tree;
int rc, int rc,
@ -396,7 +396,7 @@ int mca_bcol_iboffload_small_msg_bcast_intra(bcol_function_args_t *fn_arguments,
static int mca_bcol_iboffload_small_msg_bcast_extra_exec(mca_bcol_iboffload_module_t *iboffload_module, static int mca_bcol_iboffload_small_msg_bcast_extra_exec(mca_bcol_iboffload_module_t *iboffload_module,
mca_bcol_iboffload_collreq_t *coll_request) mca_bcol_iboffload_collreq_t *coll_request)
{ {
mca_common_netpatterns_pair_exchange_node_t *recursive_doubling_tree = netpatterns_pair_exchange_node_t *recursive_doubling_tree =
&iboffload_module->recursive_doubling_tree; &iboffload_module->recursive_doubling_tree;
int rc, int rc,
@ -617,7 +617,7 @@ do {
static int mca_bcol_iboffload_bcast_scatter_allgather_exec(mca_bcol_iboffload_module_t *iboffload_module, static int mca_bcol_iboffload_bcast_scatter_allgather_exec(mca_bcol_iboffload_module_t *iboffload_module,
mca_bcol_iboffload_collreq_t *coll_request) mca_bcol_iboffload_collreq_t *coll_request)
{ {
mca_common_netpatterns_pair_exchange_node_t *recursive_doubling_tree = netpatterns_pair_exchange_node_t *recursive_doubling_tree =
&iboffload_module->recursive_doubling_tree; &iboffload_module->recursive_doubling_tree;
int rc, int rc,
@ -857,7 +857,7 @@ int mca_bcol_iboffload_bcast_scatter_allgather_intra(bcol_function_args_t *fn_ar
static int mca_bcol_iboffload_bcast_scatter_allgather_extra_exec(mca_bcol_iboffload_module_t *iboffload_module, static int mca_bcol_iboffload_bcast_scatter_allgather_extra_exec(mca_bcol_iboffload_module_t *iboffload_module,
mca_bcol_iboffload_collreq_t *coll_request) mca_bcol_iboffload_collreq_t *coll_request)
{ {
mca_common_netpatterns_pair_exchange_node_t *recursive_doubling_tree = netpatterns_pair_exchange_node_t *recursive_doubling_tree =
&iboffload_module->recursive_doubling_tree; &iboffload_module->recursive_doubling_tree;
int rc, dst; int rc, dst;

Просмотреть файл

@ -364,7 +364,7 @@ int bcol_iboffload_binomial_root_to_src(int group_root, int my_rank,
static inline void bcol_iboffload_setup_binomial_connection(mca_bcol_iboffload_module_t *iboffload) static inline void bcol_iboffload_setup_binomial_connection(mca_bcol_iboffload_module_t *iboffload)
{ {
mca_common_netpatterns_pair_exchange_node_t *my_exchange_node = netpatterns_pair_exchange_node_t *my_exchange_node =
&iboffload->recursive_doubling_tree; &iboffload->recursive_doubling_tree;
int i, n_exchanges = my_exchange_node->n_exchanges, int i, n_exchanges = my_exchange_node->n_exchanges,

Просмотреть файл

@ -178,8 +178,8 @@ mca_bcol_iboffload_module_destruct(mca_bcol_iboffload_module_t *module)
free(module->endpoints); free(module->endpoints);
} }
mca_common_netpatterns_free_recursive_doubling_tree_node(&module->n_exchange_tree); netpatterns_free_recursive_doubling_tree_node(&module->n_exchange_tree);
mca_common_netpatterns_free_recursive_doubling_tree_node(&module->recursive_doubling_tree); netpatterns_free_recursive_doubling_tree_node(&module->recursive_doubling_tree);
OBJ_RELEASE(module->device->net_context); OBJ_RELEASE(module->device->net_context);
OBJ_RELEASE(module->device); OBJ_RELEASE(module->device);
@ -745,7 +745,7 @@ int mca_bcol_iboffload_setup_knomial_tree(mca_bcol_base_module_t *super)
{ {
int rc; int rc;
mca_bcol_iboffload_module_t *ib_module = (mca_bcol_iboffload_module_t *) super; mca_bcol_iboffload_module_t *ib_module = (mca_bcol_iboffload_module_t *) super;
rc = mca_common_netpatterns_setup_recursive_knomial_allgather_tree_node( rc = netpatterns_setup_recursive_knomial_allgather_tree_node(
ib_module->super.sbgp_partner_module->group_size, ib_module->super.sbgp_partner_module->group_size,
ib_module->super.sbgp_partner_module->my_index, ib_module->super.sbgp_partner_module->my_index,
mca_bcol_iboffload_component.k_nomial_radix, mca_bcol_iboffload_component.k_nomial_radix,
@ -1090,7 +1090,7 @@ mca_bcol_iboffload_comm_query(mca_sbgp_base_module_t *sbgp, int *num_modules)
/* Barrier initialization - recuresive doubling */ /* Barrier initialization - recuresive doubling */
#if 1 #if 1
if (OMPI_SUCCESS != if (OMPI_SUCCESS !=
mca_common_netpatterns_setup_recursive_doubling_tree_node( netpatterns_setup_recursive_doubling_tree_node(
iboffload_module->group_size, my_rank, iboffload_module->group_size, my_rank,
&iboffload_module->recursive_doubling_tree)) { &iboffload_module->recursive_doubling_tree)) {
IBOFFLOAD_ERROR(("Failed to setup recursive doubling tree," IBOFFLOAD_ERROR(("Failed to setup recursive doubling tree,"
@ -1101,7 +1101,7 @@ mca_bcol_iboffload_comm_query(mca_sbgp_base_module_t *sbgp, int *num_modules)
/* Barrier initialization - N exchange tree */ /* Barrier initialization - N exchange tree */
if (OMPI_SUCCESS != if (OMPI_SUCCESS !=
mca_common_netpatterns_setup_recursive_doubling_n_tree_node( netpatterns_setup_recursive_doubling_n_tree_node(
iboffload_module->group_size, my_rank, iboffload_module->group_size, my_rank,
cm->exchange_tree_order, cm->exchange_tree_order,
&iboffload_module->n_exchange_tree)) { &iboffload_module->n_exchange_tree)) {
@ -1113,7 +1113,7 @@ mca_bcol_iboffload_comm_query(mca_sbgp_base_module_t *sbgp, int *num_modules)
/* Recursive K-ing initialization - Knomial exchange tree */ /* Recursive K-ing initialization - Knomial exchange tree */
if (OMPI_SUCCESS != if (OMPI_SUCCESS !=
mca_common_netpatterns_setup_recursive_knomial_tree_node( netpatterns_setup_recursive_knomial_tree_node(
iboffload_module->group_size, my_rank, iboffload_module->group_size, my_rank,
cm->knomial_tree_order, cm->knomial_tree_order,
&iboffload_module->knomial_exchange_tree)) { &iboffload_module->knomial_exchange_tree)) {
@ -1156,7 +1156,7 @@ mca_bcol_iboffload_comm_query(mca_sbgp_base_module_t *sbgp, int *num_modules)
} }
/* that should take care of that */ /* that should take care of that */
if (OMPI_SUCCESS != if (OMPI_SUCCESS !=
mca_common_netpatterns_setup_recursive_knomial_allgather_tree_node( netpatterns_setup_recursive_knomial_allgather_tree_node(
iboffload_module->group_size, sbgp->group_list[my_rank], iboffload_module->group_size, sbgp->group_list[my_rank],
cm->k_nomial_radix, iboffload_module->super.list_n_connected, cm->k_nomial_radix, iboffload_module->super.list_n_connected,
&iboffload_module->knomial_allgather_tree)) { &iboffload_module->knomial_allgather_tree)) {

Просмотреть файл

@ -44,8 +44,7 @@ mcacomponentdir = $(pkglibdir)
mcacomponent_LTLIBRARIES = $(component_install) mcacomponent_LTLIBRARIES = $(component_install)
mca_bcol_ptpcoll_la_SOURCES = $(sources) mca_bcol_ptpcoll_la_SOURCES = $(sources)
mca_bcol_ptpcoll_la_LDFLAGS = -module -avoid-version mca_bcol_ptpcoll_la_LDFLAGS = -module -avoid-version
mca_bcol_ptpcoll_la_LIBADD = \ mca_bcol_ptpcoll_la_LIBADD =
$(top_ompi_builddir)/ompi/mca/common/netpatterns/libmca_common_netpatterns.la
noinst_LTLIBRARIES = $(component_noinst) noinst_LTLIBRARIES = $(component_noinst)
libmca_bcol_ptpcoll_la_SOURCES =$(sources) libmca_bcol_ptpcoll_la_SOURCES =$(sources)

Просмотреть файл

@ -20,7 +20,7 @@
#include "ompi/request/request.h" #include "ompi/request/request.h"
#include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/pml.h"
#include "ompi/mca/coll/ml/coll_ml_allocation.h" #include "ompi/mca/coll/ml/coll_ml_allocation.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h" #include "ompi/patterns/net/netpatterns.h"
BEGIN_C_DECLS BEGIN_C_DECLS
@ -297,7 +297,7 @@ struct mca_bcol_ptpcoll_module_t {
int full_narray_tree_num_leafs; int full_narray_tree_num_leafs;
/* Nary tree info */ /* Nary tree info */
mca_common_netpatterns_tree_node_t *narray_node; netpatterns_tree_node_t *narray_node;
/* if the rank in group, it keeps the extra peer. /* if the rank in group, it keeps the extra peer.
if the rank is extra, it keeps the proxy peer. if the rank is extra, it keeps the proxy peer.
@ -328,13 +328,13 @@ struct mca_bcol_ptpcoll_module_t {
/* number of extra peers , maximum k - 1*/ /* number of extra peers , maximum k - 1*/
int narray_knomial_proxy_num; int narray_knomial_proxy_num;
/* Narray-Knomial node information array */ /* Narray-Knomial node information array */
mca_common_netpatterns_narray_knomial_tree_node_t *narray_knomial_node; netpatterns_narray_knomial_tree_node_t *narray_knomial_node;
/* Knomial exchange tree */ /* Knomial exchange tree */
mca_common_netpatterns_k_exchange_node_t knomial_exchange_tree; netpatterns_k_exchange_node_t knomial_exchange_tree;
/* knomial allgather tree --- Do not disable, we need both /* knomial allgather tree --- Do not disable, we need both
different algorithms define recursive k - ing differently different algorithms define recursive k - ing differently
*/ */
mca_common_netpatterns_k_exchange_node_t knomial_allgather_tree; netpatterns_k_exchange_node_t knomial_allgather_tree;
/* Knomial allgather offsets */ /* Knomial allgather offsets */
int **allgather_offsets; int **allgather_offsets;

Просмотреть файл

@ -34,7 +34,7 @@ static int bcol_ptpcoll_barrier_recurs_knomial_new(
mca_bcol_ptpcoll_module_t *ptpcoll_module = mca_bcol_ptpcoll_module_t *ptpcoll_module =
(mca_bcol_ptpcoll_module_t *) const_args->bcol_module; (mca_bcol_ptpcoll_module_t *) const_args->bcol_module;
mca_common_netpatterns_k_exchange_node_t *my_exchange_node = netpatterns_k_exchange_node_t *my_exchange_node =
&ptpcoll_module->knomial_exchange_tree; &ptpcoll_module->knomial_exchange_tree;
int rc, k, pair_comm_rank, exchange, completed, int rc, k, pair_comm_rank, exchange, completed,
@ -223,7 +223,7 @@ static int bcol_ptpcoll_barrier_recurs_knomial_new_progress(
mca_bcol_ptpcoll_module_t *ptpcoll_module = mca_bcol_ptpcoll_module_t *ptpcoll_module =
(mca_bcol_ptpcoll_module_t *) const_args->bcol_module; (mca_bcol_ptpcoll_module_t *) const_args->bcol_module;
mca_common_netpatterns_k_exchange_node_t *my_exchange_node = netpatterns_k_exchange_node_t *my_exchange_node =
&ptpcoll_module->knomial_exchange_tree; &ptpcoll_module->knomial_exchange_tree;
int rc, k, tag, pair_comm_rank, exchange, int rc, k, tag, pair_comm_rank, exchange,
@ -371,7 +371,7 @@ static int bcol_ptpcoll_barrier_recurs_knomial_extra_new(
mca_bcol_ptpcoll_module_t *ptpcoll_module = mca_bcol_ptpcoll_module_t *ptpcoll_module =
(mca_bcol_ptpcoll_module_t *) const_args->bcol_module; (mca_bcol_ptpcoll_module_t *) const_args->bcol_module;
mca_common_netpatterns_k_exchange_node_t *my_exchange_node = netpatterns_k_exchange_node_t *my_exchange_node =
&ptpcoll_module->knomial_exchange_tree; &ptpcoll_module->knomial_exchange_tree;
ompi_communicator_t *comm = ompi_communicator_t *comm =
@ -862,7 +862,7 @@ static int bcol_ptpcoll_barrier_extra_node_progress(
static int mca_bcol_ptpcoll_barrier_setup(mca_bcol_base_module_t *super, int bcoll_type) static int mca_bcol_ptpcoll_barrier_setup(mca_bcol_base_module_t *super, int bcoll_type)
{ {
mca_common_netpatterns_k_exchange_node_t *my_exchange_node; netpatterns_k_exchange_node_t *my_exchange_node;
mca_bcol_ptpcoll_module_t * ptpcoll_module = mca_bcol_ptpcoll_module_t * ptpcoll_module =
(mca_bcol_ptpcoll_module_t *) super; (mca_bcol_ptpcoll_module_t *) super;

Просмотреть файл

@ -141,7 +141,7 @@ int bcol_ptpcoll_bcast_k_nomial_anyroot(bcol_function_args_t *input_args,
int count = input_args->count * input_args->dtype->super.size; int count = input_args->count * input_args->dtype->super.size;
int *active_requests = int *active_requests =
&(ptpcoll_module->ml_mem.ml_buf_desc[buffer_index].active_requests); &(ptpcoll_module->ml_mem.ml_buf_desc[buffer_index].active_requests);
mca_common_netpatter_knomial_step_info_t step_info = {0, 0, 0}; netpatterns_knomial_step_info_t step_info = {0, 0, 0};
PTPCOLL_VERBOSE(3, ("BCAST Anyroot, index_this_type %d, num_of_this_type %d", PTPCOLL_VERBOSE(3, ("BCAST Anyroot, index_this_type %d, num_of_this_type %d",
const_args->index_of_this_type_in_collective + 1, const_args->index_of_this_type_in_collective + 1,
@ -529,7 +529,7 @@ int bcol_ptpcoll_bcast_k_nomial_known_root_progress(bcol_function_args_t *input_
/* No data was received. Waiting for data */ /* No data was received. Waiting for data */
if (0 == (*active_requests)) { if (0 == (*active_requests)) {
int extra_root = -1; int extra_root = -1;
mca_common_netpatter_knomial_step_info_t step_info; netpatterns_knomial_step_info_t step_info;
/* We can not block. So run couple of test for data arrival */ /* We can not block. So run couple of test for data arrival */
if (0 == mca_bcol_ptpcoll_test_for_match(recv_request, &rc)) { if (0 == mca_bcol_ptpcoll_test_for_match(recv_request, &rc)) {
PTPCOLL_VERBOSE(10, ("Test was not matched (active request %d)", PTPCOLL_VERBOSE(10, ("Test was not matched (active request %d)",
@ -624,7 +624,7 @@ int bcol_ptpcoll_bcast_k_nomial_known_root(bcol_function_args_t *input_args,
int matched = 0; int matched = 0;
int k_level, logk_level; int k_level, logk_level;
int extra_root = -1; int extra_root = -1;
mca_common_netpatter_knomial_step_info_t step_info; netpatterns_knomial_step_info_t step_info;
PTPCOLL_VERBOSE(3, ("BCAST Know root, index_this_type %d, num_of_this_type %d", PTPCOLL_VERBOSE(3, ("BCAST Know root, index_this_type %d, num_of_this_type %d",
const_args->index_of_this_type_in_collective + 1, const_args->index_of_this_type_in_collective + 1,
@ -694,7 +694,7 @@ int bcol_ptpcoll_bcast_k_nomial_known_root(bcol_function_args_t *input_args,
} }
} }
data_src = mca_common_netpatterns_get_knomial_data_source( data_src = netpatterns_get_knomial_data_source(
my_group_index, group_root_index, radix, ptpcoll_module->pow_knum, my_group_index, group_root_index, radix, ptpcoll_module->pow_knum,
&k_level, &logk_level); &k_level, &logk_level);
@ -1709,8 +1709,8 @@ static int bcol_ptpcoll_bcast_narray_knomial_scatter_gatther_known_root(bcol_fun
int group_size = ptpcoll_module->full_narray_tree_size; int group_size = ptpcoll_module->full_narray_tree_size;
int completed = 0; int completed = 0;
int virtual_root; int virtual_root;
mca_common_netpatterns_narray_knomial_tree_node_t *narray_knomial_node = NULL; netpatterns_narray_knomial_tree_node_t *narray_knomial_node = NULL;
mca_common_netpatterns_narray_knomial_tree_node_t *narray_node = NULL; netpatterns_narray_knomial_tree_node_t *narray_node = NULL;
PTPCOLL_VERBOSE(3, ("BCAST Anyroot, index_this_type %d, num_of_this_type %d", PTPCOLL_VERBOSE(3, ("BCAST Anyroot, index_this_type %d, num_of_this_type %d",
const_args->index_of_this_type_in_collective + 1, const_args->index_of_this_type_in_collective + 1,
@ -2032,7 +2032,7 @@ static int bcol_ptpcoll_bcast_narray_progress(bcol_function_args_t *input_args,
int matched = true; int matched = true;
int my_group_index = ptpcoll_module->super.sbgp_partner_module->my_index; int my_group_index = ptpcoll_module->super.sbgp_partner_module->my_index;
int relative_group_index = 0; int relative_group_index = 0;
mca_common_netpatterns_tree_node_t *narray_node = NULL; netpatterns_tree_node_t *narray_node = NULL;
PTPCOLL_VERBOSE(3, ("Bcast, Narray tree Progress")); PTPCOLL_VERBOSE(3, ("Bcast, Narray tree Progress"));
@ -2119,7 +2119,7 @@ static int bcol_ptpcoll_bcast_narray(bcol_function_args_t *input_args,
int my_group_index = ptpcoll_module->super.sbgp_partner_module->my_index; int my_group_index = ptpcoll_module->super.sbgp_partner_module->my_index;
int group_root_index; int group_root_index;
int relative_group_index = 0; int relative_group_index = 0;
mca_common_netpatterns_tree_node_t *narray_node = NULL; netpatterns_tree_node_t *narray_node = NULL;
PTPCOLL_VERBOSE(3, ("Bcast, Narray tree")); PTPCOLL_VERBOSE(3, ("Bcast, Narray tree"));

Просмотреть файл

@ -756,9 +756,9 @@ int bcol_ptpcoll_bcast_narray_knomial_gather(mca_bcol_ptpcoll_module_t *ptpcoll_
ompi_communicator_t* comm = ptpcoll_module->super.sbgp_partner_module->group_comm; ompi_communicator_t* comm = ptpcoll_module->super.sbgp_partner_module->group_comm;
ompi_request_t **requests = ompi_request_t **requests =
ptpcoll_module->ml_mem.ml_buf_desc[buffer_index].requests; ptpcoll_module->ml_mem.ml_buf_desc[buffer_index].requests;
mca_common_netpatterns_narray_knomial_tree_node_t *narray_node = netpatterns_narray_knomial_tree_node_t *narray_node =
&ptpcoll_module->narray_knomial_node[relative_group_index]; &ptpcoll_module->narray_knomial_node[relative_group_index];
mca_common_netpatterns_k_exchange_node_t *k_node = netpatterns_k_exchange_node_t *k_node =
&narray_node->k_node; &narray_node->k_node;
mca_bcol_ptpcoll_component_t *cm = mca_bcol_ptpcoll_component_t *cm =
&mca_bcol_ptpcoll_component; &mca_bcol_ptpcoll_component;

Просмотреть файл

@ -264,7 +264,7 @@ int mca_bcol_ptpcoll_setup_knomial_tree(mca_bcol_base_module_t *super)
{ {
mca_bcol_ptpcoll_module_t *p2p_module = (mca_bcol_ptpcoll_module_t *) super; mca_bcol_ptpcoll_module_t *p2p_module = (mca_bcol_ptpcoll_module_t *) super;
int rc = 0; int rc = 0;
rc = mca_common_netpatterns_setup_recursive_knomial_allgather_tree_node( rc = netpatterns_setup_recursive_knomial_allgather_tree_node(
p2p_module->super.sbgp_partner_module->group_size, p2p_module->super.sbgp_partner_module->group_size,
p2p_module->super.sbgp_partner_module->my_index, p2p_module->super.sbgp_partner_module->my_index,
mca_bcol_ptpcoll_component.k_nomial_radix, mca_bcol_ptpcoll_component.k_nomial_radix,
@ -314,7 +314,7 @@ static int load_narray_knomial_tree (mca_bcol_ptpcoll_module_t *ptpcoll_module)
ptpcoll_module->narray_knomial_node = calloc( ptpcoll_module->narray_knomial_node = calloc(
ptpcoll_module->full_narray_tree_size, ptpcoll_module->full_narray_tree_size,
sizeof(mca_common_netpatterns_narray_knomial_tree_node_t)); sizeof(netpatterns_narray_knomial_tree_node_t));
if(NULL == ptpcoll_module->narray_knomial_node) { if(NULL == ptpcoll_module->narray_knomial_node) {
goto Error; goto Error;
} }
@ -345,7 +345,7 @@ static int load_narray_knomial_tree (mca_bcol_ptpcoll_module_t *ptpcoll_module)
} }
/* Setting node info */ /* Setting node info */
for(i = 0; i < ptpcoll_module->full_narray_tree_size; i++) { for(i = 0; i < ptpcoll_module->full_narray_tree_size; i++) {
rc = mca_common_netpatterns_setup_narray_knomial_tree( rc = netpatterns_setup_narray_knomial_tree(
cm->narray_knomial_radix, cm->narray_knomial_radix,
i, i,
ptpcoll_module->full_narray_tree_size, ptpcoll_module->full_narray_tree_size,
@ -381,13 +381,13 @@ static int load_narray_tree(mca_bcol_ptpcoll_module_t *ptpcoll_module)
mca_bcol_ptpcoll_component_t *cm = &mca_bcol_ptpcoll_component; mca_bcol_ptpcoll_component_t *cm = &mca_bcol_ptpcoll_component;
ptpcoll_module->narray_node = calloc(ptpcoll_module->group_size, ptpcoll_module->narray_node = calloc(ptpcoll_module->group_size,
sizeof(mca_common_netpatterns_tree_node_t)); sizeof(netpatterns_tree_node_t));
if(NULL == ptpcoll_module->narray_node ) { if(NULL == ptpcoll_module->narray_node ) {
goto Error; goto Error;
} }
for(i = 0; i < ptpcoll_module->group_size; i++) { for(i = 0; i < ptpcoll_module->group_size; i++) {
rc = mca_common_netpatterns_setup_narray_tree( rc = netpatterns_setup_narray_tree(
cm->narray_radix, cm->narray_radix,
i, i,
ptpcoll_module->group_size, ptpcoll_module->group_size,
@ -509,7 +509,7 @@ static int load_binomial_info(mca_bcol_ptpcoll_module_t *ptpcoll_module)
static int load_recursive_knomial_info(mca_bcol_ptpcoll_module_t *ptpcoll_module) static int load_recursive_knomial_info(mca_bcol_ptpcoll_module_t *ptpcoll_module)
{ {
int rc = OMPI_SUCCESS; int rc = OMPI_SUCCESS;
rc = mca_common_netpatterns_setup_recursive_knomial_tree_node( rc = netpatterns_setup_recursive_knomial_tree_node(
ptpcoll_module->group_size, ptpcoll_module->group_size,
ptpcoll_module->super.sbgp_partner_module->my_index, ptpcoll_module->super.sbgp_partner_module->my_index,
mca_bcol_ptpcoll_component.k_nomial_radix, mca_bcol_ptpcoll_component.k_nomial_radix,

Просмотреть файл

@ -68,18 +68,9 @@ mcacomponentdir = $(pkglibdir)
mcacomponent_LTLIBRARIES = $(component_install) mcacomponent_LTLIBRARIES = $(component_install)
mca_coll_ml_la_SOURCES = $(sources) mca_coll_ml_la_SOURCES = $(sources)
mca_coll_ml_la_LDFLAGS = -module -avoid-version mca_coll_ml_la_LDFLAGS = -module -avoid-version
mca_coll_ml_la_LIBADD = \ mca_coll_ml_la_LIBADD =
$(top_ompi_builddir)/ompi/mca/common/commpatterns/libmca_common_commpatterns.la \
$(top_ompi_builddir)/ompi/mca/common/netpatterns/libmca_common_netpatterns.la
noinst_LTLIBRARIES = $(component_noinst) noinst_LTLIBRARIES = $(component_noinst)
libmca_coll_ml_la_SOURCES =$(sources) libmca_coll_ml_la_SOURCES =$(sources)
libmca_coll_ml_la_LDFLAGS = -module -avoid-version libmca_coll_ml_la_LDFLAGS = -module -avoid-version
$(top_ompi_builddir)/ompi/mca/common/commpatterns/libmca_common_commpatterns.la: foo.c
cd $(top_ompi_builddir)/ompi/mca/common/commpatterns && $(MAKE)
$(top_ompi_builddir)/ompi/mca/common/netpatterns/libmca_common_netpatterns.la: foo.c
cd $(top_ompi_builddir)/ompi/mca/common/netpatterns && $(MAKE)
foo.c:

Просмотреть файл

@ -31,7 +31,7 @@
#include "coll_ml.h" #include "coll_ml.h"
#include "coll_ml_inlines.h" #include "coll_ml_inlines.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h" #include "ompi/patterns/net/netpatterns.h"
#include "coll_ml_mca.h" #include "coll_ml_mca.h"
#include "coll_ml_custom_utils.h" #include "coll_ml_custom_utils.h"
@ -440,7 +440,7 @@ static int ml_open(void)
OBJ_CONSTRUCT(&(cs->sequential_collectives_mutex), opal_mutex_t); OBJ_CONSTRUCT(&(cs->sequential_collectives_mutex), opal_mutex_t);
OBJ_CONSTRUCT(&(cs->sequential_collectives), opal_list_t); OBJ_CONSTRUCT(&(cs->sequential_collectives), opal_list_t);
rc = ompi_common_netpatterns_init(); rc = netpatterns_init();
if (OMPI_SUCCESS != rc) { if (OMPI_SUCCESS != rc) {
return rc; return rc;
} }

Просмотреть файл

@ -30,7 +30,7 @@
#include "ompi/mca/coll/base/base.h" #include "ompi/mca/coll/base/base.h"
#include "ompi/mca/coll/ml/coll_ml.h" #include "ompi/mca/coll/ml/coll_ml.h"
#include "ompi/mca/coll/ml/coll_ml_inlines.h" #include "ompi/mca/coll/ml/coll_ml_inlines.h"
#include "ompi/mca/common/commpatterns/common_coll_ops.h" #include "ompi/patterns/comm/coll_ops.h"
#include "ompi/datatype/ompi_datatype.h" #include "ompi/datatype/ompi_datatype.h"
#include "ompi/communicator/communicator.h" #include "ompi/communicator/communicator.h"

Просмотреть файл

@ -22,7 +22,7 @@
#include "coll_ml_inlines.h" #include "coll_ml_inlines.h"
#include "coll_ml_mca.h" #include "coll_ml_mca.h"
#include "coll_ml_lmngr.h" #include "coll_ml_lmngr.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h" #include "ompi/patterns/net/netpatterns.h"
#include "opal/mca/installdirs/installdirs.h" #include "opal/mca/installdirs/installdirs.h"
/* /*

Просмотреть файл

@ -31,7 +31,7 @@
#include "ompi/mca/sbgp/base/base.h" #include "ompi/mca/sbgp/base/base.h"
#include "ompi/mca/bcol/base/base.h" #include "ompi/mca/bcol/base/base.h"
#include "ompi/mca/sbgp/sbgp.h" #include "ompi/mca/sbgp/sbgp.h"
#include "ompi/mca/common/commpatterns/common_coll_ops.h" #include "ompi/patterns/comm/coll_ops.h"
#include "ompi/mca/coll/ml/coll_ml.h" #include "ompi/mca/coll/ml/coll_ml.h"
#include "opal/util/argv.h" #include "opal/util/argv.h"

Просмотреть файл

Просмотреть файл

@ -1,104 +0,0 @@
#
# Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
# Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# A word of explanation...
#
# This library is linked against various MCA components because all
# shared-memory based components (e.g., mpool, ptl, etc.) need to
# share some common code and data. There's two cases:
#
# 1. libmca_common_commpatterns.la is a shared library. By linking that shared
# library to all components that need it, the OS linker will
# automatically load it into the process as necessary, and there will
# only be one copy (i.e., all the components will share *one* copy of
# the code and data).
#
# 2. libmca_common_commpatterns.la is a static library. In this case, it will
# be rolled up into the top-level libmpi.la. It will also be rolled
# into each component, but then the component will also be rolled up
# into the upper-level libmpi.la. Linkers universally know how to
# "figure this out" so that we end up with only one copy of the code
# and data.
#
# Note that building this common component statically and linking
# against other dynamic components is *not* supported!
EXTRA_DIST = .windows
# Header files
headers = \
common_coll_ops.h \
common_netpatterns.h \
ompi_common_netpatterns_macros.h
# Source files
sources = \
common_allreduce.c \
common_allgather.c \
common_bcast.c
# As per above, we'll either have an installable or noinst result.
# The installable one should follow the same MCA prefix naming rules
# (i.e., libmca_<type>_<name>.la). The noinst one can be named
# whatever it wants, although libmca_<type>_<name>_noinst.la is
# recommended.
# To simplify components that link to this library, we will *always*
# have an output libtool library named libmca_<type>_<name>.la -- even
# for case 2) described above (i.e., so there's no conditional logic
# necessary in component Makefile.am's that link to this library).
# Hence, if we're creating a noinst version of this library (i.e.,
# case 2), we sym link it to the libmca_<type>_<name>.la name
# (libtool will do the Right Things under the covers). See the
# all-local and clean-local rules, below, for how this is effected.
lib_LTLIBRARIES =
noinst_LTLIBRARIES =
comp_inst = libmca_common_commpatterns.la
comp_noinst = libmca_common_commpatterns_noinst.la
if MCA_BUILD_ompi_common_commpatterns_DSO
lib_LTLIBRARIES += $(comp_inst)
else
noinst_LTLIBRARIES += $(comp_noinst)
endif
libmca_common_commpatterns_la_SOURCES = $(headers) $(sources)
libmca_common_commpatterns_noinst_la_SOURCES = $(libmca_common_commpatterns_la_SOURCES)
libmca_common_commpatterns_la_LIBADD = \
$(top_ompi_builddir)/ompi/mca/common/netpatterns/libmca_common_netpatterns.la
# These two rules will sym link the "noinst" libtool library filename
# to the installable libtool library filename in the case where we are
# compiling this component statically (case 2), described above).
all-local:
if test -z "$(lib_LTLIBRARIES)"; then \
rm -f "$(comp_inst)"; \
$(LN_S) "$(comp_noinst)" "$(comp_inst)"; \
fi
clean-local:
if test -z "$(lib_LTLIBRARIES)"; then \
rm -f "$(comp_inst)"; \
fi
# The code below guaranty that the netpatterns will be build before commpatterns
FORCE:
$(top_ompi_builddir)/ompi/mca/common/netpatterns/libmca_common_netpatterns.la: FORCE
(cd $(top_ompi_builddir)/ompi/mca/common/netpatterns/ && $(MAKE) $(AM_MAKEFLAGS) libmca_common_netpatterns.la)
install-libmca_common_netpatterns: FORCE
(cd $(top_ompi_builddir)/ompi/mca/common/netpatterns/ && $(MAKE) $(AM_MAKEFLAGS) install)
install: install-libmca_common_netpatterns install-am

Просмотреть файл

@ -1,52 +0,0 @@
/*
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#ifndef OMPI_COMMON_NETPATTERNS_MACROS_H
#define OMPI_COMMON_NETPATTERNS_MACROS_H
#include "ompi_config.h"
BEGIN_C_DECLS
/* function to decompose an interger into it's representation in base K */
/*
* input_value - value to translate (input)
* base - base of representation (input)
* highest_power - the highest power that may have a non-zero entry (input)
* the assumption is that this will be called in the critical path
* to compute communication patterns, so will precompute such values
* and pass the in.
* base_to_power_i - array of base to ith power (input)
* cum_base_to_power_i - array of cummulative base to ith power (input)
* base_k_rep - representation in base "base". Space is pre-allocated. (out)
*/
static inline __opal_attribute_always_inline__ void
common_netpatterns_obtain_rep_base_k (int input_value, int base,
int highest_power, int *base_to_power_i,
int *base_k_rep
)
{
/* local variables */
int lvl, work_value;
/* loop over all possible powers */
work_value=input_value;
for( lvl=highest_power ; lvl >= 0 ; lvl-- ) {
/* still need to compute the actual coefficient */
base_k_rep[lvl]=work_value/base_to_power_i[lvl];
work_value-=(base_k_rep[lvl]*base_to_power_i[lvl]);
}
}
END_C_DECLS
#endif /* OMPI_COMMON_NETPATTERNS_MACROS_H */

Просмотреть файл

@ -1,12 +0,0 @@
#
# Copyright (c) 2008-2012 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# Specific to this module
exclude_list=common_allreduce.c

Просмотреть файл

@ -1,94 +0,0 @@
#
# Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
# Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# A word of explanation...
#
# This library is linked against various MCA components because all
# shared-memory based components (e.g., mpool, ptl, etc.) need to
# share some common code and data. There's two cases:
#
# 1. libmca_common_netpatterns.la is a shared library. By linking that shared
# library to all components that need it, the OS linker will
# automatically load it into the process as necessary, and there will
# only be one copy (i.e., all the components will share *one* copy of
# the code and data).
#
# 2. libmca_common_netpatterns.la is a static library. In this case, it will
# be rolled up into the top-level libmpi.la. It will also be rolled
# into each component, but then the component will also be rolled up
# into the upper-level libmpi.la. Linkers universally know how to
# "figure this out" so that we end up with only one copy of the code
# and data.
#
# Note that building this common component statically and linking
# against other dynamic components is *not* supported!
EXTRA_DIST = .windows
# Header files
headers = \
common_netpatterns.h \
common_netpatterns_knomial_tree.h \
common_coll_ops.h
# Source files
sources = \
common_netpatterns_base.c \
common_netpatterns_multinomial_tree.c \
common_netpatterns_nary_tree.c \
common_netpatterns_knomial_tree.c
# common_allreduce.c # the allredeace is broken
# As per above, we'll either have an installable or noinst result.
# The installable one should follow the same MCA prefix naming rules
# (i.e., libmca_<type>_<name>.la). The noinst one can be named
# whatever it wants, although libmca_<type>_<name>_noinst.la is
# recommended.
# To simplify components that link to this library, we will *always*
# have an output libtool library named libmca_<type>_<name>.la -- even
# for case 2) described above (i.e., so there's no conditional logic
# necessary in component Makefile.am's that link to this library).
# Hence, if we're creating a noinst version of this library (i.e.,
# case 2), we sym link it to the libmca_<type>_<name>.la name
# (libtool will do the Right Things under the covers). See the
# all-local and clean-local rules, below, for how this is effected.
lib_LTLIBRARIES =
noinst_LTLIBRARIES =
comp_inst = libmca_common_netpatterns.la
comp_noinst = libmca_common_netpatterns_noinst.la
if MCA_BUILD_ompi_common_netpatterns_DSO
lib_LTLIBRARIES += $(comp_inst)
else
noinst_LTLIBRARIES += $(comp_noinst)
endif
libmca_common_netpatterns_la_SOURCES = $(headers) $(sources)
libmca_common_netpatterns_noinst_la_SOURCES = $(libmca_common_netpatterns_la_SOURCES)
# These two rules will sym link the "noinst" libtool library filename
# to the installable libtool library filename in the case where we are
# compiling this component statically (case 2), described above).
all-local:
if test -z "$(lib_LTLIBRARIES)"; then \
rm -f "$(comp_inst)"; \
$(LN_S) "$(comp_noinst)" "$(comp_inst)"; \
fi
clean-local:
if test -z "$(lib_LTLIBRARIES)"; then \
rm -f "$(comp_inst)"; \
fi

Просмотреть файл

@ -35,8 +35,7 @@ mcacomponentdir = $(pkglibdir)
mcacomponent_LTLIBRARIES = $(component_install) mcacomponent_LTLIBRARIES = $(component_install)
mca_sbgp_basesmsocket_la_SOURCES = $(sources) mca_sbgp_basesmsocket_la_SOURCES = $(sources)
mca_sbgp_basesmsocket_la_LDFLAGS = -module -avoid-version mca_sbgp_basesmsocket_la_LDFLAGS = -module -avoid-version
mca_sbgp_basesmsocket_la_LIBADD = \ mca_sbgp_basesmsocket_la_LIBADD =
$(top_ompi_builddir)/ompi/mca/common/commpatterns/libmca_common_commpatterns.la
noinst_LTLIBRARIES = $(component_noinst) noinst_LTLIBRARIES = $(component_noinst)
libmca_sbgp_basesmsocket_la_SOURCES =$(sources) libmca_sbgp_basesmsocket_la_SOURCES =$(sources)

Просмотреть файл

@ -35,7 +35,7 @@
#include "ompi/communicator/communicator.h" #include "ompi/communicator/communicator.h"
#include "sbgp_basesmsocket.h" #include "sbgp_basesmsocket.h"
#include "ompi/mca/common/commpatterns/common_coll_ops.h" #include "ompi/patterns/comm/coll_ops.h"
/* /*

16
ompi/patterns/comm/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,16 @@
# Copyright (c) 2013 Oak Ridge National Laboratory. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
headers += \
patterns/comm/coll_ops.h \
patterns/comm/commpatterns.h
libmpi_la_SOURCES += \
patterns/comm/allreduce.c \
patterns/comm/allgather.c \
patterns/comm/bcast.c

Просмотреть файл

@ -18,9 +18,9 @@
#include "ompi/datatype/ompi_datatype.h" #include "ompi/datatype/ompi_datatype.h"
#include "ompi/communicator/communicator.h" #include "ompi/communicator/communicator.h"
#include "opal/include/opal/sys/atomic.h" #include "opal/include/opal/sys/atomic.h"
#include "common_coll_ops.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h"
#include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/pml.h"
#include "ompi/patterns/net/netpatterns.h"
#include "coll_ops.h"
/** /**
* All-reduce - subgroup in communicator * All-reduce - subgroup in communicator
@ -35,7 +35,7 @@ OMPI_DECLSPEC int comm_allgather_pml(void *src_buf, void *dest_buf, int count,
int proc_block,extra_start,extra_end,iovec_len; int proc_block,extra_start,extra_end,iovec_len;
int remote_data_start_rank,remote_data_end_rank; int remote_data_start_rank,remote_data_end_rank;
int local_data_start_rank; int local_data_start_rank;
mca_common_netpatterns_pair_exchange_node_t my_exchange_node; netpatterns_pair_exchange_node_t my_exchange_node;
size_t message_extent,current_data_extent,current_data_count; size_t message_extent,current_data_extent,current_data_count;
size_t dt_size; size_t dt_size;
OPAL_PTRDIFF_TYPE dt_extent; OPAL_PTRDIFF_TYPE dt_extent;
@ -73,7 +73,7 @@ OMPI_DECLSPEC int comm_allgather_pml(void *src_buf, void *dest_buf, int count,
} }
/* get my reduction communication pattern */ /* get my reduction communication pattern */
rc = mca_common_netpatterns_setup_recursive_doubling_tree_node(n_peers, rc = netpatterns_setup_recursive_doubling_tree_node(n_peers,
my_rank_in_group, &my_exchange_node); my_rank_in_group, &my_exchange_node);
if(OMPI_SUCCESS != rc){ if(OMPI_SUCCESS != rc){
return rc; return rc;

Просмотреть файл

@ -18,10 +18,10 @@
#include "ompi/datatype/ompi_datatype.h" #include "ompi/datatype/ompi_datatype.h"
#include "ompi/communicator/communicator.h" #include "ompi/communicator/communicator.h"
#include "opal/include/opal/sys/atomic.h" #include "opal/include/opal/sys/atomic.h"
#include "ompi/mca/common/commpatterns/common_netpatterns.h"
#include "common_coll_ops.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h"
#include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/pml.h"
#include "ompi/patterns/net/netpatterns.h"
#include "coll_ops.h"
#include "commpatterns.h"
/** /**
* All-reduce for contigous primitive types * All-reduce for contigous primitive types
@ -34,7 +34,7 @@ OMPI_DECLSPEC int comm_allreduce_pml(void *sbuf, void *rbuf, int count,
/* local variables */ /* local variables */
int rc=OMPI_SUCCESS,n_dts_per_buffer,n_data_segments,stripe_number; int rc=OMPI_SUCCESS,n_dts_per_buffer,n_data_segments,stripe_number;
int pair_rank,exchange,extra_rank; int pair_rank,exchange,extra_rank;
mca_common_netpatterns_pair_exchange_node_t my_exchange_node; netpatterns_pair_exchange_node_t my_exchange_node;
int count_processed,count_this_stripe; int count_processed,count_this_stripe;
size_t dt_size,dt_extent; size_t dt_size,dt_extent;
char scratch_bufers[2][MAX_TMP_BUFFER]; char scratch_bufers[2][MAX_TMP_BUFFER];
@ -76,7 +76,7 @@ OMPI_DECLSPEC int comm_allreduce_pml(void *sbuf, void *rbuf, int count,
n_data_segments=(count+n_dts_per_buffer -1 ) / n_dts_per_buffer ; n_data_segments=(count+n_dts_per_buffer -1 ) / n_dts_per_buffer ;
/* get my reduction communication pattern */ /* get my reduction communication pattern */
rc = mca_common_netpatterns_setup_recursive_doubling_tree_node(n_peers, rc = netpatterns_setup_recursive_doubling_tree_node(n_peers,
my_rank_in_group, &my_exchange_node); my_rank_in_group, &my_exchange_node);
if(OMPI_SUCCESS != rc){ if(OMPI_SUCCESS != rc){
return rc; return rc;

Просмотреть файл

@ -18,9 +18,9 @@
#include "ompi/datatype/ompi_datatype.h" #include "ompi/datatype/ompi_datatype.h"
#include "ompi/communicator/communicator.h" #include "ompi/communicator/communicator.h"
#include "opal/include/opal/sys/atomic.h" #include "opal/include/opal/sys/atomic.h"
#include "common_coll_ops.h"
#include "ompi/mca/common/netpatterns/common_netpatterns.h"
#include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/pml.h"
#include "ompi/patterns/net/netpatterns.h"
#include "coll_ops.h"
/** /**
* Bcast - subgroup in communicator * Bcast - subgroup in communicator
@ -35,7 +35,7 @@ OMPI_DECLSPEC int comm_bcast_pml(void *buffer, int root, int count,
int rc=OMPI_SUCCESS,msg_cnt,i; int rc=OMPI_SUCCESS,msg_cnt,i;
ompi_request_t *requests[2]; ompi_request_t *requests[2];
int node_rank, peer_rank; int node_rank, peer_rank;
mca_common_netpatterns_tree_node_t node_data; netpatterns_tree_node_t node_data;
/* /*
* shift rank to root==0 tree * shift rank to root==0 tree
@ -45,7 +45,7 @@ OMPI_DECLSPEC int comm_bcast_pml(void *buffer, int root, int count,
/* /*
* compute my communication pattern - binary tree * compute my communication pattern - binary tree
*/ */
rc=mca_common_netpatterns_setup_narray_tree(2, node_rank, n_peers, rc=netpatterns_setup_narray_tree(2, node_rank, n_peers,
&node_data); &node_data);
if( OMPI_SUCCESS != rc ) { if( OMPI_SUCCESS != rc ) {
goto Error; goto Error;

18
ompi/patterns/net/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,18 @@
# Copyright (c) 2013 Oak Ridge National Laboratory. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
headers += \
patterns/net/netpatterns.h \
patterns/net/netpatterns_knomial_tree.h \
patterns/net/coll_ops.h
libmpi_la_SOURCES += \
patterns/net/netpatterns_base.c \
patterns/net/netpatterns_multinomial_tree.c \
patterns/net/netpatterns_nary_tree.c \
patterns/net/netpatterns_knomial_tree.c

Просмотреть файл

@ -83,7 +83,7 @@ comm_allreduce(void *sbuf, void *rbuf, int count, opal_datatype_t *dtype,
int rc=OMPI_SUCCESS,n_dts_per_buffer,n_data_segments,stripe_number; int rc=OMPI_SUCCESS,n_dts_per_buffer,n_data_segments,stripe_number;
int pair_rank,exchange,extra_rank; int pair_rank,exchange,extra_rank;
int index_read,index_write; int index_read,index_write;
mca_common_netpatterns_pair_exchange_node_t my_exchange_node; netpatterns_pair_exchange_node_t my_exchange_node;
int my_rank,count_processed,count_this_stripe; int my_rank,count_processed,count_this_stripe;
size_t n_peers,message_extent,len_data_buffer; size_t n_peers,message_extent,len_data_buffer;
size_t dt_size; size_t dt_size;
@ -152,7 +152,7 @@ comm_allreduce(void *sbuf, void *rbuf, int count, opal_datatype_t *dtype,
} }
/* get my reduction communication pattern */ /* get my reduction communication pattern */
ret=mca_common_netpatterns_setup_recursive_doubling_tree_node(n_peers,my_rank,&my_exchange_node); ret=netpatterns_setup_recursive_doubling_tree_node(n_peers,my_rank,&my_exchange_node);
if(OMPI_SUCCESS != ret){ if(OMPI_SUCCESS != ret){
return ret; return ret;
} }

Просмотреть файл

@ -16,25 +16,25 @@
#include "ompi_config.h" #include "ompi_config.h"
#include "ompi/mca/rte/rte.h" #include "ompi/mca/rte/rte.h"
#include "common_netpatterns_knomial_tree.h" #include "netpatterns_knomial_tree.h"
BEGIN_C_DECLS BEGIN_C_DECLS
int ompi_common_netpatterns_base_err(const char* fmt, ...); int netpatterns_base_err(const char* fmt, ...);
int ompi_common_netpatterns_register_mca_params(void); int netpatterns_register_mca_params(void);
#if OPAL_ENABLE_DEBUG #if OPAL_ENABLE_DEBUG
extern int ompi_common_netpatterns_base_verbose; /* disabled by default */ extern int netpatterns_base_verbose; /* disabled by default */
OMPI_DECLSPEC extern int ompi_common_netpatterns_base_err(const char*, ...) __opal_attribute_format__(__printf__, 1, 2); OMPI_DECLSPEC extern int netpatterns_base_err(const char*, ...) __opal_attribute_format__(__printf__, 1, 2);
#define NETPATTERNS_VERBOSE(args) \ #define NETPATTERNS_VERBOSE(args) \
do { \ do { \
if(ompi_common_netpatterns_base_verbose > 0) { \ if(netpatterns_base_verbose > 0) { \
ompi_common_netpatterns_base_err("[%s]%s[%s:%d:%s] ",\ netpatterns_base_err("[%s]%s[%s:%d:%s] ",\
ompi_process_info.nodename, \ ompi_process_info.nodename, \
OMPI_NAME_PRINT(OMPI_PROC_MY_NAME), \ OMPI_NAME_PRINT(OMPI_PROC_MY_NAME), \
__FILE__, __LINE__, __func__); \ __FILE__, __LINE__, __func__); \
ompi_common_netpatterns_base_err args; \ netpatterns_base_err args; \
ompi_common_netpatterns_base_err("\n"); \ netpatterns_base_err("\n"); \
} \ } \
} while(0); } while(0);
#else #else
@ -72,7 +72,7 @@ enum {
/* /*
* N-order tree node description * N-order tree node description
*/ */
struct mca_common_netpatterns_tree_node_t { struct netpatterns_tree_node_t {
/* my rank within the group */ /* my rank within the group */
int my_rank; int my_rank;
/* my node type - root, leaf, or interior */ /* my node type - root, leaf, or interior */
@ -88,13 +88,13 @@ struct mca_common_netpatterns_tree_node_t {
/* chidren ranks within the group */ /* chidren ranks within the group */
int *children_ranks; int *children_ranks;
}; };
typedef struct mca_common_netpatterns_tree_node_t mca_common_netpatterns_tree_node_t; typedef struct netpatterns_tree_node_t netpatterns_tree_node_t;
struct mca_common_netpatterns_k_exchange_node_t; struct netpatterns_k_exchange_node_t;
/* /*
* N-order + knominal tree node description * N-order + knominal tree node description
*/ */
struct mca_common_netpatterns_narray_knomial_tree_node_t { struct netpatterns_narray_knomial_tree_node_t {
/* my rank within the group */ /* my rank within the group */
int my_rank; int my_rank;
/* my node type - root, leaf, or interior */ /* my node type - root, leaf, or interior */
@ -114,30 +114,30 @@ struct mca_common_netpatterns_narray_knomial_tree_node_t {
/* Rank on this node inside of level */ /* Rank on this node inside of level */
int rank_on_level; int rank_on_level;
/* Knomial recursive gather information */ /* Knomial recursive gather information */
struct mca_common_netpatterns_k_exchange_node_t k_node; struct netpatterns_k_exchange_node_t k_node;
}; };
typedef struct mca_common_netpatterns_narray_knomial_tree_node_t typedef struct netpatterns_narray_knomial_tree_node_t
mca_common_netpatterns_narray_knomial_tree_node_t; netpatterns_narray_knomial_tree_node_t;
/* Init code for common_netpatterns */ /* Init code for common_netpatterns */
OMPI_DECLSPEC int ompi_common_netpatterns_init(void); OMPI_DECLSPEC int netpatterns_init(void);
/* setup an n-array tree */ /* setup an n-array tree */
OMPI_DECLSPEC int mca_common_netpatterns_setup_narray_tree(int tree_order, int my_rank, int num_nodes, OMPI_DECLSPEC int netpatterns_setup_narray_tree(int tree_order, int my_rank, int num_nodes,
mca_common_netpatterns_tree_node_t *my_node); netpatterns_tree_node_t *my_node);
/* setup an n-array tree with k-nomial levels */ /* setup an n-array tree with k-nomial levels */
OMPI_DECLSPEC int mca_common_netpatterns_setup_narray_knomial_tree( int tree_order, int my_rank, int num_nodes, OMPI_DECLSPEC int netpatterns_setup_narray_knomial_tree( int tree_order, int my_rank, int num_nodes,
mca_common_netpatterns_narray_knomial_tree_node_t *my_node); netpatterns_narray_knomial_tree_node_t *my_node);
/* setup an multi-nomial tree - for each node in the tree /* setup an multi-nomial tree - for each node in the tree
* this returns it's parent, and it's children * this returns it's parent, and it's children
*/ */
OMPI_DECLSPEC int mca_common_netpatterns_setup_multinomial_tree(int tree_order, int num_nodes, OMPI_DECLSPEC int netpatterns_setup_multinomial_tree(int tree_order, int num_nodes,
mca_common_netpatterns_tree_node_t *tree_nodes); netpatterns_tree_node_t *tree_nodes);
OMPI_DECLSPEC int mca_common_netpatterns_setup_narray_tree_contigous_ranks(int tree_order, OMPI_DECLSPEC int netpatterns_setup_narray_tree_contigous_ranks(int tree_order,
int num_nodes, mca_common_netpatterns_tree_node_t **tree_nodes); int num_nodes, netpatterns_tree_node_t **tree_nodes);
/* calculate the nearest power of radix that is equal to or greater /* calculate the nearest power of radix that is equal to or greater
* than size, with the specified radix. The resulting tree is of * than size, with the specified radix. The resulting tree is of

Просмотреть файл

@ -10,23 +10,23 @@
*/ */
#include "opal/mca/base/mca_base_param.h" #include "opal/mca/base/mca_base_param.h"
#include "ompi/include/ompi/constants.h" #include "ompi/include/ompi/constants.h"
#include "common_netpatterns.h" #include "netpatterns.h"
int ompi_common_netpatterns_base_verbose = 0; /* disabled by default */ int netpatterns_base_verbose = 0; /* disabled by default */
int ompi_common_netpatterns_register_mca_params(void) int netpatterns_register_mca_params(void)
{ {
mca_base_param_reg_int_name("common", mca_base_param_reg_int_name("common",
"netpatterns_base_verbose", "netpatterns_base_verbose",
"Verbosity level of the NETPATTERNS framework", "Verbosity level of the NETPATTERNS framework",
false, false, false, false,
0, 0,
&ompi_common_netpatterns_base_verbose); &netpatterns_base_verbose);
return OMPI_SUCCESS; return OMPI_SUCCESS;
} }
int ompi_common_netpatterns_base_err(const char* fmt, ...) int netpatterns_base_err(const char* fmt, ...)
{ {
va_list list; va_list list;
int ret; int ret;
@ -37,16 +37,16 @@ int ompi_common_netpatterns_base_err(const char* fmt, ...)
return ret; return ret;
} }
int ompi_common_netpatterns_init(void) int netpatterns_init(void)
{ {
/* There is no component for common_netpatterns so every component that uses it /* There is no component for common_netpatterns so every component that uses it
should call ompi_common_netpatterns_init, still we want to run it only once */ should call netpatterns_init, still we want to run it only once */
static int was_called = 0; static int was_called = 0;
if (0 == was_called) { if (0 == was_called) {
was_called = 1; was_called = 1;
return ompi_common_netpatterns_register_mca_params(); return netpatterns_register_mca_params();
} }
return OMPI_SUCCESS; return OMPI_SUCCESS;

Просмотреть файл

@ -24,13 +24,13 @@
#include "ompi/mca/rte/rte.h" #include "ompi/mca/rte/rte.h"
#include "common_netpatterns.h" #include "netpatterns.h"
/* setup recursive doubleing tree node */ /* setup recursive doubleing tree node */
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_knomial_allgather_tree_node( OMPI_DECLSPEC int netpatterns_setup_recursive_knomial_allgather_tree_node(
int num_nodes, int node_rank, int tree_order, int *hier_ranks, int num_nodes, int node_rank, int tree_order, int *hier_ranks,
mca_common_netpatterns_k_exchange_node_t *exchange_node) netpatterns_k_exchange_node_t *exchange_node)
{ {
/* local variables */ /* local variables */
int i, j, cnt, i_temp; int i, j, cnt, i_temp;
@ -47,7 +47,7 @@ OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_knomial_allgather_tree_
NETPATTERNS_VERBOSE( NETPATTERNS_VERBOSE(
("Enter mca_common_netpatterns_setup_recursive_knomial_tree_node(num_nodes=%d, node_rank=%d, tree_order=%d)", ("Enter netpatterns_setup_recursive_knomial_tree_node(num_nodes=%d, node_rank=%d, tree_order=%d)",
num_nodes, node_rank, tree_order)); num_nodes, node_rank, tree_order));
assert(num_nodes > 1); assert(num_nodes > 1);
@ -195,13 +195,13 @@ OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_knomial_allgather_tree_
} }
exchange_node->payload_info = (mca_common_netpatterns_payload_t **) malloc(sizeof(mca_common_netpatterns_payload_t *)*pow_k); exchange_node->payload_info = (netpatterns_payload_t **) malloc(sizeof(netpatterns_payload_t *)*pow_k);
if( NULL == exchange_node->payload_info) { if( NULL == exchange_node->payload_info) {
goto Error; goto Error;
} }
for(i = 0; i < pow_k; i++){ for(i = 0; i < pow_k; i++){
exchange_node->payload_info[i] = (mca_common_netpatterns_payload_t *) malloc(sizeof(mca_common_netpatterns_payload_t)*(tree_order-1)); exchange_node->payload_info[i] = (netpatterns_payload_t *) malloc(sizeof(netpatterns_payload_t)*(tree_order-1));
if( NULL == exchange_node->payload_info[i]) { if( NULL == exchange_node->payload_info[i]) {
goto Error; goto Error;
} }
@ -500,9 +500,9 @@ Error:
} }
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_knomial_tree_node( OMPI_DECLSPEC int netpatterns_setup_recursive_knomial_tree_node(
int num_nodes, int node_rank, int tree_order, int num_nodes, int node_rank, int tree_order,
mca_common_netpatterns_k_exchange_node_t *exchange_node) netpatterns_k_exchange_node_t *exchange_node)
{ {
/* local variables */ /* local variables */
int i, j, tmp, cnt; int i, j, tmp, cnt;
@ -510,7 +510,7 @@ OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_knomial_tree_node(
int k_base, kpow_num, peer; int k_base, kpow_num, peer;
NETPATTERNS_VERBOSE( NETPATTERNS_VERBOSE(
("Enter mca_common_netpatterns_setup_recursive_knomial_tree_node(num_nodes=%d, node_rank=%d, tree_order=%d)", ("Enter netpatterns_setup_recursive_knomial_tree_node(num_nodes=%d, node_rank=%d, tree_order=%d)",
num_nodes, node_rank, tree_order)); num_nodes, node_rank, tree_order));
assert(num_nodes > 1); assert(num_nodes > 1);
@ -656,15 +656,15 @@ Error:
} }
#if 1 #if 1
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_doubling_n_tree_node(int num_nodes, int node_rank, int tree_order, OMPI_DECLSPEC int netpatterns_setup_recursive_doubling_n_tree_node(int num_nodes, int node_rank, int tree_order,
mca_common_netpatterns_pair_exchange_node_t *exchange_node) netpatterns_pair_exchange_node_t *exchange_node)
{ {
/* local variables */ /* local variables */
int i, tmp, cnt; int i, tmp, cnt;
int n_levels; int n_levels;
int shift, mask; int shift, mask;
NETPATTERNS_VERBOSE(("Enter mca_common_netpatterns_setup_recursive_doubling_n_tree_node(num_nodes=%d, node_rank=%d, tree_order=%d)", num_nodes, node_rank, tree_order)); NETPATTERNS_VERBOSE(("Enter netpatterns_setup_recursive_doubling_n_tree_node(num_nodes=%d, node_rank=%d, tree_order=%d)", num_nodes, node_rank, tree_order));
assert(num_nodes > 1); assert(num_nodes > 1);
while (tree_order > num_nodes) { while (tree_order > num_nodes) {
@ -797,8 +797,8 @@ Error:
return OMPI_ERROR; return OMPI_ERROR;
} }
OMPI_DECLSPEC void mca_common_netpatterns_free_recursive_doubling_tree_node( OMPI_DECLSPEC void netpatterns_free_recursive_doubling_tree_node(
mca_common_netpatterns_pair_exchange_node_t *exchange_node) netpatterns_pair_exchange_node_t *exchange_node)
{ {
NETPATTERNS_VERBOSE(("About to release rank_extra_sources_array and rank_exchanges")); NETPATTERNS_VERBOSE(("About to release rank_extra_sources_array and rank_exchanges"));
if (exchange_node->rank_extra_sources_array != NULL) { if (exchange_node->rank_extra_sources_array != NULL) {
@ -811,16 +811,16 @@ OMPI_DECLSPEC void mca_common_netpatterns_free_recursive_doubling_tree_node(
} }
#endif #endif
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_doubling_tree_node(int num_nodes, int node_rank, OMPI_DECLSPEC int netpatterns_setup_recursive_doubling_tree_node(int num_nodes, int node_rank,
mca_common_netpatterns_pair_exchange_node_t *exchange_node) netpatterns_pair_exchange_node_t *exchange_node)
{ {
return mca_common_netpatterns_setup_recursive_doubling_n_tree_node(num_nodes, node_rank, 2, exchange_node); return netpatterns_setup_recursive_doubling_n_tree_node(num_nodes, node_rank, 2, exchange_node);
} }
#if 0 #if 0
/*OMPI_DECLSPEC int old_mca_common_netpatterns_setup_recursive_doubling_tree_node(int num_nodes, int node_rank,*/ /*OMPI_DECLSPEC int old_netpatterns_setup_recursive_doubling_tree_node(int num_nodes, int node_rank,*/
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_doubling_n_tree_node(int num_nodes, int node_rank,int tree_order, OMPI_DECLSPEC int netpatterns_setup_recursive_doubling_n_tree_node(int num_nodes, int node_rank,int tree_order,
mca_common_netpatterns_pair_exchange_node_t *exchange_node) netpatterns_pair_exchange_node_t *exchange_node)
{ {
/* local variables */ /* local variables */
/*int tree_order;*/ /*int tree_order;*/

Просмотреть файл

@ -28,7 +28,7 @@ enum {
EXTRA_NODE EXTRA_NODE
}; };
struct mca_common_netpatterns_pair_exchange_node_t { struct netpatterns_pair_exchange_node_t {
/* Order of a node in the tree - usually 2 */ /* Order of a node in the tree - usually 2 */
int tree_order; int tree_order;
@ -62,17 +62,17 @@ struct mca_common_netpatterns_pair_exchange_node_t {
int node_type; int node_type;
}; };
typedef struct mca_common_netpatterns_pair_exchange_node_t mca_common_netpatterns_pair_exchange_node_t; typedef struct netpatterns_pair_exchange_node_t netpatterns_pair_exchange_node_t;
struct mca_common_netpatterns_payload_t { struct netpatterns_payload_t {
int s_len; int s_len;
int r_len; int r_len;
int s_offset; int s_offset;
int r_offset; int r_offset;
}; };
typedef struct mca_common_netpatterns_payload_t mca_common_netpatterns_payload_t; typedef struct netpatterns_payload_t netpatterns_payload_t;
struct mca_common_netpatterns_k_exchange_node_t { struct netpatterns_k_exchange_node_t {
/* Order of a node in the tree - usually 2 */ /* Order of a node in the tree - usually 2 */
int tree_order; int tree_order;
/* number of nodes this node will exchange data with */ /* number of nodes this node will exchange data with */
@ -103,27 +103,27 @@ struct mca_common_netpatterns_k_exchange_node_t {
/* reindexed node_rank */ /* reindexed node_rank */
int reindex_myid; int reindex_myid;
/* 2-d array that hold payload info for each level of recursive k-ing */ /* 2-d array that hold payload info for each level of recursive k-ing */
mca_common_netpatterns_payload_t **payload_info; netpatterns_payload_t **payload_info;
}; };
typedef struct mca_common_netpatterns_k_exchange_node_t typedef struct netpatterns_k_exchange_node_t
mca_common_netpatterns_k_exchange_node_t; netpatterns_k_exchange_node_t;
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_doubling_n_tree_node(int num_nodes, int node_rank, int tree_order, OMPI_DECLSPEC int netpatterns_setup_recursive_doubling_n_tree_node(int num_nodes, int node_rank, int tree_order,
mca_common_netpatterns_pair_exchange_node_t *exchange_node); netpatterns_pair_exchange_node_t *exchange_node);
OMPI_DECLSPEC void mca_common_netpatterns_free_recursive_doubling_tree_node( OMPI_DECLSPEC void netpatterns_free_recursive_doubling_tree_node(
mca_common_netpatterns_pair_exchange_node_t *exchange_node); netpatterns_pair_exchange_node_t *exchange_node);
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_doubling_tree_node(int num_nodes, int node_rank, OMPI_DECLSPEC int netpatterns_setup_recursive_doubling_tree_node(int num_nodes, int node_rank,
mca_common_netpatterns_pair_exchange_node_t *exchange_node); netpatterns_pair_exchange_node_t *exchange_node);
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_knomial_tree_node( OMPI_DECLSPEC int netpatterns_setup_recursive_knomial_tree_node(
int num_nodes, int node_rank, int tree_order, int num_nodes, int node_rank, int tree_order,
mca_common_netpatterns_k_exchange_node_t *exchange_node); netpatterns_k_exchange_node_t *exchange_node);
OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_knomial_allgather_tree_node( OMPI_DECLSPEC int netpatterns_setup_recursive_knomial_allgather_tree_node(
int num_nodes, int node_rank, int tree_order, int *hier_ranks, int num_nodes, int node_rank, int tree_order, int *hier_ranks,
mca_common_netpatterns_k_exchange_node_t *exchange_node); netpatterns_k_exchange_node_t *exchange_node);
/* Input: k_exchange_node structure /* Input: k_exchange_node structure
@ -137,7 +137,7 @@ OMPI_DECLSPEC int mca_common_netpatterns_setup_recursive_knomial_allgather_tree_
*/ */
static inline __opal_attribute_always_inline__ static inline __opal_attribute_always_inline__
int mca_common_netpatterns_get_knomial_level( int netpatterns_get_knomial_level(
int my_rank, int src_rank, int my_rank, int src_rank,
int radix, int size, int radix, int size,
int *k_level) int *k_level)
@ -169,7 +169,7 @@ int mca_common_netpatterns_get_knomial_level(
* Output: source of the data, offset in power of K * Output: source of the data, offset in power of K
*/ */
static inline __opal_attribute_always_inline__ static inline __opal_attribute_always_inline__
int mca_common_netpatterns_get_knomial_data_source( int netpatterns_get_knomial_data_source(
int my_rank, int root, int radix, int size, int my_rank, int root, int radix, int size,
int *k_level, int *logk_level) int *k_level, int *logk_level)
{ {
@ -189,11 +189,11 @@ int mca_common_netpatterns_get_knomial_data_source(
} }
/* Input: my_rank, radix, /* Input: my_rank, radix,
* k_level - that you get from mca_common_netpatterns_get_knomial_data_source * k_level - that you get from netpatterns_get_knomial_data_source
* k_step - some integer * k_step - some integer
* Output: peer - next children in the tree * Output: peer - next children in the tree
* Usage: * Usage:
* src = mca_common_netpatterns_get_knomial_data_source( * src = netpatterns_get_knomial_data_source(
* my_rank, root, radix, size, * my_rank, root, radix, size,
* &k_level, &logk_level) * &k_level, &logk_level)
* recv_from(src......); * recv_from(src......);
@ -206,11 +206,11 @@ int mca_common_netpatterns_get_knomial_data_source(
* for more example please grep in ptpcoll bcol bcast files * for more example please grep in ptpcoll bcol bcast files
*/ */
typedef struct mca_common_netpatter_knomial_step_info_t { typedef struct netpatterns_knomial_step_info_t {
int k_step; int k_step;
int k_level; int k_level;
int k_tmp_peer; int k_tmp_peer;
} mca_common_netpatter_knomial_step_info_t; } netpatterns_knomial_step_info_t;
#define MCA_COMMON_NETPATTERNS_GET_NEXT_KNOMIAL_UPDATE_LEVEL_FOR_BCAST(step_info, radix)\ #define MCA_COMMON_NETPATTERNS_GET_NEXT_KNOMIAL_UPDATE_LEVEL_FOR_BCAST(step_info, radix)\
do { \ do { \

Просмотреть файл

@ -20,14 +20,14 @@
#include <stdlib.h> #include <stdlib.h>
#include "ompi/constants.h" #include "ompi/constants.h"
#include "common_netpatterns.h" #include "netpatterns.h"
/* setup an multi-nomial tree - for each node in the tree /* setup an multi-nomial tree - for each node in the tree
* this returns it's parent, and it's children */ * this returns it's parent, and it's children */
OMPI_DECLSPEC int mca_common_netpatterns_setup_multinomial_tree(int tree_order, int num_nodes, OMPI_DECLSPEC int netpatterns_setup_multinomial_tree(int tree_order, int num_nodes,
mca_common_netpatterns_tree_node_t *tree_nodes) netpatterns_tree_node_t *tree_nodes)
{ {
/* local variables */ /* local variables */
int i,result; int i,result;

Просмотреть файл

@ -21,7 +21,7 @@
#include <stdlib.h> #include <stdlib.h>
#include "ompi/constants.h" #include "ompi/constants.h"
#include "common_netpatterns.h" #include "netpatterns.h"
/* /*
* Create mmaped shared file * Create mmaped shared file
@ -29,8 +29,8 @@
/* setup an n-array tree */ /* setup an n-array tree */
int mca_common_netpatterns_setup_narray_tree(int tree_order, int my_rank, int num_nodes, int netpatterns_setup_narray_tree(int tree_order, int my_rank, int num_nodes,
mca_common_netpatterns_tree_node_t *my_node) netpatterns_tree_node_t *my_node)
{ {
/* local variables */ /* local variables */
int n_levels, result; int n_levels, result;
@ -156,9 +156,9 @@ Error:
return OMPI_ERROR; return OMPI_ERROR;
} }
int mca_common_netpatterns_setup_narray_knomial_tree( int netpatterns_setup_narray_knomial_tree(
int tree_order, int my_rank, int num_nodes, int tree_order, int my_rank, int num_nodes,
mca_common_netpatterns_narray_knomial_tree_node_t *my_node) netpatterns_narray_knomial_tree_node_t *my_node)
{ {
/* local variables */ /* local variables */
int n_levels, result; int n_levels, result;
@ -216,7 +216,7 @@ int mca_common_netpatterns_setup_narray_knomial_tree(
my_rank-cum_cnt; my_rank-cum_cnt;
my_node->level_size = cnt; my_node->level_size = cnt;
rc = mca_common_netpatterns_setup_recursive_knomial_tree_node( rc = netpatterns_setup_recursive_knomial_tree_node(
my_node->level_size, my_node->rank_on_level, my_node->level_size, my_node->rank_on_level,
tree_order, &my_node->k_node); tree_order, &my_node->k_node);
if (OMPI_SUCCESS != rc) { if (OMPI_SUCCESS != rc) {
@ -325,7 +325,7 @@ OMPI_DECLSPEC int roundup_to_power_radix ( int radix, int size, int *n_lvls )
} }
static int fill_in_node_data(int tree_order, int num_nodes, int my_node, static int fill_in_node_data(int tree_order, int num_nodes, int my_node,
mca_common_netpatterns_tree_node_t *nodes_data) netpatterns_tree_node_t *nodes_data)
{ {
/* local variables */ /* local variables */
int rc, num_ranks_per_child, num_children, n_extra; int rc, num_ranks_per_child, num_children, n_extra;
@ -415,16 +415,16 @@ error:
* ranks may be rotated based on who the actual root is, to obtain the * ranks may be rotated based on who the actual root is, to obtain the
* appropriate communication pattern for such roots. * appropriate communication pattern for such roots.
*/ */
OMPI_DECLSPEC int mca_common_netpatterns_setup_narray_tree_contigous_ranks( OMPI_DECLSPEC int netpatterns_setup_narray_tree_contigous_ranks(
int tree_order, int num_nodes, int tree_order, int num_nodes,
mca_common_netpatterns_tree_node_t **tree_nodes) netpatterns_tree_node_t **tree_nodes)
{ {
/* local variables */ /* local variables */
int num_descendent_ranks=num_nodes-1; int num_descendent_ranks=num_nodes-1;
int rc=OMPI_SUCCESS; int rc=OMPI_SUCCESS;
*tree_nodes=(mca_common_netpatterns_tree_node_t *)malloc( *tree_nodes=(netpatterns_tree_node_t *)malloc(
sizeof(mca_common_netpatterns_tree_node_t)* sizeof(netpatterns_tree_node_t)*
num_nodes); num_nodes);
if(!(*tree_nodes) ) { if(!(*tree_nodes) ) {
fprintf(stderr, "Cannot allocate memory for tree_nodes.\n"); fprintf(stderr, "Cannot allocate memory for tree_nodes.\n");