root/ompi/mca/common/ompio/common_ompio_aggregators.h

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

INCLUDED FROM


   1 /* -*- Mode: C; c-basic-offset:4 ; -*- */
   2 /*
   3  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
   4  *                         University Research and Technology
   5  *                         Corporation.  All rights reserved.
   6  * Copyright (c) 2004-2013 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) 2008-2016 University of Houston. All rights reserved.
  14  * Copyright (c) 2018      Research Organization for Information Science
  15  *                         and Technology (RIST). All rights reserved.
  16  *
  17  * $COPYRIGHT$
  18  *
  19  * Additional copyrights may follow
  20  *
  21  * $HEADER$
  22  */
  23 
  24 
  25 #ifndef MCA_COMMON_OMPIO_AGGREGATORS_H
  26 #define MCA_COMMON_OMPIO_AGGREGATORS_H
  27 
  28 
  29 /*AGGREGATOR GROUPING DECISIONS*/
  30 #define OMPIO_MERGE                     1
  31 #define OMPIO_SPLIT                     2
  32 #define OMPIO_RETAIN                    3
  33 
  34 typedef struct {
  35         int ndims;
  36         int *dims;
  37         int *periods;
  38         int *coords;
  39         int reorder;
  40 } mca_io_ompio_cart_topo_components;
  41 
  42 
  43 typedef struct{
  44         OMPI_MPI_OFFSET_TYPE contg_chunk_size;
  45         int *procs_in_contg_group;
  46         int procs_per_contg_group;
  47 } mca_common_ompio_contg;
  48 
  49 
  50 /*Aggregator selection methods*/
  51 OMPI_DECLSPEC int mca_common_ompio_set_aggregator_props (struct ompio_file_t *fh,
  52                                                          int num_aggregators,
  53                                                          size_t bytes_per_proc);
  54 
  55 int  mca_common_ompio_forced_grouping ( ompio_file_t *fh,
  56                                         int num_groups,
  57                                         mca_common_ompio_contg *contg_groups);
  58 
  59 int mca_common_ompio_cart_based_grouping(ompio_file_t *ompio_fh, int *num_groups,
  60                                          mca_common_ompio_contg *contg_groups);
  61 
  62 int mca_common_ompio_fview_based_grouping(ompio_file_t *fh, int *num_groups,
  63                                           mca_common_ompio_contg *contg_groups);
  64 
  65 int mca_common_ompio_simple_grouping(ompio_file_t *fh, int *num_groups,
  66                                      mca_common_ompio_contg *contg_groups);
  67 
  68 int mca_common_ompio_finalize_initial_grouping(ompio_file_t *fh,  int num_groups,
  69                                                mca_common_ompio_contg *contg_groups);
  70 
  71 int mca_common_ompio_create_groups(ompio_file_t *fh, size_t bytes_per_proc);
  72 
  73 int mca_common_ompio_prepare_to_group(ompio_file_t *fh,
  74                                       OMPI_MPI_OFFSET_TYPE **start_offsets_lens,
  75                                       OMPI_MPI_OFFSET_TYPE **end_offsets,
  76                                       OMPI_MPI_OFFSET_TYPE **aggr_bytes_per_group,
  77                                       OMPI_MPI_OFFSET_TYPE *bytes_per_group,
  78                                       int **decision_list,
  79                                       size_t bytes_per_proc,
  80                                       int *is_aggregator,
  81                                       int *ompio_grouping_flag);
  82 
  83 int mca_common_ompio_retain_initial_groups(ompio_file_t *fh);
  84 
  85 
  86 int mca_common_ompio_split_initial_groups(ompio_file_t *fh,
  87                                           OMPI_MPI_OFFSET_TYPE *start_offsets_lens,
  88                                           OMPI_MPI_OFFSET_TYPE *end_offsets,
  89                                           OMPI_MPI_OFFSET_TYPE bytes_per_group);
  90 
  91 
  92 int mca_common_ompio_split_a_group(ompio_file_t *fh,
  93                                    OMPI_MPI_OFFSET_TYPE *start_offsets_lens,
  94                                    OMPI_MPI_OFFSET_TYPE *end_offsets,
  95                                    int size_new_group,
  96                                    OMPI_MPI_OFFSET_TYPE *max_cci,
  97                                    OMPI_MPI_OFFSET_TYPE *min_cci,
  98                                    int *num_groups, int *size_smallest_group);
  99 
 100 int mca_common_ompio_finalize_split(ompio_file_t *fh, int size_new_group,
 101                                     int size_last_group);
 102 
 103 int mca_common_ompio_merge_initial_groups(ompio_file_t *fh,
 104                                           OMPI_MPI_OFFSET_TYPE *aggr_bytes_per_group,
 105                                           int *decision_list, int is_aggregator);
 106 
 107 int mca_common_ompio_merge_groups(ompio_file_t *fh, int *merge_aggrs,
 108                                   int num_merge_aggrs);
 109 
 110 
 111 #endif /* MCA_COMMON_AGGREGATORS_H */

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