This source file includes following definitions.
- oshmem_info_do_config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #include "oshmem_config.h"
18 #include "mpi.h"
19 #include "shmem.h"
20
21 #include <string.h>
22 #include <ctype.h>
23 #ifdef HAVE_UNISTD_H
24 #include <unistd.h>
25 #endif
26 #ifdef HAVE_SYS_PARAM_H
27 #include <sys/param.h>
28 #endif
29 #ifdef HAVE_NETDB_H
30 #include <netdb.h>
31 #endif
32
33 #include MCA_timer_IMPLEMENTATION_HEADER
34 #include "opal/include/opal/version.h"
35 #include "opal/class/opal_value_array.h"
36 #include "opal/class/opal_pointer_array.h"
37 #include "opal/util/printf.h"
38 #include "opal/memoryhooks/memory.h"
39 #include "opal/runtime/opal_info_support.h"
40
41 #if OMPI_RTE_ORTE
42 #include "orte/util/show_help.h"
43 #endif
44
45 #include "ompi/tools/ompi_info/ompi_info.h"
46 #include "ompi/include/mpi_portable_platform.h"
47
48 #include "oshmem/tools/oshmem_info/oshmem_info.h"
49
50
51 const char *opal_info_deprecated_value = "deprecated-ompi-info-value";
52
53
54
55
56
57
58
59
60
61
62
63
64
65 void oshmem_info_do_config(bool want_all)
66 {
67 char *fortran;
68 char *heterogeneous;
69 char *memprofile;
70 char *memdebug;
71 char *debug;
72 char *mpi_interface_warning;
73 char *cprofiling;
74 char *cxxprofiling;
75 char *fortran_profiling;
76 char *cxxexceptions;
77 char *threads;
78 char *have_dl;
79 #if OMPI_RTE_ORTE
80 char *mpirun_prefix_by_default;
81 #endif
82 char *sparse_groups;
83 char *wtime_support;
84 char *symbol_visibility;
85 char *ft_support;
86 char *crdebug_support;
87 char *topology_support;
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 char *paramcheck;
104 #define ompi_mpi_param_check 999
105 #if 0 == MPI_PARAM_CHECK
106 paramcheck = "never";
107 #elif 1 == MPI_PARAM_CHECK
108 paramcheck = "always";
109 #else
110 paramcheck = "runtime";
111 #endif
112
113 heterogeneous = OPAL_ENABLE_HETEROGENEOUS_SUPPORT ? "yes" : "no";
114 memprofile = OPAL_ENABLE_MEM_PROFILE ? "yes" : "no";
115 memdebug = OPAL_ENABLE_MEM_DEBUG ? "yes" : "no";
116 debug = OPAL_ENABLE_DEBUG ? "yes" : "no";
117 mpi_interface_warning = OMPI_WANT_MPI_INTERFACE_WARNING ? "yes" : "no";
118 cprofiling = "yes";
119 cxxprofiling = OMPI_BUILD_CXX_BINDINGS ? "yes" : "no";
120 cxxexceptions = (OMPI_BUILD_CXX_BINDINGS && OMPI_HAVE_CXX_EXCEPTION_SUPPORT) ? "yes" : "no";
121 fortran_profiling = (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) ? "yes" : "no";
122 have_dl = OPAL_HAVE_DL_SUPPORT ? "yes" : "no";
123 #if OMPI_RTE_ORTE
124 mpirun_prefix_by_default = ORTE_WANT_ORTERUN_PREFIX_BY_DEFAULT ? "yes" : "no";
125 #endif
126 sparse_groups = OMPI_GROUP_SPARSE ? "yes" : "no";
127 wtime_support = OPAL_TIMER_USEC_NATIVE ? "native" : "gettimeofday";
128 symbol_visibility = OPAL_C_HAVE_VISIBILITY ? "yes" : "no";
129 topology_support = "yes";
130
131
132 if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) {
133 (void)opal_asprintf(&fortran, "yes (%s)",
134 (OPAL_HAVE_WEAK_SYMBOLS ? "all" :
135 (OMPI_FORTRAN_CAPS ? "caps" :
136 (OMPI_FORTRAN_PLAIN ? "lower case" :
137 (OMPI_FORTRAN_SINGLE_UNDERSCORE ? "single underscore" : "double underscore")))));
138 } else {
139 fortran = strdup("no");
140 }
141
142 #if OMPI_RTE_ORTE
143 (void)opal_asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: yes, OPAL support: yes, OMPI progress: %s, ORTE progress: yes, Event lib: yes)",
144 "posix", OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
145 #else
146 (void)opal_asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: yes, OPAL support: yes, OMPI progress: %s, Event lib: yes)",
147 "posix", OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
148 #endif
149
150 (void)opal_asprintf(&ft_support, "%s (checkpoint thread: %s)",
151 OPAL_ENABLE_FT ? "yes" : "no", OPAL_ENABLE_FT_THREAD ? "yes" : "no");
152
153 (void)opal_asprintf(&crdebug_support, "%s",
154 OPAL_ENABLE_CRDEBUG ? "yes" : "no");
155
156
157 opal_info_out("Configured by", "config:user", OPAL_CONFIGURE_USER);
158 opal_info_out("Configured on", "config:timestamp", OPAL_CONFIGURE_DATE);
159 opal_info_out("Configure host", "config:host", OPAL_CONFIGURE_HOST);
160 opal_info_out("Configure command line", "config:cli", OPAL_CONFIGURE_CLI);
161
162 opal_info_out("Built by", "build:user", OMPI_BUILD_USER);
163 opal_info_out("Built on", "build:timestamp", OMPI_BUILD_DATE);
164 opal_info_out("Built host", "build:host", OMPI_BUILD_HOST);
165
166 opal_info_out("C bindings", "bindings:c", "yes");
167 opal_info_out("Fort shmem.fh", "bindings:fortran", fortran);
168 free(fortran);
169
170 opal_info_out("Wrapper compiler rpath", "compiler:all:rpath",
171 WRAPPER_RPATH_SUPPORT);
172 opal_info_out("C compiler", "compiler:c:command", OPAL_CC);
173 opal_info_out("C compiler absolute", "compiler:c:absolute",
174 OPAL_CC_ABSOLUTE);
175 opal_info_out("C compiler family name", "compiler:c:familyname",
176 _STRINGIFY(OPAL_BUILD_PLATFORM_COMPILER_FAMILYNAME));
177 opal_info_out("C compiler version", "compiler:c:version",
178 _STRINGIFY(OPAL_BUILD_PLATFORM_COMPILER_VERSION_STR));
179
180 if (want_all) {
181 opal_info_out_int("C char size", "compiler:c:sizeof:char", sizeof(char));
182
183
184
185
186
187
188
189 opal_info_out_int("C bool size", "compiler:c:sizeof:bool", sizeof(bool));
190 opal_info_out_int("C short size", "compiler:c:sizeof:short", sizeof(short));
191 opal_info_out_int("C int size", "compiler:c:sizeof:int", sizeof(int));
192 opal_info_out_int("C long size", "compiler:c:sizeof:long", sizeof(long));
193 opal_info_out_int("C float size", "compiler:c:sizeof:float", sizeof(float));
194 opal_info_out_int("C double size", "compiler:c:sizeof:double", sizeof(double));
195 opal_info_out_int("C pointer size", "compiler:c:sizeof:pointer", sizeof(void *));
196 opal_info_out_int("C char align", "compiler:c:align:char", OPAL_ALIGNMENT_CHAR);
197 #if OMPI_BUILD_CXX_BINDINGS
198
199
200
201 opal_info_out_int("C bool align", "compiler:c:align:bool", OPAL_ALIGNMENT_CXX_BOOL);
202 #else
203 opal_info_out("C bool align", "compiler:c:align:bool", "skipped");
204 #endif
205 opal_info_out_int("C int align", "compiler:c:align:int", OPAL_ALIGNMENT_INT);
206 opal_info_out_int("C float align", "compiler:c:align:float", OPAL_ALIGNMENT_FLOAT);
207 opal_info_out_int("C double align", "compiler:c:align:double", OPAL_ALIGNMENT_DOUBLE);
208 }
209
210 opal_info_out("C++ compiler", "compiler:cxx:command", OMPI_CXX);
211 opal_info_out("C++ compiler absolute", "compiler:cxx:absolute", OMPI_CXX_ABSOLUTE);
212 opal_info_out("Fort compiler", "compiler:fortran:command", OMPI_FC);
213 opal_info_out("Fort compiler abs", "compiler:fortran:absolute",
214 OMPI_FC_ABSOLUTE);
215
216 if (want_all) {
217
218
219
220 opal_info_out_int("Fort integer size", "compiler:fortran:sizeof:integer",
221 OMPI_SIZEOF_FORTRAN_INTEGER);
222
223 opal_info_out_int("Fort logical size", "compiler:fortran:sizeof:logical",
224 OMPI_SIZEOF_FORTRAN_LOGICAL);
225 opal_info_out_int("Fort logical value true", "compiler:fortran:value:true",
226 OMPI_FORTRAN_VALUE_TRUE);
227
228
229
230
231 if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) {
232 opal_info_out("Fort have integer1", "compiler:fortran:have:integer1",
233 OMPI_HAVE_FORTRAN_INTEGER1 ? "yes" : "no");
234 opal_info_out("Fort have integer2", "compiler:fortran:have:integer2",
235 OMPI_HAVE_FORTRAN_INTEGER2 ? "yes" : "no");
236 opal_info_out("Fort have integer4", "compiler:fortran:have:integer4",
237 OMPI_HAVE_FORTRAN_INTEGER4 ? "yes" : "no");
238 opal_info_out("Fort have integer8", "compiler:fortran:have:integer8",
239 OMPI_HAVE_FORTRAN_INTEGER8 ? "yes" : "no");
240 opal_info_out("Fort have integer16", "compiler:fortran:have:integer16",
241 OMPI_HAVE_FORTRAN_INTEGER16 ? "yes" : "no");
242
243 opal_info_out("Fort have real4", "compiler:fortran:have:real4",
244 OMPI_HAVE_FORTRAN_REAL4 ? "yes" : "no");
245 opal_info_out("Fort have real8", "compiler:fortran:have:real8",
246 OMPI_HAVE_FORTRAN_REAL8 ? "yes" : "no");
247 opal_info_out("Fort have real16", "compiler:fortran:have:real16",
248 OMPI_HAVE_FORTRAN_REAL16 && OMPI_REAL16_MATCHES_C ? "yes" : "no");
249
250 opal_info_out("Fort have complex8", "compiler:fortran:have:complex8",
251 OMPI_HAVE_FORTRAN_COMPLEX8 ? "yes" : "no");
252 opal_info_out("Fort have complex16", "compiler:fortran:have:complex16",
253 OMPI_HAVE_FORTRAN_COMPLEX16 ? "yes" : "no");
254 opal_info_out("Fort have complex32", "compiler:fortran:have:complex32",
255 OMPI_HAVE_FORTRAN_COMPLEX32 && OMPI_REAL16_MATCHES_C ? "yes" : "no");
256
257 opal_info_out_int("Fort integer1 size", "compiler:fortran:sizeof:integer1",
258 OMPI_HAVE_FORTRAN_INTEGER1 ? OMPI_SIZEOF_FORTRAN_INTEGER1 : -1);
259 opal_info_out_int("Fort integer2 size", "compiler:fortran:sizeof:integer2",
260 OMPI_HAVE_FORTRAN_INTEGER2 ? OMPI_SIZEOF_FORTRAN_INTEGER2 : -1);
261 opal_info_out_int("Fort integer4 size", "compiler:fortran:sizeof:integer4",
262 OMPI_HAVE_FORTRAN_INTEGER4 ? OMPI_SIZEOF_FORTRAN_INTEGER4 : -1);
263 opal_info_out_int("Fort integer8 size", "compiler:fortran:sizeof:integer8",
264 OMPI_HAVE_FORTRAN_INTEGER8 ? OMPI_SIZEOF_FORTRAN_INTEGER8 : -1);
265 opal_info_out_int("Fort integer16 size", "compiler:fortran:sizeof:integer16",
266 OMPI_HAVE_FORTRAN_INTEGER16 ? OMPI_SIZEOF_FORTRAN_INTEGER16 : -1);
267
268 opal_info_out_int("Fort real size", "compiler:fortran:sizeof:real",
269 OMPI_SIZEOF_FORTRAN_REAL);
270 opal_info_out_int("Fort real4 size", "compiler:fortran:sizeof:real4",
271 OMPI_HAVE_FORTRAN_REAL4 ? OMPI_SIZEOF_FORTRAN_REAL4 : -1);
272 opal_info_out_int("Fort real8 size", "compiler:fortran:sizeof:real8",
273 OMPI_HAVE_FORTRAN_REAL8 ? OMPI_SIZEOF_FORTRAN_REAL8 : -1);
274 opal_info_out_int("Fort real16 size", "compiler:fortran:sizeof:real17",
275 OMPI_HAVE_FORTRAN_REAL16 ? OMPI_SIZEOF_FORTRAN_REAL16 : -1);
276
277 opal_info_out_int("Fort dbl prec size",
278 "compiler:fortran:sizeof:double_precision",
279 OMPI_SIZEOF_FORTRAN_DOUBLE_PRECISION);
280
281 opal_info_out_int("Fort cplx size", "compiler:fortran:sizeof:complex",
282 OMPI_SIZEOF_FORTRAN_COMPLEX);
283 opal_info_out_int("Fort dbl cplx size",
284 "compiler:fortran:sizeof:double_complex",
285 OMPI_HAVE_FORTRAN_DOUBLE_COMPLEX ? OMPI_SIZEOF_FORTRAN_DOUBLE_COMPLEX : -1);
286 opal_info_out_int("Fort cplx8 size", "compiler:fortran:sizeof:complex8",
287 OMPI_HAVE_FORTRAN_COMPLEX8 ? OMPI_SIZEOF_FORTRAN_COMPLEX8 : -1);
288 opal_info_out_int("Fort cplx16 size", "compiler:fortran:sizeof:complex16",
289 OMPI_HAVE_FORTRAN_COMPLEX16 ? OMPI_SIZEOF_FORTRAN_COMPLEX16 : -1);
290 opal_info_out_int("Fort cplx32 size", "compiler:fortran:sizeof:complex32",
291 OMPI_HAVE_FORTRAN_COMPLEX32 ? OMPI_SIZEOF_FORTRAN_COMPLEX32 : -1);
292
293 opal_info_out_int("Fort integer align", "compiler:fortran:align:integer",
294 OMPI_ALIGNMENT_FORTRAN_INTEGER);
295 opal_info_out_int("Fort integer1 align", "compiler:fortran:align:integer1",
296 OMPI_HAVE_FORTRAN_INTEGER1 ? OMPI_ALIGNMENT_FORTRAN_INTEGER1 : -1);
297 opal_info_out_int("Fort integer2 align", "compiler:fortran:align:integer2",
298 OMPI_HAVE_FORTRAN_INTEGER2 ? OMPI_ALIGNMENT_FORTRAN_INTEGER2 : -1);
299 opal_info_out_int("Fort integer4 align", "compiler:fortran:align:integer4",
300 OMPI_HAVE_FORTRAN_INTEGER4 ? OMPI_ALIGNMENT_FORTRAN_INTEGER4 : -1);
301 opal_info_out_int("Fort integer8 align", "compiler:fortran:align:integer8",
302 OMPI_HAVE_FORTRAN_INTEGER8 ? OMPI_ALIGNMENT_FORTRAN_INTEGER8 : -1);
303 opal_info_out_int("Fort integer16 align", "compiler:fortran:align:integer16",
304 OMPI_HAVE_FORTRAN_INTEGER16 ? OMPI_ALIGNMENT_FORTRAN_INTEGER16 : -1);
305
306 opal_info_out_int("Fort real align", "compiler:fortran:align:real",
307 OMPI_ALIGNMENT_FORTRAN_REAL);
308 opal_info_out_int("Fort real4 align", "compiler:fortran:align:real4",
309 OMPI_HAVE_FORTRAN_REAL4 ? OMPI_ALIGNMENT_FORTRAN_REAL4 : -1);
310 opal_info_out_int("Fort real8 align", "compiler:fortran:align:real8",
311 OMPI_HAVE_FORTRAN_REAL8 ? OMPI_ALIGNMENT_FORTRAN_REAL8 : -1);
312 opal_info_out_int("Fort real16 align", "compiler:fortran:align:real16",
313 OMPI_HAVE_FORTRAN_REAL16 ? OMPI_ALIGNMENT_FORTRAN_REAL16 : -1);
314
315 opal_info_out_int("Fort dbl prec align",
316 "compiler:fortran:align:double_precision",
317 OMPI_ALIGNMENT_FORTRAN_DOUBLE_PRECISION);
318
319 opal_info_out_int("Fort cplx align", "compiler:fortran:align:complex",
320 OMPI_ALIGNMENT_FORTRAN_COMPLEX);
321 opal_info_out_int("Fort dbl cplx align",
322 "compiler:fortran:align:double_complex",
323 OMPI_HAVE_FORTRAN_DOUBLE_COMPLEX ? OMPI_ALIGNMENT_FORTRAN_DOUBLE_COMPLEX : -1);
324 opal_info_out_int("Fort cplx8 align", "compiler:fortran:align:complex8",
325 OMPI_HAVE_FORTRAN_COMPLEX8 ? OMPI_ALIGNMENT_FORTRAN_COMPLEX8 : -1);
326 opal_info_out_int("Fort cplx16 align", "compiler:fortran:align:complex16",
327 OMPI_HAVE_FORTRAN_COMPLEX16 ? OMPI_ALIGNMENT_FORTRAN_COMPLEX16 : -1);
328 opal_info_out_int("Fort cplx32 align", "compiler:fortran:align:complex32",
329 OMPI_HAVE_FORTRAN_COMPLEX32 ? OMPI_ALIGNMENT_FORTRAN_COMPLEX32 : -1);
330
331 } else {
332 opal_info_out("Fort real size", "compiler:fortran:sizeof:real", "skipped");
333 opal_info_out("Fort dbl prec size",
334 "compiler:fortran:sizeof:double_precision", "skipped");
335 opal_info_out("Fort cplx size", "compiler:fortran:sizeof:complex", "skipped");
336 opal_info_out("Fort dbl cplx size",
337 "compiler:fortran:sizeof:double_complex", "skipped");
338
339 opal_info_out("Fort integer align", "compiler:fortran:align:integer", "skipped");
340 opal_info_out("Fort real align", "compiler:fortran:align:real", "skipped");
341 opal_info_out("Fort dbl prec align",
342 "compiler:fortran:align:double_precision","skipped");
343 opal_info_out("Fort cplx align", "compiler:fortran:align:complex", "skipped");
344 opal_info_out("Fort dbl cplx align",
345 "compiler:fortran:align:double_complex", "skipped");
346 }
347 }
348
349 opal_info_out("C profiling", "option:profiling:c", cprofiling);
350 opal_info_out("C++ profiling", "option:profiling:cxx", cxxprofiling);
351 opal_info_out("Fort shmem.fh profiling", "option:profiling:shmem.fh",
352 fortran_profiling);
353
354 opal_info_out("C++ exceptions", "option:cxx_exceptions", cxxexceptions);
355 opal_info_out("Thread support", "option:threads", threads);
356 free(threads);
357 opal_info_out("Sparse Groups", "option:sparse:groups", sparse_groups);
358
359 if (want_all) {
360
361
362
363
364
365
366 opal_info_out("Build CFLAGS", "option:build:cflags", OMPI_BUILD_CFLAGS);
367 opal_info_out("Build CXXFLAGS", "option:build:cxxflags", OMPI_BUILD_CXXFLAGS);
368 opal_info_out("Build FCFLAGS", "option:build:fcflags", OMPI_BUILD_FCFLAGS);
369 opal_info_out("Build LDFLAGS", "option:build:ldflags", OMPI_BUILD_LDFLAGS);
370 opal_info_out("Build LIBS", "option:build:libs", OMPI_BUILD_LIBS);
371
372 opal_info_out("Wrapper extra CFLAGS", "option:wrapper:extra_cflags",
373 WRAPPER_EXTRA_CFLAGS);
374 opal_info_out("Wrapper extra CXXFLAGS", "option:wrapper:extra_cxxflags",
375 WRAPPER_EXTRA_CXXFLAGS);
376 opal_info_out("Wrapper extra FCFLAGS", "option:wrapper:extra_fcflags",
377 WRAPPER_EXTRA_FCFLAGS);
378 opal_info_out("Wrapper extra LDFLAGS", "option:wrapper:extra_ldflags",
379 WRAPPER_EXTRA_LDFLAGS);
380 opal_info_out("Wrapper extra LIBS", "option:wrapper:extra_libs",
381 WRAPPER_EXTRA_LIBS);
382 }
383
384 opal_info_out("Internal debug support", "option:debug", debug);
385 opal_info_out("MPI interface warnings", "option:mpi-interface-warning", mpi_interface_warning);
386 opal_info_out("MPI parameter check", "option:mpi-param-check", paramcheck);
387 opal_info_out("Memory profiling support", "option:mem-profile", memprofile);
388 opal_info_out("Memory debugging support", "option:mem-debug", memdebug);
389 opal_info_out("dl support", "option:dlopen", have_dl);
390 opal_info_out("Heterogeneous support", "options:heterogeneous", heterogeneous);
391 #if OMPI_RTE_ORTE
392 opal_info_out("mpirun default --prefix", "mpirun:prefix_by_default",
393 mpirun_prefix_by_default);
394 #endif
395 opal_info_out("MPI_WTIME support", "options:mpi-wtime", wtime_support);
396 opal_info_out("Symbol vis. support", "options:visibility", symbol_visibility);
397 opal_info_out("Host topology support", "options:host-topology",
398 topology_support);
399
400 opal_info_out("MPI extensions", "options:mpi_ext", OMPI_MPIEXT_COMPONENTS);
401
402 opal_info_out("FT Checkpoint support", "options:ft_support", ft_support);
403 free(ft_support);
404
405 opal_info_out("C/R Enabled Debugging", "options:crdebug_support", crdebug_support);
406 free(crdebug_support);
407
408 opal_info_out_int("MPI_MAX_PROCESSOR_NAME", "options:mpi-max-processor-name",
409 MPI_MAX_PROCESSOR_NAME);
410 opal_info_out_int("MPI_MAX_ERROR_STRING", "options:mpi-max-error-string",
411 MPI_MAX_ERROR_STRING);
412 opal_info_out_int("MPI_MAX_OBJECT_NAME", "options:mpi-max-object-name",
413 MPI_MAX_OBJECT_NAME);
414 opal_info_out_int("MPI_MAX_INFO_KEY", "options:mpi-max-info-key",
415 MPI_MAX_INFO_KEY);
416 opal_info_out_int("MPI_MAX_INFO_VAL", "options:mpi-max-info-val",
417 MPI_MAX_INFO_VAL);
418 opal_info_out_int("MPI_MAX_PORT_NAME", "options:mpi-max-port-name",
419 MPI_MAX_PORT_NAME);
420 opal_info_out_int("MPI_MAX_DATAREP_STRING", "options:mpi-max-datarep-string",
421 MPI_MAX_DATAREP_STRING);
422
423
424
425 {
426 char *oshmem_fortran = OSHMEM_BUILD_FORTRAN_BINDINGS ? "yes" : "no";
427 char *oshmem_compat = OSHMEM_SPEC_COMPAT ? "yes" : "no";
428 char *oshmem_param_check = OSHMEM_PARAM_CHECK ? "yes" : "no";
429 char *oshmem_profiling = OSHMEM_PROFILING ? "yes" : "no";
430
431 opal_info_out("OSHMEM C bindings", "oshmem:bindings:c", "yes");
432 opal_info_out("OSHMEM Fortran bindings", "oshmem:bindings:fort", oshmem_fortran);
433 opal_info_out("OSHMEM SGI/Quadrics mode", "oshmem:options:spec_compat", oshmem_compat);
434 opal_info_out("OSHMEM API param check", "oshmem:options:param_check", oshmem_param_check);
435 opal_info_out("OSHMEM profiling support", "oshmem:options:profiling", oshmem_profiling);
436 }
437 }