Esempio n. 1
0
int mca_bcol_iboffload_bcast_register(mca_bcol_base_module_t *super)
{
    mca_bcol_iboffload_module_t *iboffload_module =
                            (mca_bcol_iboffload_module_t *) super;

    int my_group_index = iboffload_module->ibnet->super.my_index;

    mca_bcol_base_coll_fn_comm_attributes_t comm_attribs;
    mca_bcol_base_coll_fn_invoke_attributes_t inv_attribs;

    IBOFFLOAD_VERBOSE(10, ("Register iboffload Bcast.\n"));

    comm_attribs.bcoll_type = BCOL_BCAST;

    comm_attribs.comm_size_min = 0;
    comm_attribs.comm_size_max = 1024 * 1024;
    comm_attribs.waiting_semantics = NON_BLOCKING;

    inv_attribs.bcol_msg_min = 0;
    inv_attribs.bcol_msg_max = 20000; /* range 1 */

    inv_attribs.datatype_bitmap = 0xffffffff;
    inv_attribs.op_types_bitmap = 0xffffffff;

    comm_attribs.data_src = DATA_SRC_KNOWN;

    if (my_group_index < iboffload_module->power_of_2_ranks) {
        mca_bcol_base_set_attributes(super,
            &comm_attribs, &inv_attribs,
            mca_bcol_iboffload_small_msg_bcast_intra,
            mca_bcol_iboffload_small_msg_bcast_progress);

        inv_attribs.bcol_msg_min = 10000000;
        inv_attribs.bcol_msg_max = 10485760; /* range 4 */

        mca_bcol_base_set_attributes(super,
                &comm_attribs, &inv_attribs,
                mca_bcol_iboffload_bcast_scatter_allgather_intra,
                mca_bcol_iboffload_zero_copy_progress);

    } else {
        mca_bcol_base_set_attributes(super,
            &comm_attribs, &inv_attribs,
            mca_bcol_iboffload_small_msg_bcast_extra_intra,
            mca_bcol_iboffload_small_msg_bcast_progress);

        inv_attribs.bcol_msg_min = 10000000;
        inv_attribs.bcol_msg_max = 10485760; /* range 4 */

        mca_bcol_base_set_attributes(super,
                &comm_attribs, &inv_attribs,
                mca_bcol_iboffload_bcast_scatter_allgather_extra_intra,
                mca_bcol_iboffload_zero_copy_progress);

    }

    return OMPI_SUCCESS;
}
static int mca_bcol_ptpcoll_barrier_setup(mca_bcol_base_module_t *super, int bcoll_type)
{
    netpatterns_k_exchange_node_t *my_exchange_node;
    mca_bcol_ptpcoll_module_t * ptpcoll_module =
                           (mca_bcol_ptpcoll_module_t *) super;

    mca_bcol_base_coll_fn_comm_attributes_t comm_attribs;
    mca_bcol_base_coll_fn_invoke_attributes_t inv_attribs;

    comm_attribs.bcoll_type = bcoll_type;

    comm_attribs.comm_size_min = 0;
    comm_attribs.comm_size_max = 1024 * 1024;
    comm_attribs.waiting_semantics = NON_BLOCKING;

    inv_attribs.bcol_msg_min = 0;
    inv_attribs.bcol_msg_max = 20000; /* range 1 */

    inv_attribs.datatype_bitmap = 0xffffffff;
    inv_attribs.op_types_bitmap = 0xffffffff;

    comm_attribs.data_src = DATA_SRC_KNOWN;

    switch(mca_bcol_ptpcoll_component.barrier_alg) {
        case 1:
            if (PTPCOLL_EXTRA == ptpcoll_module->pow_2type) {
                mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
                    bcol_ptpcoll_barrier_recurs_dbl_extra_new,
                    bcol_ptpcoll_barrier_extra_node_progress);
                break;
            }

            mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
                bcol_ptpcoll_barrier_recurs_dbl_new,
                bcol_ptpcoll_barrier_recurs_dbl_new_progress);
            break;
        case 2:
            my_exchange_node = &ptpcoll_module->knomial_exchange_tree;
            if (my_exchange_node->n_extra_sources > 0 &&
                           EXTRA_NODE == my_exchange_node->node_type) {
                mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
                    bcol_ptpcoll_barrier_recurs_knomial_extra_new,
                    bcol_ptpcoll_barrier_extra_node_progress);
                break;
            }

            mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
                bcol_ptpcoll_barrier_recurs_knomial_new,
                bcol_ptpcoll_barrier_recurs_knomial_new_progress);
            break;
        default:
            PTPCOLL_ERROR(("Wrong barrier_alg flag value."));
    }

    return OMPI_SUCCESS;
}
int mca_bcol_iboffload_fanin_register(mca_bcol_base_module_t *super)
{
    mca_bcol_base_coll_fn_comm_attributes_t comm_attribs;
    mca_bcol_base_coll_fn_invoke_attributes_t inv_attribs;

    IBOFFLOAD_VERBOSE(10, ("Register iboffload Fan-In.\n"));

    comm_attribs.bcoll_type = BCOL_FANIN;

    comm_attribs.comm_size_min = 0;
    comm_attribs.comm_size_max = 1024 * 1024;
    comm_attribs.waiting_semantics = NON_BLOCKING;

    inv_attribs.bcol_msg_min = 0;
    inv_attribs.bcol_msg_max = 20000; /* range 1 */

    inv_attribs.datatype_bitmap = 0xffffffff;
    inv_attribs.op_types_bitmap = 0xffffffff;

    comm_attribs.data_src = DATA_SRC_KNOWN;

    mca_bcol_base_set_attributes(super,
        &comm_attribs, &inv_attribs,
        mca_bcol_iboffload_new_style_fanin_intra,
        mca_bcol_iboffload_new_style_fanin_progress);

    return OMPI_SUCCESS;
}
int bcol_basesmuma_fanout_init(mca_bcol_base_module_t *super)
{
    mca_bcol_base_coll_fn_comm_attributes_t comm_attribs;
    mca_bcol_base_coll_fn_invoke_attributes_t inv_attribs;

    BASESMUMA_VERBOSE(10, ("Basesmuma Fan-Out register.\n"));

    comm_attribs.bcoll_type = BCOL_FANOUT;

    comm_attribs.comm_size_min = 0;
    comm_attribs.comm_size_max = 1024 * 1024;
    comm_attribs.waiting_semantics = NON_BLOCKING;

    inv_attribs.bcol_msg_min = 0;
    inv_attribs.bcol_msg_max = 20000; /* range 1 */

    inv_attribs.datatype_bitmap = 0xffffffff;
    inv_attribs.op_types_bitmap = 0xffffffff;

    comm_attribs.data_src = DATA_SRC_KNOWN;

    mca_bcol_base_set_attributes(super,
        &comm_attribs, &inv_attribs,
        bcol_basesmuma_fanout_new,
        bcol_basesmuma_fanout_new);

    return OMPI_SUCCESS;
}
int bcol_basesmuma_memsync_init(mca_bcol_base_module_t *super)
{
    mca_bcol_base_coll_fn_comm_attributes_t comm_attribs;
    mca_bcol_base_coll_fn_invoke_attributes_t inv_attribs;

    comm_attribs.bcoll_type = BCOL_SYNC;

    comm_attribs.comm_size_min = 0;
    comm_attribs.comm_size_max = 1024 * 1024;
    comm_attribs.waiting_semantics = NON_BLOCKING;

    inv_attribs.bcol_msg_min = 0;
    inv_attribs.bcol_msg_max = 20000; /* range 1 */

    inv_attribs.datatype_bitmap = 0xffffffff;
    inv_attribs.op_types_bitmap = 0xffffffff;

    comm_attribs.data_src = DATA_SRC_KNOWN;

    mca_bcol_base_set_attributes(super,
            &comm_attribs, &inv_attribs,
            bcol_basesmuma_memsync,
            bcol_basesmuma_memsync_progress);

    return OMPI_SUCCESS;
}
/* end debug */
int bcol_basesmuma_bcast_init(mca_bcol_base_module_t *super)
{
	mca_bcol_base_coll_fn_comm_attributes_t comm_attribs;  
	mca_bcol_base_coll_fn_invoke_attributes_t inv_attribs;

	comm_attribs.bcoll_type = BCOL_BCAST;
	comm_attribs.comm_size_min = 0;
	comm_attribs.comm_size_max = 64;
	comm_attribs.data_src = DATA_SRC_KNOWN;
	comm_attribs.waiting_semantics = NON_BLOCKING;
		
	inv_attribs.bcol_msg_min = 0;
	inv_attribs.bcol_msg_max = 20000; /* range 1 */
	inv_attribs.datatype_bitmap = 0xffffffff;
	inv_attribs.op_types_bitmap = 0xffffffff;

    mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
                bcol_basesmuma_bcast_k_nomial_knownroot, 
                bcol_basesmuma_bcast_k_nomial_knownroot);

    comm_attribs.data_src = DATA_SRC_UNKNOWN;
    mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
            bcol_basesmuma_bcast_k_nomial_anyroot, 
            bcol_basesmuma_bcast_k_nomial_anyroot); 
	
	comm_attribs.data_src = DATA_SRC_UNKNOWN;
	inv_attribs.bcol_msg_min = 10000000;
	inv_attribs.bcol_msg_max = 10485760; /* range 4 */

