42
42
*/
43
43
44
44
#include " vt/collective/collective_ops.h"
45
+ #include " vt/context/context.h"
45
46
#include " vt/runtime/runtime.h"
46
47
#include " vt/scheduler/scheduler.h"
47
48
#include " vt/runtime/runtime_inst.h"
53
54
54
55
namespace vt {
55
56
57
+ namespace {
58
+
59
+ #define printIfOverwritten (opt ) \
60
+ do { \
61
+ if (cliConfig.opt != appConfig.opt ) { \
62
+ ++overwrittens; \
63
+ fmt::print ( \
64
+ " {}\t {}--" #opt " {}\n " , \
65
+ vt_pre, magenta, reset \
66
+ ); \
67
+ } \
68
+ } while (0 )
69
+
70
+ void printOverwrittens (
71
+ vt::arguments::AppConfig const &cliConfig,
72
+ vt::arguments::AppConfig const &appConfig
73
+ ) {
74
+ auto const green = debug::green ();
75
+ auto const reset = debug::reset ();
76
+ auto const magenta = debug::magenta ();
77
+ auto const vt_pre = debug::vtPre ();
78
+
79
+ fmt::print (
80
+ " {}{}Predefined options overwritten by CLI arguments:{}\n " ,
81
+ vt_pre, green, reset
82
+ );
83
+
84
+ int overwrittens = 0 ;
85
+
86
+ printIfOverwritten (vt_color);
87
+ printIfOverwritten (vt_no_color);
88
+ printIfOverwritten (vt_quiet);
89
+ printIfOverwritten (vt_sched_progress_han);
90
+ printIfOverwritten (vt_sched_progress_sec);
91
+ printIfOverwritten (vt_no_sigint);
92
+ printIfOverwritten (vt_no_sigsegv);
93
+ printIfOverwritten (vt_no_sigbus);
94
+ printIfOverwritten (vt_no_terminate);
95
+ printIfOverwritten (vt_memory_reporters);
96
+ printIfOverwritten (vt_print_memory_each_phase);
97
+ printIfOverwritten (vt_print_memory_node);
98
+ printIfOverwritten (vt_allow_memory_report_with_ps);
99
+ printIfOverwritten (vt_print_memory_at_threshold);
100
+ printIfOverwritten (vt_print_memory_threshold);
101
+ printIfOverwritten (vt_print_memory_sched_poll);
102
+ printIfOverwritten (vt_print_memory_footprint);
103
+ printIfOverwritten (vt_no_warn_stack);
104
+ printIfOverwritten (vt_no_assert_stack);
105
+ printIfOverwritten (vt_no_abort_stack);
106
+ printIfOverwritten (vt_no_stack);
107
+ printIfOverwritten (vt_stack_file);
108
+ printIfOverwritten (vt_stack_dir);
109
+ printIfOverwritten (vt_stack_mod);
110
+ printIfOverwritten (vt_trace);
111
+ printIfOverwritten (vt_trace_mpi);
112
+ printIfOverwritten (vt_trace_pmpi);
113
+ printIfOverwritten (vt_trace_sys_all);
114
+ printIfOverwritten (vt_trace_sys_term);
115
+ printIfOverwritten (vt_trace_sys_location);
116
+ printIfOverwritten (vt_trace_sys_collection);
117
+ printIfOverwritten (vt_trace_sys_serial_msg);
118
+ printIfOverwritten (vt_trace_file);
119
+ printIfOverwritten (vt_trace_dir);
120
+ printIfOverwritten (vt_trace_mod);
121
+ printIfOverwritten (vt_trace_flush_size);
122
+ printIfOverwritten (vt_trace_spec);
123
+ printIfOverwritten (vt_trace_spec_file);
124
+ printIfOverwritten (vt_trace_memory_usage);
125
+ printIfOverwritten (vt_trace_event_polling);
126
+ printIfOverwritten (vt_trace_irecv_polling);
127
+ printIfOverwritten (vt_lb);
128
+ printIfOverwritten (vt_lb_show_spec);
129
+ printIfOverwritten (vt_lb_quiet);
130
+ printIfOverwritten (vt_lb_file_name);
131
+ printIfOverwritten (vt_lb_name);
132
+ printIfOverwritten (vt_lb_args);
133
+ printIfOverwritten (vt_lb_interval);
134
+ printIfOverwritten (vt_lb_stats);
135
+ printIfOverwritten (vt_lb_stats_compress);
136
+ printIfOverwritten (vt_lb_stats_dir);
137
+ printIfOverwritten (vt_lb_stats_file);
138
+ printIfOverwritten (vt_lb_stats_dir_in);
139
+ printIfOverwritten (vt_lb_stats_file_in);
140
+ printIfOverwritten (vt_help_lb_args);
141
+ printIfOverwritten (vt_no_detect_hang);
142
+ printIfOverwritten (vt_print_no_progress);
143
+ printIfOverwritten (vt_epoch_graph_on_hang);
144
+ printIfOverwritten (vt_epoch_graph_terse);
145
+ printIfOverwritten (vt_term_rooted_use_ds);
146
+ printIfOverwritten (vt_term_rooted_use_wave);
147
+ printIfOverwritten (vt_hang_freq);
148
+ printIfOverwritten (vt_diag_enable);
149
+ printIfOverwritten (vt_diag_print_summary);
150
+ printIfOverwritten (vt_diag_summary_csv_file);
151
+ printIfOverwritten (vt_diag_summary_file);
152
+ printIfOverwritten (vt_diag_csv_base_units);
153
+ printIfOverwritten (vt_pause);
154
+ printIfOverwritten (vt_no_assert_fail);
155
+ printIfOverwritten (vt_throw_on_abort);
156
+ printIfOverwritten (vt_max_mpi_send_size);
157
+ printIfOverwritten (vt_debug_level);
158
+ printIfOverwritten (vt_debug_all);
159
+ printIfOverwritten (vt_debug_none);
160
+ printIfOverwritten (vt_debug_gen);
161
+ printIfOverwritten (vt_debug_runtime);
162
+ printIfOverwritten (vt_debug_active);
163
+ printIfOverwritten (vt_debug_term);
164
+ printIfOverwritten (vt_debug_termds);
165
+ printIfOverwritten (vt_debug_barrier);
166
+ printIfOverwritten (vt_debug_event);
167
+ printIfOverwritten (vt_debug_pipe);
168
+ printIfOverwritten (vt_debug_pool);
169
+ printIfOverwritten (vt_debug_reduce);
170
+ printIfOverwritten (vt_debug_rdma);
171
+ printIfOverwritten (vt_debug_rdma_channel);
172
+ printIfOverwritten (vt_debug_rdma_state);
173
+ printIfOverwritten (vt_debug_param);
174
+ printIfOverwritten (vt_debug_handler);
175
+ printIfOverwritten (vt_debug_hierlb);
176
+ printIfOverwritten (vt_debug_temperedlb);
177
+ printIfOverwritten (vt_debug_scatter);
178
+ printIfOverwritten (vt_debug_sequence);
179
+ printIfOverwritten (vt_debug_sequence_vrt);
180
+ printIfOverwritten (vt_debug_serial_msg);
181
+ printIfOverwritten (vt_debug_trace);
182
+ printIfOverwritten (vt_debug_location);
183
+ printIfOverwritten (vt_debug_lb);
184
+ printIfOverwritten (vt_debug_vrt);
185
+ printIfOverwritten (vt_debug_vrt_coll);
186
+ printIfOverwritten (vt_debug_worker);
187
+ printIfOverwritten (vt_debug_group);
188
+ printIfOverwritten (vt_debug_broadcast);
189
+ printIfOverwritten (vt_debug_objgroup);
190
+ printIfOverwritten (vt_debug_phase);
191
+ printIfOverwritten (vt_debug_context);
192
+ printIfOverwritten (vt_debug_epoch);
193
+ printIfOverwritten (vt_debug_print_flush);
194
+ printIfOverwritten (vt_user_1);
195
+ printIfOverwritten (vt_user_2);
196
+ printIfOverwritten (vt_user_3);
197
+ printIfOverwritten (vt_user_int_1);
198
+ printIfOverwritten (vt_user_int_2);
199
+ printIfOverwritten (vt_user_int_3);
200
+ printIfOverwritten (vt_user_str_1);
201
+ printIfOverwritten (vt_user_str_2);
202
+ printIfOverwritten (vt_user_str_3);
203
+ printIfOverwritten (vt_output_config);
204
+ printIfOverwritten (vt_output_config_file);
205
+
206
+ if (overwrittens == 0 ) {
207
+ fmt::print (" {}\t None.\n " , vt_pre);
208
+ }
209
+ }
210
+
211
+ } /* end anon namespace */
212
+
56
213
template <runtime::RuntimeInstType instance>
57
214
RuntimePtrType CollectiveAnyOps<instance>::initialize(
58
215
int & argc, char **& argv, WorkerCountType const num_workers,
59
- bool is_interop, MPI_Comm* comm
216
+ bool is_interop, MPI_Comm* comm, arguments::AppConfig const * appConfig
60
217
) {
61
218
using vt::runtime::RuntimeInst;
62
219
using vt::runtime::Runtime;
@@ -66,7 +223,8 @@ RuntimePtrType CollectiveAnyOps<instance>::initialize(
66
223
67
224
#pragma sst global rt
68
225
RuntimeInst<instance>::rt = std::make_unique<Runtime>(
69
- argc, argv, num_workers, is_interop, resolved_comm
226
+ argc, argv, num_workers, is_interop, resolved_comm,
227
+ eRuntimeInstance::DefaultInstance, appConfig
70
228
);
71
229
72
230
#pragma sst global rt
@@ -79,6 +237,12 @@ RuntimePtrType CollectiveAnyOps<instance>::initialize(
79
237
#pragma sst global rt
80
238
RuntimeInst<instance>::rt->initialize ();
81
239
240
+ // If appConfig is not nullptr, compare CLI arguments with user-defined ones,
241
+ // and report overwritten ones.
242
+ if (appConfig && theContext ()->getNode () == 0 ) {
243
+ printOverwrittens (*rt->getAppConfig (), *appConfig);
244
+ }
245
+
82
246
return runtime::makeRuntimePtr (rt_ptr);
83
247
}
84
248
0 commit comments