root/ompi/mca/coll/demo/coll_demo_module.c

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

DEFINITIONS

This source file includes following definitions.
  1. mca_coll_demo_init_query
  2. mca_coll_demo_comm_query
  3. mca_coll_demo_module_enable
  4. mca_coll_demo_ft_event

   1 /*
   2  * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
   3  *                         University Research and Technology
   4  *                         Corporation.  All rights reserved.
   5  * Copyright (c) 2004-2017 The University of Tennessee and The University
   6  *                         of Tennessee Research Foundation.  All rights
   7  *                         reserved.
   8  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
   9  *                         University of Stuttgart.  All rights reserved.
  10  * Copyright (c) 2004-2005 The Regents of the University of California.
  11  *                         All rights reserved.
  12  * $COPYRIGHT$
  13  *
  14  * Additional copyrights may follow
  15  *
  16  * $HEADER$
  17  */
  18 
  19 #include "ompi_config.h"
  20 #include "coll_demo.h"
  21 
  22 #include <stdio.h>
  23 
  24 #include "mpi.h"
  25 #include "ompi/communicator/communicator.h"
  26 #include "ompi/mca/coll/coll.h"
  27 #include "ompi/mca/coll/base/base.h"
  28 #include "coll_demo.h"
  29 
  30 #if 0
  31 
  32 /*
  33  * Linear set of collective algorithms
  34  */
  35 static const mca_coll_base_module_1_0_0_t intra = {
  36 
  37     /* Initialization / finalization functions */
  38 
  39     mca_coll_demo_module_init,
  40     mca_coll_demo_module_finalize,
  41 
  42     /* Collective function pointers */
  43 
  44     mca_coll_demo_allgather_intra,
  45     mca_coll_demo_allgatherv_intra,
  46     mca_coll_demo_allreduce_intra,
  47     mca_coll_demo_alltoall_intra,
  48     mca_coll_demo_alltoallv_intra,
  49     mca_coll_demo_alltoallw_intra,
  50     mca_coll_demo_barrier_intra,
  51     mca_coll_demo_bcast_intra,
  52     NULL, /* Leave exscan blank just to force basic to be used */
  53     mca_coll_demo_gather_intra,
  54     mca_coll_demo_gatherv_intra,
  55     mca_coll_demo_reduce_intra,
  56     mca_coll_demo_reduce_scatter_intra,
  57     mca_coll_demo_scan_intra,
  58     mca_coll_demo_scatter_intra,
  59     mca_coll_demo_scatterv_intra,
  60     mca_coll_demo_ft_event
  61 };
  62 
  63 
  64 /*
  65  * Linear set of collective algorithms for intercommunicators
  66  */
  67 static const mca_coll_base_module_1_0_0_t inter = {
  68 
  69     /* Initialization / finalization functions */
  70 
  71     mca_coll_demo_module_init,
  72     mca_coll_demo_module_finalize,
  73 
  74     /* Collective function pointers */
  75 
  76     mca_coll_demo_allgather_inter,
  77     mca_coll_demo_allgatherv_inter,
  78     mca_coll_demo_allreduce_inter,
  79     mca_coll_demo_alltoall_inter,
  80     mca_coll_demo_alltoallv_inter,
  81     mca_coll_demo_alltoallw_inter,
  82     mca_coll_demo_barrier_inter,
  83     mca_coll_demo_bcast_inter,
  84     mca_coll_demo_exscan_inter,
  85     mca_coll_demo_gather_inter,
  86     mca_coll_demo_gatherv_inter,
  87     mca_coll_demo_reduce_inter,
  88     mca_coll_demo_reduce_scatter_inter,
  89     NULL,
  90     mca_coll_demo_scatter_inter,
  91     mca_coll_demo_scatterv_inter,
  92     mca_coll_demo_ft_event
  93 };
  94 
  95 #endif
  96 
  97 /*
  98  * Initial query function that is invoked during MPI_INIT, allowing
  99  * this component to disqualify itself if it doesn't support the
 100  * required level of thread support.
 101  */
 102 int mca_coll_demo_init_query(bool enable_progress_threads,
 103                              bool enable_mpi_threads)
 104 {
 105     /* Nothing to do */
 106 
 107     return OMPI_SUCCESS;
 108 }
 109 
 110 /*
 111  * Invoked when there's a new communicator that has been created.
 112  * Look at the communicator and decide which set of functions and
 113  * priority we want to return.
 114  */
 115 mca_coll_base_module_t *
 116 mca_coll_demo_comm_query(struct ompi_communicator_t *comm, int *priority)
 117 {
 118     mca_coll_demo_module_t *demo_module;
 119 
 120     demo_module = OBJ_NEW(mca_coll_demo_module_t);
 121     if (NULL == demo_module) return NULL;
 122 
 123     *priority = mca_coll_demo_priority;
 124 
 125     demo_module->super.coll_module_enable = mca_coll_demo_module_enable;
 126     demo_module->super.ft_event = mca_coll_demo_ft_event;
 127 
 128     if (OMPI_COMM_IS_INTRA(comm)) {
 129         demo_module->super.coll_allgather  = mca_coll_demo_allgather_intra;
 130         demo_module->super.coll_allgatherv = mca_coll_demo_allgatherv_intra;
 131         demo_module->super.coll_allreduce  = mca_coll_demo_allreduce_intra;
 132         demo_module->super.coll_alltoall   = mca_coll_demo_alltoall_intra;
 133         demo_module->super.coll_alltoallv  = mca_coll_demo_alltoallv_intra;
 134         demo_module->super.coll_alltoallw  = mca_coll_demo_alltoallw_intra;
 135         demo_module->super.coll_barrier    = mca_coll_demo_barrier_intra;
 136         demo_module->super.coll_bcast      = mca_coll_demo_bcast_intra;
 137         demo_module->super.coll_exscan     = mca_coll_demo_exscan_intra;
 138         demo_module->super.coll_gather     = mca_coll_demo_gather_intra;
 139         demo_module->super.coll_gatherv    = mca_coll_demo_gatherv_intra;
 140         demo_module->super.coll_reduce     = mca_coll_demo_reduce_intra;
 141         demo_module->super.coll_reduce_scatter = mca_coll_demo_reduce_scatter_intra;
 142         demo_module->super.coll_scan       = mca_coll_demo_scan_intra;
 143         demo_module->super.coll_scatter    = mca_coll_demo_scatter_intra;
 144         demo_module->super.coll_scatterv   = mca_coll_demo_scatterv_intra;
 145     } else {
 146         demo_module->super.coll_allgather  = mca_coll_demo_allgather_inter;
 147         demo_module->super.coll_allgatherv = mca_coll_demo_allgatherv_inter;
 148         demo_module->super.coll_allreduce  = mca_coll_demo_allreduce_inter;
 149         demo_module->super.coll_alltoall   = mca_coll_demo_alltoall_inter;
 150         demo_module->super.coll_alltoallv  = mca_coll_demo_alltoallv_inter;
 151         demo_module->super.coll_alltoallw  = mca_coll_demo_alltoallw_inter;
 152         demo_module->super.coll_barrier    = mca_coll_demo_barrier_inter;
 153         demo_module->super.coll_bcast      = mca_coll_demo_bcast_inter;
 154         demo_module->super.coll_exscan     = NULL;
 155         demo_module->super.coll_gather     = mca_coll_demo_gather_inter;
 156         demo_module->super.coll_gatherv    = mca_coll_demo_gatherv_inter;
 157         demo_module->super.coll_reduce     = mca_coll_demo_reduce_inter;
 158         demo_module->super.coll_reduce_scatter = mca_coll_demo_reduce_scatter_inter;
 159         demo_module->super.coll_scan       = NULL;
 160         demo_module->super.coll_scatter    = mca_coll_demo_scatter_inter;
 161         demo_module->super.coll_scatterv   = mca_coll_demo_scatterv_inter;
 162     }
 163 
 164     return &(demo_module->super);
 165 }
 166 
 167 #define COPY(comm, module, func)                                        \
 168     do {                                                                \
 169         module->underlying.coll_ ## func  = comm->c_coll->coll_ ## func; \
 170         module->underlying.coll_ ## func  = comm->c_coll->coll_ ## func; \
 171         if (NULL != module->underlying.coll_ ## func ## _module) {      \
 172             OBJ_RETAIN(module->underlying.coll_ ## func ## _module);    \
 173         }                                                               \
 174     } while (0)
 175 
 176 int
 177 mca_coll_demo_module_enable(mca_coll_base_module_t *module,
 178                             struct ompi_communicator_t *comm)
 179 {
 180     mca_coll_demo_module_t *demo_module = (mca_coll_demo_module_t*) module;
 181 
 182     if (mca_coll_demo_verbose > 0) {
 183         printf("Hello!  This is the \"demo\" coll component.  I'll be your coll component\ntoday.  Please tip your waitresses well.\n");
 184     }
 185 
 186     /* save the old pointers */
 187     COPY(comm, demo_module, allgather);
 188     COPY(comm, demo_module, allgatherv);
 189     COPY(comm, demo_module, allreduce);
 190     COPY(comm, demo_module, alltoall);
 191     COPY(comm, demo_module, alltoallv);
 192     COPY(comm, demo_module, alltoallw);
 193     COPY(comm, demo_module, barrier);
 194     COPY(comm, demo_module, bcast);
 195     COPY(comm, demo_module, exscan);
 196     COPY(comm, demo_module, gather);
 197     COPY(comm, demo_module, gatherv);
 198     COPY(comm, demo_module, reduce);
 199     COPY(comm, demo_module, reduce_scatter);
 200     COPY(comm, demo_module, scan);
 201     COPY(comm, demo_module, scatter);
 202     COPY(comm, demo_module, scatterv);
 203 
 204     return OMPI_SUCCESS;
 205 }
 206 
 207 
 208 int mca_coll_demo_ft_event(int state) {
 209     if(OPAL_CRS_CHECKPOINT == state) {
 210         ;
 211     }
 212     else if(OPAL_CRS_CONTINUE == state) {
 213         ;
 214     }
 215     else if(OPAL_CRS_RESTART == state) {
 216         ;
 217     }
 218     else if(OPAL_CRS_TERM == state ) {
 219         ;
 220     }
 221     else {
 222         ;
 223     }
 224 
 225     return OMPI_SUCCESS;
 226 }

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