This source file includes following definitions.
- mca_coll_monitoring_neighbor_allgatherv
- mca_coll_monitoring_ineighbor_allgatherv
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 #include <ompi_config.h>
  13 #include <ompi/request/request.h>
  14 #include <ompi/datatype/ompi_datatype.h>
  15 #include <ompi/communicator/communicator.h>
  16 #include <ompi/mca/topo/base/base.h>
  17 #include "coll_monitoring.h"
  18 
  19 int mca_coll_monitoring_neighbor_allgatherv(const void *sbuf, int scount,
  20                                             struct ompi_datatype_t *sdtype,
  21                                             void * rbuf, const int *rcounts, const int *disps,
  22                                             struct ompi_datatype_t *rdtype,
  23                                             struct ompi_communicator_t *comm,
  24                                             mca_coll_base_module_t *module)
  25 {
  26     mca_coll_monitoring_module_t*monitoring_module = (mca_coll_monitoring_module_t*) module;
  27     size_t type_size, data_size, data_size_aggreg = 0;
  28     const mca_topo_base_comm_cart_2_2_0_t *cart = comm->c_topo->mtc.cart;
  29     int dim, srank, drank, world_rank;
  30 
  31     ompi_datatype_type_size(sdtype, &type_size);
  32     data_size = scount * type_size;
  33 
  34     for( dim = 0; dim < cart->ndims; ++dim ) {
  35         srank = MPI_PROC_NULL, drank = MPI_PROC_NULL;
  36 
  37         if (cart->dims[dim] > 1) {
  38             mca_topo_base_cart_shift (comm, dim, 1, &srank, &drank);
  39         } else if (1 == cart->dims[dim] && cart->periods[dim]) {
  40             
  41             continue;
  42         }
  43 
  44         if (MPI_PROC_NULL != srank) {
  45             
  46 
  47 
  48 
  49             if( OPAL_SUCCESS == mca_common_monitoring_get_world_rank(srank, comm->c_remote_group, &world_rank) ) {
  50                 mca_common_monitoring_record_coll(world_rank, data_size);
  51                 data_size_aggreg += data_size;
  52             }
  53         }
  54 
  55         if (MPI_PROC_NULL != drank) {
  56             
  57 
  58 
  59 
  60             if( OPAL_SUCCESS == mca_common_monitoring_get_world_rank(drank, comm->c_remote_group, &world_rank) ) {
  61                 mca_common_monitoring_record_coll(world_rank, data_size);
  62                 data_size_aggreg += data_size;
  63             }
  64         }
  65     }
  66 
  67     mca_common_monitoring_coll_a2a(data_size_aggreg, monitoring_module->data);
  68 
  69     return monitoring_module->real.coll_neighbor_allgatherv(sbuf, scount, sdtype, rbuf, rcounts, disps, rdtype, comm, monitoring_module->real.coll_neighbor_allgatherv_module);
  70 }
  71 
  72 int mca_coll_monitoring_ineighbor_allgatherv(const void *sbuf, int scount,
  73                                              struct ompi_datatype_t *sdtype,
  74                                              void * rbuf, const int *rcounts, const int *disps,
  75                                              struct ompi_datatype_t *rdtype,
  76                                              struct ompi_communicator_t *comm,
  77                                              ompi_request_t ** request,
  78                                              mca_coll_base_module_t *module)
  79 {
  80     mca_coll_monitoring_module_t*monitoring_module = (mca_coll_monitoring_module_t*) module;
  81     size_t type_size, data_size, data_size_aggreg = 0;
  82     const mca_topo_base_comm_cart_2_2_0_t *cart = comm->c_topo->mtc.cart;
  83     int dim, srank, drank, world_rank;
  84 
  85     ompi_datatype_type_size(sdtype, &type_size);
  86     data_size = scount * type_size;
  87 
  88     for( dim = 0; dim < cart->ndims; ++dim ) {
  89         srank = MPI_PROC_NULL, drank = MPI_PROC_NULL;
  90 
  91         if (cart->dims[dim] > 1) {
  92             mca_topo_base_cart_shift (comm, dim, 1, &srank, &drank);
  93         } else if (1 == cart->dims[dim] && cart->periods[dim]) {
  94             
  95             continue;
  96         }
  97 
  98         if (MPI_PROC_NULL != srank) {
  99             
 100 
 101 
 102 
 103             if( OPAL_SUCCESS == mca_common_monitoring_get_world_rank(srank, comm->c_remote_group, &world_rank) ) {
 104                 mca_common_monitoring_record_coll(world_rank, data_size);
 105                 data_size_aggreg += data_size;
 106             }
 107         }
 108 
 109         if (MPI_PROC_NULL != drank) {
 110             
 111 
 112 
 113 
 114             if( OPAL_SUCCESS == mca_common_monitoring_get_world_rank(drank, comm->c_remote_group, &world_rank) ) {
 115                 mca_common_monitoring_record_coll(world_rank, data_size);
 116                 data_size_aggreg += data_size;
 117             }
 118         }
 119     }
 120 
 121     mca_common_monitoring_coll_a2a(data_size_aggreg, monitoring_module->data);
 122 
 123     return monitoring_module->real.coll_ineighbor_allgatherv(sbuf, scount, sdtype, rbuf, rcounts, disps, rdtype, comm, request, monitoring_module->real.coll_ineighbor_allgatherv_module);
 124 }