root/ompi/mca/coll/basic/coll_basic_module.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mca_coll_basic_init_query
  2. mca_coll_basic_comm_query
  3. mca_coll_basic_module_enable
  4. mca_coll_basic_ft_event

   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
   2 /*
   3  * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
   4  *                         University Research and Technology
   5  *                         Corporation.  All rights reserved.
   6  * Copyright (c) 2004-2016 The University of Tennessee and The University
   7  *                         of Tennessee Research Foundation.  All rights
   8  *                         reserved.
   9  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
  10  *                         University of Stuttgart.  All rights reserved.
  11  * Copyright (c) 2004-2005 The Regents of the University of California.
  12  *                         All rights reserved.
  13  * Copyright (c) 2012      Sandia National Laboratories. All rights reserved.
  14  * Copyright (c) 2013      Los Alamos National Security, LLC. All rights
  15  *                         reserved.
  16  * Copyright (c) 2015      Research Organization for Information Science
  17  *                         and Technology (RIST). All rights reserved.
  18  * Copyright (c) 2016-2017 IBM Corporation.  All rights reserved.
  19  * $COPYRIGHT$
  20  *
  21  * Additional copyrights may follow
  22  *
  23  * $HEADER$
  24  */
  25 
  26 #include "ompi_config.h"
  27 #include "coll_basic.h"
  28 
  29 #include <stdio.h>
  30 
  31 #include "mpi.h"
  32 #include "ompi/mca/coll/coll.h"
  33 #include "ompi/mca/coll/base/base.h"
  34 #include "coll_basic.h"
  35 
  36 
  37 /*
  38  * Initial query function that is invoked during MPI_INIT, allowing
  39  * this component to disqualify itself if it doesn't support the
  40  * required level of thread support.
  41  */
  42 int
  43 mca_coll_basic_init_query(bool enable_progress_threads,
  44                           bool enable_mpi_threads)
  45 {
  46     /* Nothing to do */
  47 
  48     return OMPI_SUCCESS;
  49 }
  50 
  51 
  52 /*
  53  * Invoked when there's a new communicator that has been created.
  54  * Look at the communicator and decide which set of functions and
  55  * priority we want to return.
  56  */
  57 mca_coll_base_module_t *
  58 mca_coll_basic_comm_query(struct ompi_communicator_t *comm,
  59                           int *priority)
  60 {
  61     mca_coll_basic_module_t *basic_module;
  62 
  63     basic_module = OBJ_NEW(mca_coll_basic_module_t);
  64     if (NULL == basic_module) return NULL;
  65 
  66     *priority = mca_coll_basic_priority;
  67 
  68     /* Choose whether to use [intra|inter], and [linear|log]-based
  69      * algorithms. */
  70     basic_module->super.coll_module_enable = mca_coll_basic_module_enable;
  71     basic_module->super.ft_event = mca_coll_basic_ft_event;
  72 
  73     if (OMPI_COMM_IS_INTER(comm)) {
  74         basic_module->super.coll_allgather  = mca_coll_basic_allgather_inter;
  75         basic_module->super.coll_allgatherv = mca_coll_basic_allgatherv_inter;
  76         basic_module->super.coll_allreduce  = mca_coll_basic_allreduce_inter;
  77         basic_module->super.coll_alltoall   = mca_coll_basic_alltoall_inter;
  78         basic_module->super.coll_alltoallv  = mca_coll_basic_alltoallv_inter;
  79         basic_module->super.coll_alltoallw  = mca_coll_basic_alltoallw_inter;
  80         basic_module->super.coll_barrier    = mca_coll_basic_barrier_inter_lin;
  81         basic_module->super.coll_bcast      = mca_coll_basic_bcast_lin_inter;
  82         basic_module->super.coll_exscan     = NULL;
  83         basic_module->super.coll_gather     = mca_coll_basic_gather_inter;
  84         basic_module->super.coll_gatherv    = mca_coll_basic_gatherv_inter;
  85         basic_module->super.coll_reduce     = mca_coll_basic_reduce_lin_inter;
  86         basic_module->super.coll_reduce_scatter_block = mca_coll_basic_reduce_scatter_block_inter;
  87         basic_module->super.coll_reduce_scatter = mca_coll_basic_reduce_scatter_inter;
  88         basic_module->super.coll_scan       = NULL;
  89         basic_module->super.coll_scatter    = mca_coll_basic_scatter_inter;
  90         basic_module->super.coll_scatterv   = mca_coll_basic_scatterv_inter;
  91     } else if (ompi_comm_size(comm) <= mca_coll_basic_crossover) {
  92         basic_module->super.coll_allgather  = ompi_coll_base_allgather_intra_basic_linear;
  93         basic_module->super.coll_allgatherv = ompi_coll_base_allgatherv_intra_basic_default;
  94         basic_module->super.coll_allreduce  = mca_coll_basic_allreduce_intra;
  95         basic_module->super.coll_alltoall   = ompi_coll_base_alltoall_intra_basic_linear;
  96         basic_module->super.coll_alltoallv  = ompi_coll_base_alltoallv_intra_basic_linear;
  97         basic_module->super.coll_alltoallw  = mca_coll_basic_alltoallw_intra;
  98         basic_module->super.coll_barrier    = ompi_coll_base_barrier_intra_basic_linear;
  99         basic_module->super.coll_bcast      = ompi_coll_base_bcast_intra_basic_linear;
 100         basic_module->super.coll_exscan     = mca_coll_basic_exscan_intra;
 101         basic_module->super.coll_gather     = ompi_coll_base_gather_intra_basic_linear;
 102         basic_module->super.coll_gatherv    = mca_coll_basic_gatherv_intra;
 103         basic_module->super.coll_reduce     = ompi_coll_base_reduce_intra_basic_linear;
 104         basic_module->super.coll_reduce_scatter_block = mca_coll_basic_reduce_scatter_block_intra;
 105         basic_module->super.coll_reduce_scatter = mca_coll_basic_reduce_scatter_intra;
 106         basic_module->super.coll_scan       = mca_coll_basic_scan_intra;
 107         basic_module->super.coll_scatter    = ompi_coll_base_scatter_intra_basic_linear;
 108         basic_module->super.coll_scatterv   = mca_coll_basic_scatterv_intra;
 109     } else {
 110         basic_module->super.coll_allgather  = ompi_coll_base_allgather_intra_basic_linear;
 111         basic_module->super.coll_allgatherv = ompi_coll_base_allgatherv_intra_basic_default;
 112         basic_module->super.coll_allreduce  = mca_coll_basic_allreduce_intra;
 113         basic_module->super.coll_alltoall   = ompi_coll_base_alltoall_intra_basic_linear;
 114         basic_module->super.coll_alltoallv  = ompi_coll_base_alltoallv_intra_basic_linear;
 115         basic_module->super.coll_alltoallw  = mca_coll_basic_alltoallw_intra;
 116         basic_module->super.coll_barrier    = mca_coll_basic_barrier_intra_log;
 117         basic_module->super.coll_bcast      = mca_coll_basic_bcast_log_intra;
 118         basic_module->super.coll_exscan     = mca_coll_basic_exscan_intra;
 119         basic_module->super.coll_gather     = ompi_coll_base_gather_intra_basic_linear;
 120         basic_module->super.coll_gatherv    = mca_coll_basic_gatherv_intra;
 121         basic_module->super.coll_reduce     = mca_coll_basic_reduce_log_intra;
 122         basic_module->super.coll_reduce_scatter_block = mca_coll_basic_reduce_scatter_block_intra;
 123         basic_module->super.coll_reduce_scatter = mca_coll_basic_reduce_scatter_intra;
 124         basic_module->super.coll_scan       = mca_coll_basic_scan_intra;
 125         basic_module->super.coll_scatter    = ompi_coll_base_scatter_intra_basic_linear;
 126         basic_module->super.coll_scatterv   = mca_coll_basic_scatterv_intra;
 127     }
 128 
 129     /* These functions will return an error code if comm does not have a virtual topology */
 130     basic_module->super.coll_neighbor_allgather = mca_coll_basic_neighbor_allgather;
 131     basic_module->super.coll_neighbor_allgatherv = mca_coll_basic_neighbor_allgatherv;
 132     basic_module->super.coll_neighbor_alltoall = mca_coll_basic_neighbor_alltoall;
 133     basic_module->super.coll_neighbor_alltoallv = mca_coll_basic_neighbor_alltoallv;
 134     basic_module->super.coll_neighbor_alltoallw = mca_coll_basic_neighbor_alltoallw;
 135 
 136     basic_module->super.coll_reduce_local = mca_coll_base_reduce_local;
 137 
 138     return &(basic_module->super);
 139 }
 140 
 141 
 142 /*
 143  * Init module on the communicator
 144  */
 145 int
 146 mca_coll_basic_module_enable(mca_coll_base_module_t *module,
 147                              struct ompi_communicator_t *comm)
 148 {
 149     /* prepare the placeholder for the array of request* */
 150     module->base_data = OBJ_NEW(mca_coll_base_comm_t);
 151     if (NULL == module->base_data) {
 152         return OMPI_ERROR;
 153     }
 154 
 155     /* All done */
 156     return OMPI_SUCCESS;
 157 }
 158 
 159 int
 160 mca_coll_basic_ft_event(int state) {
 161     if(OPAL_CRS_CHECKPOINT == state) {
 162         ;
 163     }
 164     else if(OPAL_CRS_CONTINUE == state) {
 165         ;
 166     }
 167     else if(OPAL_CRS_RESTART == state) {
 168         ;
 169     }
 170     else if(OPAL_CRS_TERM == state ) {
 171         ;
 172     }
 173     else {
 174         ;
 175     }
 176 
 177     return OMPI_SUCCESS;
 178 }

/* [<][>][^][v][top][bottom][index][help] */