This source file includes following definitions.
- mca_sharedfp_individual_component_init_query
- mca_sharedfp_individual_component_file_query
- mca_sharedfp_individual_component_file_unquery
- mca_sharedfp_individual_module_init
- mca_sharedfp_individual_module_finalize
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
26
27
28
29 #include "ompi_config.h"
30 #include "mpi.h"
31 #include "ompi/mca/sharedfp/sharedfp.h"
32 #include "ompi/mca/sharedfp/base/base.h"
33 #include "ompi/mca/sharedfp/individual/sharedfp_individual.h"
34
35
36
37
38
39
40
41 static mca_sharedfp_base_module_1_0_0_t individual = {
42 mca_sharedfp_individual_module_init,
43 mca_sharedfp_individual_module_finalize,
44 mca_sharedfp_individual_seek,
45 mca_sharedfp_individual_get_position,
46 mca_sharedfp_individual_read,
47 mca_sharedfp_individual_read_ordered,
48 mca_sharedfp_individual_read_ordered_begin,
49 mca_sharedfp_individual_read_ordered_end,
50 mca_sharedfp_individual_iread,
51 mca_sharedfp_individual_write,
52 mca_sharedfp_individual_write_ordered,
53 mca_sharedfp_individual_write_ordered_begin,
54 mca_sharedfp_individual_write_ordered_end,
55 mca_sharedfp_individual_iwrite,
56 mca_sharedfp_individual_file_open,
57 mca_sharedfp_individual_file_close
58 };
59
60
61
62
63
64
65 int mca_sharedfp_individual_component_init_query(bool enable_progress_threads,
66 bool enable_mpi_threads)
67 {
68
69
70 return OMPI_SUCCESS;
71 }
72
73 struct mca_sharedfp_base_module_1_0_0_t * mca_sharedfp_individual_component_file_query (ompio_file_t *fh, int *priority) {
74
75 int amode;
76 bool wronly_flag=false;
77 bool relaxed_order_flag=false;
78 opal_info_t *info;
79 int flag;
80 int valuelen;
81 char value[MPI_MAX_INFO_VAL+1];
82 *priority = 0;
83
84
85
86
87 amode = fh->f_amode;
88 if ( amode & MPI_MODE_WRONLY || amode & MPI_MODE_RDWR ) {
89 wronly_flag=true;
90 if ( mca_sharedfp_individual_verbose ) {
91 opal_output(ompi_sharedfp_base_framework.framework_output,
92 "mca_sharedfp_individual_component_file_query: "
93 "MPI_MODE_WRONLY[true=%d,false=%d]=%d\n",true,false,wronly_flag);
94 }
95 } else {
96 wronly_flag=false;
97 if ( mca_sharedfp_individual_verbose ) {
98 opal_output(ompi_sharedfp_base_framework.framework_output,
99 "mca_sharedfp_individual_component_file_query: Can not run!, "
100 "MPI_MODE_WRONLY[true=%d,false=%d]=%d\n",true,false,wronly_flag);
101 }
102 }
103
104
105
106 info = fh->f_info;
107 if ( info != &(MPI_INFO_NULL->super) ){
108 valuelen = MPI_MAX_INFO_VAL;
109 opal_info_get ( info,"OMPIO_SHAREDFP_RELAXED_ORDERING", valuelen, value, &flag);
110 if ( flag ) {
111 if ( mca_sharedfp_individual_verbose ) {
112 opal_output(ompi_sharedfp_base_framework.framework_output,
113 "mca_sharedfp_individual_component_file_query: "
114 "OMPIO_SHAREDFP_RELAXED_ORDERING=%s\n",value);
115 }
116
117 relaxed_order_flag=true;
118 }
119 else {
120 if ( mca_sharedfp_individual_verbose ) {
121 opal_output(ompi_sharedfp_base_framework.framework_output,
122 "mca_sharedfp_individual_component_file_query: "
123 "OMPIO_SHAREDFP_RELAXED_ORDERING MPI_Info key not set. "
124 "Set this key in order to increase this component's priority value.\n");
125 }
126 }
127 }
128 else {
129 if ( mca_sharedfp_individual_verbose ) {
130 opal_output(ompi_sharedfp_base_framework.framework_output,
131 "mca_sharedfp_individual_component_file_query: "
132 "OMPIO_SHAREDFP_RELAXED_ORDERING MPI_Info key not set, "
133 "got MPI_INFO_NULL. Set this key in order to increase "
134 "this component's priority value.\n");
135 }
136 }
137
138
139
140
141
142
143 if ( wronly_flag && relaxed_order_flag){
144 *priority=mca_sharedfp_individual_priority;
145 }
146 else {
147 *priority=1;
148 }
149
150 if ( wronly_flag ){
151 return &individual;
152 }
153
154 return NULL;
155 }
156
157 int mca_sharedfp_individual_component_file_unquery (ompio_file_t *file)
158 {
159
160
161
162
163 return OMPI_SUCCESS;
164 }
165
166 int mca_sharedfp_individual_module_init (ompio_file_t *file)
167 {
168 return OMPI_SUCCESS;
169 }
170
171
172 int mca_sharedfp_individual_module_finalize (ompio_file_t *file)
173 {
174 return OMPI_SUCCESS;
175 }