This source file includes following definitions.
- append
- ompi_info_do_config
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 #include "ompi_config.h"
28 #include "mpi.h"
29
30 #include <string.h>
31 #include <ctype.h>
32 #ifdef HAVE_UNISTD_H
33 #include <unistd.h>
34 #endif
35 #ifdef HAVE_SYS_PARAM_H
36 #include <sys/param.h>
37 #endif
38 #ifdef HAVE_NETDB_H
39 #include <netdb.h>
40 #endif
41
42 #include MCA_timer_IMPLEMENTATION_HEADER
43 #include "opal/include/opal/version.h"
44 #include "opal/class/opal_value_array.h"
45 #include "opal/class/opal_pointer_array.h"
46 #include "opal/util/printf.h"
47 #include "opal/memoryhooks/memory.h"
48 #include "opal/runtime/opal_info_support.h"
49
50 #include "ompi/tools/ompi_info/ompi_info.h"
51 #include "ompi/include/mpi_portable_platform.h"
52
53
54 const char *ompi_info_deprecated_value = "deprecated-ompi-info-value";
55
56 static void append(char *dest, size_t max, int *first, char *src)
57 {
58 size_t len;
59
60 if (NULL == src) {
61 return;
62 }
63
64 len = max - strlen(dest);
65 if (!(*first)) {
66 strncat(dest, ", ", len);
67 len = max - strlen(dest);
68 }
69 strncat(dest, src, len);
70 *first = 0;
71 }
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 void ompi_info_do_config(bool want_all)
87 {
88 char *cxx;
89 char *fortran_mpifh;
90 char *fortran_usempi;
91 char *fortran_usempif08;
92 char *fortran_usempif08_compliance;
93 char *fortran_have_ignore_tkr;
94 char *fortran_have_f08_assumed_rank;
95 char *fortran_build_f08_subarrays;
96 char *fortran_have_optional_args;
97 char *fortran_have_interface;
98 char *fortran_have_iso_fortran_env;
99 char *fortran_have_storage_size;
100 char *fortran_have_bind_c;
101 char *fortran_have_iso_c_binding;
102 char *fortran_have_bind_c_sub;
103 char *fortran_have_bind_c_type;
104 char *fortran_have_bind_c_type_name;
105 char *fortran_have_private;
106 char *fortran_have_protected;
107 char *fortran_have_abstract;
108 char *fortran_have_asynchronous;
109 char *fortran_have_procedure;
110 char *fortran_have_use_only;
111 char *fortran_have_c_funloc;
112 char *fortran_08_using_wrappers_for_choice_buffer_functions;
113 char *fortran_build_sizeof;
114 char *java;
115 char *heterogeneous;
116 char *memprofile;
117 char *memdebug;
118 char *debug;
119 char *mpi_interface_warning;
120 char *cprofiling;
121 char *cxxprofiling;
122 char *fortran_mpifh_profiling;
123 char *fortran_usempi_profiling;
124 char *fortran_usempif08_profiling;
125 char *cxxexceptions;
126 char *threads;
127 char *have_dl;
128 #if OMPI_RTE_ORTE
129 char *mpirun_prefix_by_default;
130 #endif
131 char *sparse_groups;
132 char *wtime_support;
133 char *symbol_visibility;
134 char *ft_support;
135 char *crdebug_support;
136 char *topology_support;
137 char *ipv6_support;
138 char *mpi1_compat_support;
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154 char *paramcheck;
155 #define ompi_mpi_param_check 999
156 #if 0 == MPI_PARAM_CHECK
157 paramcheck = "never";
158 #elif 1 == MPI_PARAM_CHECK
159 paramcheck = "always";
160 #else
161 paramcheck = "runtime";
162 #endif
163
164
165
166
167
168
169
170
171
172 const int OMPI_BUILD_FORTRAN_F08_SUBARRAYS = 0;
173
174
175 cxx = OMPI_BUILD_CXX_BINDINGS ? "yes" : "no";
176 if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPI_BINDINGS) {
177 if (OMPI_FORTRAN_HAVE_IGNORE_TKR) {
178 fortran_usempi = "yes (full: ignore TKR)";
179 } else {
180 fortran_usempi = "yes (limited: overloading)";
181 }
182 } else {
183 fortran_usempi = "no";
184 }
185 fortran_usempif08 = OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS ? "yes" : "no";
186 fortran_have_f08_assumed_rank = OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK ?
187 "yes" : "no";
188 fortran_build_f08_subarrays = OMPI_BUILD_FORTRAN_F08_SUBARRAYS ?
189 "yes" : "no";
190 fortran_have_optional_args = OMPI_FORTRAN_HAVE_OPTIONAL_ARGS ?
191 "yes" : "no";
192 fortran_have_interface = OMPI_FORTRAN_HAVE_INTERFACE ? "yes" : "no";
193 fortran_have_iso_fortran_env = OMPI_FORTRAN_HAVE_ISO_FORTRAN_ENV ?
194 "yes" : "no";
195 fortran_have_storage_size = OMPI_FORTRAN_HAVE_STORAGE_SIZE ? "yes" : "no";
196 fortran_have_bind_c = OMPI_FORTRAN_HAVE_BIND_C ? "yes" : "no";
197 fortran_have_iso_c_binding = OMPI_FORTRAN_HAVE_ISO_C_BINDING ?
198 "yes" : "no";
199 fortran_have_bind_c_sub = OMPI_FORTRAN_HAVE_BIND_C_SUB ? "yes" : "no";
200 fortran_have_bind_c_type = OMPI_FORTRAN_HAVE_BIND_C_TYPE ? "yes" : "no";
201 fortran_have_bind_c_type_name = OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME ?
202 "yes" : "no";
203 fortran_have_private = OMPI_FORTRAN_HAVE_PRIVATE ? "yes" : "no";
204 fortran_have_protected = OMPI_FORTRAN_HAVE_PROTECTED ? "yes" : "no";
205 fortran_have_abstract = OMPI_FORTRAN_HAVE_ABSTRACT ? "yes" : "no";
206 fortran_have_asynchronous = OMPI_FORTRAN_HAVE_ASYNCHRONOUS ? "yes" : "no";
207 fortran_have_procedure = OMPI_FORTRAN_HAVE_PROCEDURE ? "yes" : "no";
208 fortran_have_use_only = OMPI_FORTRAN_HAVE_USE_ONLY ? "yes" : "no";
209 fortran_have_c_funloc = OMPI_FORTRAN_HAVE_C_FUNLOC ? "yes" : "no";
210 fortran_08_using_wrappers_for_choice_buffer_functions =
211 OMPI_FORTRAN_NEED_WRAPPER_ROUTINES ? "yes" : "no";
212 fortran_build_sizeof = OMPI_FORTRAN_BUILD_SIZEOF ?
213 "yes" : "no";
214
215
216
217 char f08_msg[1024];
218 if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS) {
219
220
221
222
223 if (OMPI_BUILD_FORTRAN_F08_SUBARRAYS &&
224 OMPI_FORTRAN_HAVE_PRIVATE &&
225 OMPI_FORTRAN_HAVE_ABSTRACT &&
226 OMPI_FORTRAN_HAVE_ASYNCHRONOUS &&
227 OMPI_FORTRAN_HAVE_PROCEDURE &&
228 OMPI_FORTRAN_HAVE_USE_ONLY &&
229 OMPI_FORTRAN_HAVE_C_FUNLOC &&
230 OMPI_FORTRAN_NEED_WRAPPER_ROUTINES) {
231 fortran_usempif08_compliance = "The mpi_f08 module is available, and is fully compliant. w00t!";
232 } else {
233 int first = 1;
234 snprintf(f08_msg, sizeof(f08_msg),
235 "The mpi_f08 module is available, but due to limitations in the %s compiler and/or Open MPI, does not support the following: ",
236 OMPI_FC);
237 if (!OMPI_BUILD_FORTRAN_F08_SUBARRAYS) {
238 append(f08_msg, sizeof(f08_msg), &first, "array subsections");
239 }
240 if (!OMPI_FORTRAN_HAVE_PRIVATE) {
241 append(f08_msg, sizeof(f08_msg), &first,
242 "private MPI_Status members");
243 }
244 if (!OMPI_FORTRAN_HAVE_ABSTRACT) {
245 append(f08_msg, sizeof(f08_msg), &first,
246 "ABSTRACT INTERFACE function pointers");
247 }
248 if (!OMPI_FORTRAN_HAVE_ASYNCHRONOUS) {
249 append(f08_msg, sizeof(f08_msg), &first,
250 "Fortran '08-specified ASYNCHRONOUS behavior");
251 }
252 if (!OMPI_FORTRAN_HAVE_PROCEDURE) {
253 append(f08_msg, sizeof(f08_msg), &first, "PROCEDUREs");
254 }
255 if (!OMPI_FORTRAN_HAVE_USE_ONLY) {
256 append(f08_msg, sizeof(f08_msg), &first, "USE_ONLY");
257 }
258 if (!OMPI_FORTRAN_HAVE_C_FUNLOC) {
259 append(f08_msg, sizeof(f08_msg), &first, "C_FUNLOCs");
260 }
261 if (OMPI_FORTRAN_NEED_WRAPPER_ROUTINES) {
262 append(f08_msg, sizeof(f08_msg), &first,
263 "direct passthru (where possible) to underlying Open MPI's C functionality");
264 }
265 fortran_usempif08_compliance = f08_msg;
266 }
267 } else {
268 fortran_usempif08_compliance = "The mpi_f08 module was not built";
269 }
270
271 java = OMPI_WANT_JAVA_BINDINGS ? "yes" : "no";
272 heterogeneous = OPAL_ENABLE_HETEROGENEOUS_SUPPORT ? "yes" : "no";
273 memprofile = OPAL_ENABLE_MEM_PROFILE ? "yes" : "no";
274 memdebug = OPAL_ENABLE_MEM_DEBUG ? "yes" : "no";
275 debug = OPAL_ENABLE_DEBUG ? "yes" : "no";
276 mpi_interface_warning = OMPI_WANT_MPI_INTERFACE_WARNING ? "yes" : "no";
277 cprofiling = "yes";
278 cxxprofiling = OMPI_BUILD_CXX_BINDINGS ? "yes" : "no";
279 cxxexceptions = (OMPI_BUILD_CXX_BINDINGS && OMPI_HAVE_CXX_EXCEPTION_SUPPORT) ? "yes" : "no";
280 fortran_mpifh_profiling = (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) ? "yes" : "no";
281 fortran_usempi_profiling = (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPI_BINDINGS) ? "yes" : "no";
282 fortran_usempif08_profiling = (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS) ? "yes" : "no";
283 have_dl = OPAL_HAVE_DL_SUPPORT ? "yes" : "no";
284 #if OMPI_RTE_ORTE
285 mpirun_prefix_by_default = ORTE_WANT_ORTERUN_PREFIX_BY_DEFAULT ? "yes" : "no";
286 #endif
287 sparse_groups = OMPI_GROUP_SPARSE ? "yes" : "no";
288 wtime_support = OPAL_TIMER_USEC_NATIVE ? "native" : "gettimeofday";
289 symbol_visibility = OPAL_C_HAVE_VISIBILITY ? "yes" : "no";
290 topology_support = "yes";
291 ipv6_support = OPAL_ENABLE_IPV6 ? "yes" : "no";
292
293
294
295 mpi1_compat_support = "no";
296
297
298 if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) {
299 (void)opal_asprintf(&fortran_mpifh, "yes (%s)",
300 (OPAL_HAVE_WEAK_SYMBOLS ? "all" :
301 (OMPI_FORTRAN_CAPS ? "caps" :
302 (OMPI_FORTRAN_PLAIN ? "lower case" :
303 (OMPI_FORTRAN_SINGLE_UNDERSCORE ? "single underscore" : "double underscore")))));
304 } else {
305 fortran_mpifh = strdup("no");
306 }
307
308 if (OMPI_FORTRAN_HAVE_IGNORE_TKR) {
309
310
311
312
313 (void)opal_asprintf(&fortran_have_ignore_tkr, "yes (%s)",
314 OMPI_FORTRAN_IGNORE_TKR_PREDECL);
315 } else {
316 fortran_have_ignore_tkr = strdup("no");
317 }
318
319 #if OMPI_RTE_ORTE
320 (void)opal_asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: yes, OPAL support: yes, OMPI progress: %s, ORTE progress: yes, Event lib: yes)",
321 "posix", OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
322 #else
323 (void)opal_asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: yes, OPAL support: yes, OMPI progress: %s, Event lib: yes)",
324 "posix", OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
325 #endif
326
327 (void)opal_asprintf(&ft_support, "%s (checkpoint thread: %s)",
328 OPAL_ENABLE_FT ? "yes" : "no", OPAL_ENABLE_FT_THREAD ? "yes" : "no");
329
330 (void)opal_asprintf(&crdebug_support, "%s",
331 OPAL_ENABLE_CRDEBUG ? "yes" : "no");
332
333
334 opal_info_out("Configured by", "config:user", OPAL_CONFIGURE_USER);
335 opal_info_out("Configured on", "config:timestamp", OPAL_CONFIGURE_DATE);
336 opal_info_out("Configure host", "config:host", OPAL_CONFIGURE_HOST);
337 opal_info_out("Configure command line", "config:cli", OPAL_CONFIGURE_CLI);
338
339 opal_info_out("Built by", "build:user", OMPI_BUILD_USER);
340 opal_info_out("Built on", "build:timestamp", OMPI_BUILD_DATE);
341 opal_info_out("Built host", "build:host", OMPI_BUILD_HOST);
342
343 opal_info_out("C bindings", "bindings:c", "yes");
344 opal_info_out("C++ bindings", "bindings:cxx", cxx);
345 opal_info_out("Fort mpif.h", "bindings:mpif.h", fortran_mpifh);
346 free(fortran_mpifh);
347 opal_info_out("Fort use mpi", "bindings:use_mpi",
348 fortran_usempi);
349 opal_info_out("Fort use mpi size", "bindings:use_mpi:size",
350 ompi_info_deprecated_value);
351 opal_info_out("Fort use mpi_f08", "bindings:use_mpi_f08",
352 fortran_usempif08);
353 opal_info_out("Fort mpi_f08 compliance", "bindings:use_mpi_f08:compliance",
354 fortran_usempif08_compliance);
355 opal_info_out("Fort mpi_f08 subarrays", "bindings:use_mpi_f08:subarrays-supported",
356 fortran_build_f08_subarrays);
357 opal_info_out("Java bindings", "bindings:java", java);
358
359 opal_info_out("Wrapper compiler rpath", "compiler:all:rpath",
360 WRAPPER_RPATH_SUPPORT);
361 opal_info_out("C compiler", "compiler:c:command", OPAL_CC);
362 opal_info_out("C compiler absolute", "compiler:c:absolute",
363 OPAL_CC_ABSOLUTE);
364 opal_info_out("C compiler family name", "compiler:c:familyname",
365 _STRINGIFY(OPAL_BUILD_PLATFORM_COMPILER_FAMILYNAME));
366 opal_info_out("C compiler version", "compiler:c:version",
367 _STRINGIFY(OPAL_BUILD_PLATFORM_COMPILER_VERSION_STR));
368
369 if (want_all) {
370 opal_info_out_int("C char size", "compiler:c:sizeof:char", sizeof(char));
371
372
373
374
375
376
377
378 opal_info_out_int("C bool size", "compiler:c:sizeof:bool", sizeof(bool));
379 opal_info_out_int("C short size", "compiler:c:sizeof:short", sizeof(short));
380 opal_info_out_int("C int size", "compiler:c:sizeof:int", sizeof(int));
381 opal_info_out_int("C long size", "compiler:c:sizeof:long", sizeof(long));
382 #if defined(HAVE_SHORT_FLOAT)
383 opal_info_out_int("C short float size", "compiler:c:sizeof:short_float", sizeof(short float));
384 #elif defined(HAVE_OPAL_SHORT_FLOAT_T)
385 opal_info_out_int("C short float size", "compiler:c:sizeof:short_float", sizeof(opal_short_float_t));
386 #endif
387 opal_info_out_int("C float size", "compiler:c:sizeof:float", sizeof(float));
388 opal_info_out_int("C double size", "compiler:c:sizeof:double", sizeof(double));
389 opal_info_out_int("C long double size", "compiler:c:sizeof:long_double", sizeof(long double));
390 opal_info_out_int("C pointer size", "compiler:c:sizeof:pointer", sizeof(void *));
391 opal_info_out_int("C char align", "compiler:c:align:char", OPAL_ALIGNMENT_CHAR);
392 #if OMPI_BUILD_CXX_BINDINGS
393
394
395
396 opal_info_out_int("C bool align", "compiler:c:align:bool", OPAL_ALIGNMENT_CXX_BOOL);
397 #else
398 opal_info_out("C bool align", "compiler:c:align:bool", "skipped");
399 #endif
400 opal_info_out_int("C int align", "compiler:c:align:int", OPAL_ALIGNMENT_INT);
401 #if defined(HAVE_SHORT_FLOAT)
402 opal_info_out_int("C short float align", "compiler:c:align:short_float", OPAL_ALIGNMENT_SHORT_FLOAT);
403 #elif defined(HAVE_OPAL_SHORT_FLOAT_T)
404 opal_info_out_int("C short float align", "compiler:c:align:short_float", OPAL_ALIGNMENT_OPAL_SHORT_FLOAT_T);
405 #endif
406 opal_info_out_int("C float align", "compiler:c:align:float", OPAL_ALIGNMENT_FLOAT);
407 opal_info_out_int("C double align", "compiler:c:align:double", OPAL_ALIGNMENT_DOUBLE);
408 opal_info_out_int("C long double align", "compiler:c:align:long_double", OPAL_ALIGNMENT_LONG_DOUBLE);
409 }
410
411 opal_info_out("C++ compiler", "compiler:cxx:command", OMPI_CXX);
412 opal_info_out("C++ compiler absolute", "compiler:cxx:absolute", OMPI_CXX_ABSOLUTE);
413 opal_info_out("Fort compiler", "compiler:fortran:command", OMPI_FC);
414 opal_info_out("Fort compiler abs", "compiler:fortran:absolute",
415 OMPI_FC_ABSOLUTE);
416 opal_info_out("Fort ignore TKR", "compiler:fortran:ignore_tkr",
417 fortran_have_ignore_tkr);
418 free(fortran_have_ignore_tkr);
419 opal_info_out("Fort 08 assumed shape",
420 "compiler:fortran:f08_assumed_rank",
421 fortran_have_f08_assumed_rank);
422 opal_info_out("Fort optional args",
423 "compiler:fortran:optional_arguments",
424 fortran_have_optional_args);
425 opal_info_out("Fort INTERFACE",
426 "compiler:fortran:interface",
427 fortran_have_interface);
428 opal_info_out("Fort ISO_FORTRAN_ENV",
429 "compiler:fortran:iso_fortran_env",
430 fortran_have_iso_fortran_env);
431 opal_info_out("Fort STORAGE_SIZE",
432 "compiler:fortran:storage_size",
433 fortran_have_storage_size);
434 opal_info_out("Fort BIND(C) (all)",
435 "compiler:fortran:bind_c",
436 fortran_have_bind_c);
437 opal_info_out("Fort ISO_C_BINDING",
438 "compiler:fortran:iso_c_binding",
439 fortran_have_iso_c_binding);
440 opal_info_out("Fort SUBROUTINE BIND(C)",
441 "compiler:fortran:subroutine_bind_c",
442 fortran_have_bind_c_sub);
443 opal_info_out("Fort TYPE,BIND(C)",
444 "compiler:fortran:type_bind_c",
445 fortran_have_bind_c_type);
446 opal_info_out("Fort T,BIND(C,name=\"a\")",
447 "compiler:fortran:type_name_bind_c",
448 fortran_have_bind_c_type_name);
449 opal_info_out("Fort PRIVATE",
450 "compiler:fortran:private",
451 fortran_have_private);
452 opal_info_out("Fort PROTECTED",
453 "compiler:fortran:protected",
454 fortran_have_protected);
455 opal_info_out("Fort ABSTRACT",
456 "compiler:fortran:abstract",
457 fortran_have_abstract);
458 opal_info_out("Fort ASYNCHRONOUS",
459 "compiler:fortran:asynchronous",
460 fortran_have_asynchronous);
461 opal_info_out("Fort PROCEDURE",
462 "compiler:fortran:procedure",
463 fortran_have_procedure);
464 opal_info_out("Fort USE...ONLY",
465 "compiler:fortran:use_only",
466 fortran_have_use_only);
467 opal_info_out("Fort C_FUNLOC",
468 "compiler:fortran:c_funloc",
469 fortran_have_c_funloc);
470 opal_info_out("Fort f08 using wrappers",
471 "compiler:fortran:08_wrappers",
472 fortran_08_using_wrappers_for_choice_buffer_functions);
473 opal_info_out("Fort MPI_SIZEOF",
474 "compiler:fortran:mpi_sizeof",
475 fortran_build_sizeof);
476
477 if (want_all) {
478
479
480
481 opal_info_out_int("Fort integer size", "compiler:fortran:sizeof:integer",
482 OMPI_SIZEOF_FORTRAN_INTEGER);
483
484 opal_info_out_int("Fort logical size", "compiler:fortran:sizeof:logical",
485 OMPI_SIZEOF_FORTRAN_LOGICAL);
486 opal_info_out_int("Fort logical value true", "compiler:fortran:value:true",
487 OMPI_FORTRAN_VALUE_TRUE);
488
489
490
491
492 if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) {
493 opal_info_out("Fort have integer1", "compiler:fortran:have:integer1",
494 OMPI_HAVE_FORTRAN_INTEGER1 ? "yes" : "no");
495 opal_info_out("Fort have integer2", "compiler:fortran:have:integer2",
496 OMPI_HAVE_FORTRAN_INTEGER2 ? "yes" : "no");
497 opal_info_out("Fort have integer4", "compiler:fortran:have:integer4",
498 OMPI_HAVE_FORTRAN_INTEGER4 ? "yes" : "no");
499 opal_info_out("Fort have integer8", "compiler:fortran:have:integer8",
500 OMPI_HAVE_FORTRAN_INTEGER8 ? "yes" : "no");
501 opal_info_out("Fort have integer16", "compiler:fortran:have:integer16",
502 OMPI_HAVE_FORTRAN_INTEGER16 ? "yes" : "no");
503
504 opal_info_out("Fort have real2", "compiler:fortran:have:real2",
505 OMPI_HAVE_FORTRAN_REAL2 ? "yes" : "no");
506 opal_info_out("Fort have real4", "compiler:fortran:have:real4",
507 OMPI_HAVE_FORTRAN_REAL4 ? "yes" : "no");
508 opal_info_out("Fort have real8", "compiler:fortran:have:real8",
509 OMPI_HAVE_FORTRAN_REAL8 ? "yes" : "no");
510 opal_info_out("Fort have real16", "compiler:fortran:have:real16",
511 OMPI_HAVE_FORTRAN_REAL16 && OMPI_REAL16_MATCHES_C ? "yes" : "no");
512
513 opal_info_out("Fort have complex4", "compiler:fortran:have:complex4",
514 OMPI_HAVE_FORTRAN_COMPLEX4 ? "yes" : "no");
515 opal_info_out("Fort have complex8", "compiler:fortran:have:complex8",
516 OMPI_HAVE_FORTRAN_COMPLEX8 ? "yes" : "no");
517 opal_info_out("Fort have complex16", "compiler:fortran:have:complex16",
518 OMPI_HAVE_FORTRAN_COMPLEX16 ? "yes" : "no");
519 opal_info_out("Fort have complex32", "compiler:fortran:have:complex32",
520 OMPI_HAVE_FORTRAN_COMPLEX32 && OMPI_REAL16_MATCHES_C ? "yes" : "no");
521
522 opal_info_out_int("Fort integer1 size", "compiler:fortran:sizeof:integer1",
523 OMPI_HAVE_FORTRAN_INTEGER1 ? OMPI_SIZEOF_FORTRAN_INTEGER1 : -1);
524 opal_info_out_int("Fort integer2 size", "compiler:fortran:sizeof:integer2",
525 OMPI_HAVE_FORTRAN_INTEGER2 ? OMPI_SIZEOF_FORTRAN_INTEGER2 : -1);
526 opal_info_out_int("Fort integer4 size", "compiler:fortran:sizeof:integer4",
527 OMPI_HAVE_FORTRAN_INTEGER4 ? OMPI_SIZEOF_FORTRAN_INTEGER4 : -1);
528 opal_info_out_int("Fort integer8 size", "compiler:fortran:sizeof:integer8",
529 OMPI_HAVE_FORTRAN_INTEGER8 ? OMPI_SIZEOF_FORTRAN_INTEGER8 : -1);
530 opal_info_out_int("Fort integer16 size", "compiler:fortran:sizeof:integer16",
531 OMPI_HAVE_FORTRAN_INTEGER16 ? OMPI_SIZEOF_FORTRAN_INTEGER16 : -1);
532
533 opal_info_out_int("Fort real size", "compiler:fortran:sizeof:real",
534 OMPI_SIZEOF_FORTRAN_REAL);
535 opal_info_out_int("Fort real2 size", "compiler:fortran:sizeof:real2",
536 OMPI_HAVE_FORTRAN_REAL2 ? OMPI_SIZEOF_FORTRAN_REAL2 : -1);
537 opal_info_out_int("Fort real4 size", "compiler:fortran:sizeof:real4",
538 OMPI_HAVE_FORTRAN_REAL4 ? OMPI_SIZEOF_FORTRAN_REAL4 : -1);
539 opal_info_out_int("Fort real8 size", "compiler:fortran:sizeof:real8",
540 OMPI_HAVE_FORTRAN_REAL8 ? OMPI_SIZEOF_FORTRAN_REAL8 : -1);
541 opal_info_out_int("Fort real16 size", "compiler:fortran:sizeof:real17",
542 OMPI_HAVE_FORTRAN_REAL16 ? OMPI_SIZEOF_FORTRAN_REAL16 : -1);
543
544 opal_info_out_int("Fort dbl prec size",
545 "compiler:fortran:sizeof:double_precision",
546 OMPI_SIZEOF_FORTRAN_DOUBLE_PRECISION);
547
548 opal_info_out_int("Fort cplx size", "compiler:fortran:sizeof:complex",
549 OMPI_SIZEOF_FORTRAN_COMPLEX);
550 opal_info_out_int("Fort dbl cplx size",
551 "compiler:fortran:sizeof:double_complex",
552 OMPI_HAVE_FORTRAN_DOUBLE_COMPLEX ? OMPI_SIZEOF_FORTRAN_DOUBLE_COMPLEX : -1);
553 opal_info_out_int("Fort cplx4 size", "compiler:fortran:sizeof:complex4",
554 OMPI_HAVE_FORTRAN_COMPLEX4 ? OMPI_SIZEOF_FORTRAN_COMPLEX4 : -1);
555 opal_info_out_int("Fort cplx8 size", "compiler:fortran:sizeof:complex8",
556 OMPI_HAVE_FORTRAN_COMPLEX8 ? OMPI_SIZEOF_FORTRAN_COMPLEX8 : -1);
557 opal_info_out_int("Fort cplx16 size", "compiler:fortran:sizeof:complex16",
558 OMPI_HAVE_FORTRAN_COMPLEX16 ? OMPI_SIZEOF_FORTRAN_COMPLEX16 : -1);
559 opal_info_out_int("Fort cplx32 size", "compiler:fortran:sizeof:complex32",
560 OMPI_HAVE_FORTRAN_COMPLEX32 ? OMPI_SIZEOF_FORTRAN_COMPLEX32 : -1);
561
562 opal_info_out_int("Fort integer align", "compiler:fortran:align:integer",
563 OMPI_ALIGNMENT_FORTRAN_INTEGER);
564 opal_info_out_int("Fort integer1 align", "compiler:fortran:align:integer1",
565 OMPI_HAVE_FORTRAN_INTEGER1 ? OMPI_ALIGNMENT_FORTRAN_INTEGER1 : -1);
566 opal_info_out_int("Fort integer2 align", "compiler:fortran:align:integer2",
567 OMPI_HAVE_FORTRAN_INTEGER2 ? OMPI_ALIGNMENT_FORTRAN_INTEGER2 : -1);
568 opal_info_out_int("Fort integer4 align", "compiler:fortran:align:integer4",
569 OMPI_HAVE_FORTRAN_INTEGER4 ? OMPI_ALIGNMENT_FORTRAN_INTEGER4 : -1);
570 opal_info_out_int("Fort integer8 align", "compiler:fortran:align:integer8",
571 OMPI_HAVE_FORTRAN_INTEGER8 ? OMPI_ALIGNMENT_FORTRAN_INTEGER8 : -1);
572 opal_info_out_int("Fort integer16 align", "compiler:fortran:align:integer16",
573 OMPI_HAVE_FORTRAN_INTEGER16 ? OMPI_ALIGNMENT_FORTRAN_INTEGER16 : -1);
574
575 opal_info_out_int("Fort real align", "compiler:fortran:align:real",
576 OMPI_ALIGNMENT_FORTRAN_REAL);
577 opal_info_out_int("Fort real2 align", "compiler:fortran:align:real2",
578 OMPI_HAVE_FORTRAN_REAL2 ? OMPI_ALIGNMENT_FORTRAN_REAL2 : -1);
579 opal_info_out_int("Fort real4 align", "compiler:fortran:align:real4",
580 OMPI_HAVE_FORTRAN_REAL4 ? OMPI_ALIGNMENT_FORTRAN_REAL4 : -1);
581 opal_info_out_int("Fort real8 align", "compiler:fortran:align:real8",
582 OMPI_HAVE_FORTRAN_REAL8 ? OMPI_ALIGNMENT_FORTRAN_REAL8 : -1);
583 opal_info_out_int("Fort real16 align", "compiler:fortran:align:real16",
584 OMPI_HAVE_FORTRAN_REAL16 ? OMPI_ALIGNMENT_FORTRAN_REAL16 : -1);
585
586 opal_info_out_int("Fort dbl prec align",
587 "compiler:fortran:align:double_precision",
588 OMPI_ALIGNMENT_FORTRAN_DOUBLE_PRECISION);
589
590 opal_info_out_int("Fort cplx align", "compiler:fortran:align:complex",
591 OMPI_ALIGNMENT_FORTRAN_COMPLEX);
592 opal_info_out_int("Fort dbl cplx align",
593 "compiler:fortran:align:double_complex",
594 OMPI_HAVE_FORTRAN_DOUBLE_COMPLEX ? OMPI_ALIGNMENT_FORTRAN_DOUBLE_COMPLEX : -1);
595 opal_info_out_int("Fort cplx4 align", "compiler:fortran:align:complex4",
596 OMPI_HAVE_FORTRAN_COMPLEX4 ? OMPI_ALIGNMENT_FORTRAN_COMPLEX4 : -1);
597 opal_info_out_int("Fort cplx8 align", "compiler:fortran:align:complex8",
598 OMPI_HAVE_FORTRAN_COMPLEX8 ? OMPI_ALIGNMENT_FORTRAN_COMPLEX8 : -1);
599 opal_info_out_int("Fort cplx16 align", "compiler:fortran:align:complex16",
600 OMPI_HAVE_FORTRAN_COMPLEX16 ? OMPI_ALIGNMENT_FORTRAN_COMPLEX16 : -1);
601 opal_info_out_int("Fort cplx32 align", "compiler:fortran:align:complex32",
602 OMPI_HAVE_FORTRAN_COMPLEX32 ? OMPI_ALIGNMENT_FORTRAN_COMPLEX32 : -1);
603
604 } else {
605 opal_info_out("Fort real size", "compiler:fortran:sizeof:real", "skipped");
606 opal_info_out("Fort dbl prec size",
607 "compiler:fortran:sizeof:double_precision", "skipped");
608 opal_info_out("Fort cplx size", "compiler:fortran:sizeof:complex", "skipped");
609 opal_info_out("Fort dbl cplx size",
610 "compiler:fortran:sizeof:double_complex", "skipped");
611
612 opal_info_out("Fort integer align", "compiler:fortran:align:integer", "skipped");
613 opal_info_out("Fort real align", "compiler:fortran:align:real", "skipped");
614 opal_info_out("Fort dbl prec align",
615 "compiler:fortran:align:double_precision","skipped");
616 opal_info_out("Fort cplx align", "compiler:fortran:align:complex", "skipped");
617 opal_info_out("Fort dbl cplx align",
618 "compiler:fortran:align:double_complex", "skipped");
619 }
620 }
621
622 opal_info_out("C profiling", "option:profiling:c", cprofiling);
623 opal_info_out("C++ profiling", "option:profiling:cxx", cxxprofiling);
624 opal_info_out("Fort mpif.h profiling", "option:profiling:mpif.h",
625 fortran_mpifh_profiling);
626 opal_info_out("Fort use mpi profiling", "option:profiling:use_mpi",
627 fortran_usempi_profiling);
628 opal_info_out("Fort use mpi_f08 prof",
629 "option:profiling:use_mpi_f08",
630 fortran_usempif08_profiling);
631
632 opal_info_out("C++ exceptions", "option:cxx_exceptions", cxxexceptions);
633 opal_info_out("Thread support", "option:threads", threads);
634 free(threads);
635 opal_info_out("Sparse Groups", "option:sparse:groups", sparse_groups);
636
637 if (want_all) {
638
639
640
641
642
643
644 opal_info_out("Build CFLAGS", "option:build:cflags", OMPI_BUILD_CFLAGS);
645 opal_info_out("Build CXXFLAGS", "option:build:cxxflags", OMPI_BUILD_CXXFLAGS);
646 opal_info_out("Build FCFLAGS", "option:build:fcflags", OMPI_BUILD_FCFLAGS);
647 opal_info_out("Build LDFLAGS", "option:build:ldflags", OMPI_BUILD_LDFLAGS);
648 opal_info_out("Build LIBS", "option:build:libs", OMPI_BUILD_LIBS);
649
650 opal_info_out("Wrapper extra CFLAGS", "option:wrapper:extra_cflags",
651 WRAPPER_EXTRA_CFLAGS);
652 opal_info_out("Wrapper extra CXXFLAGS", "option:wrapper:extra_cxxflags",
653 WRAPPER_EXTRA_CXXFLAGS);
654 opal_info_out("Wrapper extra FCFLAGS", "option:wrapper:extra_fcflags",
655 WRAPPER_EXTRA_FCFLAGS);
656 opal_info_out("Wrapper extra LDFLAGS", "option:wrapper:extra_ldflags",
657 WRAPPER_EXTRA_LDFLAGS);
658 opal_info_out("Wrapper extra LIBS", "option:wrapper:extra_libs",
659 WRAPPER_EXTRA_LIBS);
660 }
661
662 opal_info_out("Internal debug support", "option:debug", debug);
663 opal_info_out("MPI interface warnings", "option:mpi-interface-warning", mpi_interface_warning);
664 opal_info_out("MPI parameter check", "option:mpi-param-check", paramcheck);
665 opal_info_out("Memory profiling support", "option:mem-profile", memprofile);
666 opal_info_out("Memory debugging support", "option:mem-debug", memdebug);
667 opal_info_out("dl support", "option:dlopen", have_dl);
668 opal_info_out("Heterogeneous support", "options:heterogeneous", heterogeneous);
669 #if OMPI_RTE_ORTE
670 opal_info_out("mpirun default --prefix", "mpirun:prefix_by_default",
671 mpirun_prefix_by_default);
672 #endif
673 opal_info_out("MPI_WTIME support", "options:mpi-wtime", wtime_support);
674 opal_info_out("Symbol vis. support", "options:visibility", symbol_visibility);
675 opal_info_out("Host topology support", "options:host-topology",
676 topology_support);
677 opal_info_out("IPv6 support", "options:ipv6", ipv6_support);
678 opal_info_out("MPI1 compatibility", "options:mpi1-compatibility",
679 mpi1_compat_support);
680
681 opal_info_out("MPI extensions", "options:mpi_ext", OMPI_MPIEXT_COMPONENTS);
682
683 opal_info_out("FT Checkpoint support", "options:ft_support", ft_support);
684 free(ft_support);
685
686 opal_info_out("C/R Enabled Debugging", "options:crdebug_support", crdebug_support);
687 free(crdebug_support);
688
689 opal_info_out_int("MPI_MAX_PROCESSOR_NAME", "options:mpi-max-processor-name",
690 MPI_MAX_PROCESSOR_NAME);
691 opal_info_out_int("MPI_MAX_ERROR_STRING", "options:mpi-max-error-string",
692 MPI_MAX_ERROR_STRING);
693 opal_info_out_int("MPI_MAX_OBJECT_NAME", "options:mpi-max-object-name",
694 MPI_MAX_OBJECT_NAME);
695 opal_info_out_int("MPI_MAX_INFO_KEY", "options:mpi-max-info-key",
696 MPI_MAX_INFO_KEY);
697 opal_info_out_int("MPI_MAX_INFO_VAL", "options:mpi-max-info-val",
698 MPI_MAX_INFO_VAL);
699 opal_info_out_int("MPI_MAX_PORT_NAME", "options:mpi-max-port-name",
700 MPI_MAX_PORT_NAME);
701 opal_info_out_int("MPI_MAX_DATAREP_STRING", "options:mpi-max-datarep-string",
702 MPI_MAX_DATAREP_STRING);
703
704 }