1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #ifndef MCA_COMMON_OMPIO_AGGREGATORS_H
26 #define MCA_COMMON_OMPIO_AGGREGATORS_H
27
28
29
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
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