OpenMPI  0.1.1
params.h
1 /*
2  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
3  * University Research and Technology
4  * Corporation. All rights reserved.
5  * Copyright (c) 2004-2005 The University of Tennessee and The University
6  * of Tennessee Research Foundation. All rights
7  * reserved.
8  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
9  * University of Stuttgart. All rights reserved.
10  * Copyright (c) 2004-2005 The Regents of the University of California.
11  * All rights reserved.
12  * Copyright (c) 2007 Los Alamos National Security, LLC. All rights
13  * reserved.
14  * Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved.
15  * Copyright (c) 2010-2012 Oak Ridge National Labs. All rights reserved.
16  * $COPYRIGHT$
17  *
18  * Additional copyrights may follow
19  *
20  * $HEADER$
21  */
22 
23 #ifndef OMPI_RUNTIME_PARAMS_H
24 #define OMPI_RUNTIME_PARAMS_H
25 
26 #include "ompi_config.h"
27 
28 BEGIN_C_DECLS
29 
30 /*
31  * Global variables
32  */
33 
34 /**
35  * Whether or not to check the parameters of top-level MPI API
36  * functions or not.
37  *
38  * This variable should never be checked directly; the macro
39  * MPI_PARAM_CHECK should be used instead. This allows multiple
40  * levels of MPI function parameter checking:
41  *
42  * #- Disable all parameter checking at configure/compile time
43  * #- Enable all parameter checking at configure/compile time
44  * #- Disable all parameter checking at run time
45  * #- Enable all parameter checking at run time
46  *
47  * Hence, the MPI_PARAM_CHECK macro will either be "0", "1", or
48  * "ompi_mpi_param_check".
49  */
50 OMPI_DECLSPEC extern bool ompi_mpi_param_check;
51 
52 /**
53  * Whether or not to check for MPI handle leaks during MPI_FINALIZE.
54  * If enabled, each MPI handle type will display a summary of the
55  * handles that are still allocated during MPI_FINALIZE.
56  *
57  * This is good debugging for user applications to find out if they
58  * are inadvertantly orphaning MPI handles.
59  */
60 OMPI_DECLSPEC extern bool ompi_debug_show_handle_leaks;
61 
62 /**
63  * If > 0, show that many MPI_ALLOC_MEM leaks during MPI_FINALIZE. If
64  * enabled, memory that was returned via MPI_ALLOC_MEM but was never
65  * freed via MPI_FREE_MEM will be displayed during MPI_FINALIZE.
66  *
67  * This is good debugging for user applications to find out if they
68  * are inadvertantly orphaning MPI "special" memory.
69  */
70 OMPI_DECLSPEC extern int ompi_debug_show_mpi_alloc_mem_leaks;
71 
72 /**
73  * Whether or not to actually free MPI handles when their
74  * corresponding destructor is invoked. If enabled, Open MPI will not
75  * free handles, but will rather simply mark them as "freed". Any
76  * attempt to use them will result in an MPI exception.
77  *
78  * This is good debugging for user applications to find out if they
79  * are inadvertantly using MPI handles after they have been freed.
80  */
81 OMPI_DECLSPEC extern bool ompi_debug_no_free_handles;
82 
83 /**
84  * Whether or not to print MCA parameters on MPI_INIT
85  *
86  * This is good debugging for user applications to see exactly which
87  * MCA parameters are being used in the current program execution.
88  */
89 OMPI_DECLSPEC extern bool ompi_mpi_show_mca_params;
90 
91 /**
92  * Whether or not to print the MCA parameters to a file or to stdout
93  *
94  * If this argument is set then it is used when parameters are dumped
95  * when the mpi_show_mca_params is set.
96  */
97 OMPI_DECLSPEC extern char * ompi_mpi_show_mca_params_file;
98 
99 /**
100  * Whether we should keep the string hostnames of all the MPI
101  * process peers around or not (eats up a good bit of memory).
102  */
103 OMPI_DECLSPEC extern bool ompi_mpi_keep_peer_hostnames;
104 
105 /**
106  * Whether an MPI_ABORT should print out a stack trace or not.
107  */
108 OMPI_DECLSPEC extern bool ompi_mpi_abort_print_stack;
109 
110 /**
111  * Whether MPI_ABORT should print out an identifying message
112  * (e.g., hostname and PID) and loop waiting for a debugger to
113  * attach. The value of the integer is how many seconds to wait:
114  *
115  * 0 = do not print the message and do not loop
116  * negative value = print the message and loop forever
117  * positive value = print the message and delay for that many seconds
118  */
119 OMPI_DECLSPEC extern int ompi_mpi_abort_delay;
120 
121 /**
122  * Whether to use the "leave pinned" protocol or not (0 = no, 1 = yes,
123  * -1 = determine at runtime).
124  */
125 OMPI_DECLSPEC extern int ompi_mpi_leave_pinned;
126 
127 /**
128  * Whether to use the "leave pinned pipeline" protocol or not.
129  */
130 OMPI_DECLSPEC extern bool ompi_mpi_leave_pinned_pipeline;
131 
132 /**
133  * Whether sparse MPI group storage formats are supported or not.
134  */
135 OMPI_DECLSPEC extern bool ompi_have_sparse_group_storage;
136 
137 /**
138  * Whether sparse MPI group storage formats should be used or not.
139  */
140 OMPI_DECLSPEC extern bool ompi_use_sparse_group_storage;
141 
142 /**
143  * Whether we should send notifications during MPI_INIT and
144  * MPI_FINALIZE or not.
145  */
146 OMPI_DECLSPEC extern bool ompi_notify_init_finalize;
147 
148 #if OPAL_ENABLE_FT_MPI
149 OMPI_DECLSPEC extern int ompi_ftmpi_output_handle;
150 OMPI_DECLSPEC extern bool ompi_ftmpi_enabled;
151 #endif
152 
153 /**
154  * Register MCA parameters used by the MPI layer.
155  *
156  * @returns OMPI_SUCCESS
157  *
158  * Registers several MCA parameters and initializes corresponding
159  * global variables to the values obtained from the MCA system.
160  */
161 OMPI_DECLSPEC int ompi_mpi_register_params(void);
162 
163 /**
164  * Display all MCA parameters used
165  *
166  * @returns OMPI_SUCCESS
167  *
168  * Displays in key = value format
169  */
170 int ompi_show_all_mca_params(int32_t, int, char *);
171 
172 END_C_DECLS
173 
174 #endif /* OMPI_RUNTIME_PARAMS_H */