#ifdef __PORTALS_AVAIL__

		comm_attribs.waiting_semantics = BLOCKING;
 		mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
			   bcol_basesmuma_lmsg_scatter_allgather_portals_bcast,
			   bcol_basesmuma_lmsg_scatter_allgather_portals_bcast);

	
		comm_attribs.waiting_semantics = NON_BLOCKING;
		mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
			   bcol_basesmuma_lmsg_scatter_allgather_portals_nb_bcast,
			   bcol_basesmuma_lmsg_scatter_allgather_portals_nb_bcast);

		comm_attribs.data_src = DATA_SRC_KNOWN;
		mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
			   bcol_basesmuma_lmsg_scatter_allgather_portals_nb_knownroot_bcast,
			   bcol_basesmuma_lmsg_scatter_allgather_portals_nb_knownroot_bcast);

#else
/*
    if (super->use_hdl) {
        mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
                bcol_basesmuma_hdl_zerocopy_bcast, 
                bcol_basesmuma_hdl_zerocopy_bcast); 
    } else { */
        mca_bcol_base_set_attributes(super, &comm_attribs, &inv_attribs,
                NULL,
                NULL);
        /*
                bcol_basesmuma_binary_scatter_allgather_segment, 
                bcol_basesmuma_binary_scatter_allgather_segment);
        */        
/*    } */
#endif

		return OMPI_SUCCESS;
}