File: MPI_T.3

package info (click to toggle)
openmpi 5.0.8-4
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 201,684 kB
  • sloc: ansic: 613,078; makefile: 42,353; sh: 11,194; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,179; python: 1,859; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (178 lines) | stat: -rw-r--r-- 4,939 bytes parent folder | download | duplicates (4)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
.\" Man page generated from reStructuredText.
.
.TH "MPI_T" "3" "May 30, 2025" "" "Open MPI"
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
Open MPI’s MPI_T interface \- General information
.SH DESCRIPTION
.sp
There are a few Open MPI\-specific notes worth mentioning about its MPI_T
interface implementation.
.SS MPI_T Control Variables
.sp
Open MPI’s implementation of the MPI_T Control Variable (“cvar”) APIs is
an interface to Open MPI’s underlying Modular Component Architecture
(MCA) parameters/variables. Simply put: using the MPI_T cvar interface
is another mechanism to get/set Open MPI MCA parameters.
.sp
In order of precedence (highest to lowest), Open MPI provides the
following mechanisms to set MCA parameters:
.INDENT 0.0
.IP 1. 3
The MPI_T interface has the highest precedence. Specifically: values
set via the MPI_T interface will override all other settings.
.IP 2. 3
The mpirun(1) / mpiexec(1) command line (e.g., via the –mca
parameter).
.IP 3. 3
Environment variables.
.IP 4. 3
Parameter files have the lowest precedence. Specifically: values set
via parameter files can be overridden by any of the other
MCA\-variable setting mechanisms.
.UNINDENT
.SS MPI initialization
.sp
An application may use the MPI_T interface before MPI is initialized to
set MCA parameters. Setting MPI\-level MCA parameters before MPI is
initialized may affect \fIhow\fP MPI is initialized (e.g., by influencing
which frameworks and components are selected).
.sp
The following example sets the pml and btl MCA params before invoking
\fI\%MPI_Init\fP in order to force a specific selection of PML and BTL
components:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
int provided, index, count;
MPI_T_cvar_handle pml_handle, btl_handle;
char pml_value[64], btl_value[64];

MPI_T_init_thread(MPI_THREAD_SINGLE, &provided);

MPI_T_cvar_get_index("pml", &index);
MPI_T_cvar_handle_alloc(index, NULL, &pml_handle, &count);
MPI_T_cvar_write(pml_handle, "ob1");

MPI_T_cvar_get_index("btl", &index);
MPI_T_cvar_handle_alloc(index, NULL, &btl_handle, &count);
MPI_T_cvar_write(btl_handle, "tcp,vader,self");

MPI_T_cvar_read(pml_handle, pml_value);
MPI_T_cvar_read(btl_handle, btl_value);
printf("Set value of cvars: PML: %s, BTL: %s\en",
       pml_value, btl_value);

MPI_T_cvar_handle_free(&pml_handle);
MPI_T_cvar_handle_free(&btl_handle);

MPI_Init(NULL, NULL);

// ...

MPI_Finalize();

MPI_T_finalize();
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Note that once MPI is initialized, most Open MPI cvars become read\-only.
.sp
For example, after MPI is initialized, it is no longer possible to set
the PML and BTL selection mechanisms. This is because many of these MCA
parameters are only used during MPI initialization; setting them after
MPI has already been initialized would be meaningless, anyway.
.SS MPI_T Categories
.sp
Open MPI’s MPI_T categories are organized hierarchically:
.INDENT 0.0
.IP 1. 3
Layer (or “project”). There are two layers in Open MPI:
.INDENT 3.0
.IP \(bu 2
ompi: This layer contains cvars, pvars, and sub categories related
to MPI characteristics.
.IP \(bu 2
opal: This layer generally contains cvars, pvars, and sub
categories of lower\-layer constructions, such as operating system
issues, networking issues, etc.
.UNINDENT
.IP 2. 3
Framework or section.
.INDENT 3.0
.IP \(bu 2
In most cases, the next level in the hierarchy is the Open MPI MCA
framework.
.INDENT 3.0
.IP \(bu 2
For example, you can find the btl framework under the opal
layer (because it has to do with the underlying networking).
.IP \(bu 2
Additionally, the pml framework is under the ompi layer
(because it has to do with MPI semantics of point\-to\-point
messaging).
.UNINDENT
.IP \(bu 2
There are a few non\-MCA\-framework entities under the layer,
however.
.INDENT 3.0
.IP \(bu 2
For example, there is an mpi section under both the opal and
ompi layers for general/core MPI constructs.
.UNINDENT
.UNINDENT
.IP 3. 3
Component.
.INDENT 3.0
.IP \(bu 2
If relevant, the third level in the hierarchy is the MCA
component.
.IP \(bu 2
For example, the tcp component can be found under the opal
framework in the opal layer.
.UNINDENT
.UNINDENT
.sp
\fBSEE ALSO:\fP
.INDENT 0.0
.INDENT 3.5
.INDENT 0.0
.IP \(bu 2
\fI\%MPI_T_init_thread\fP
.UNINDENT
.UNINDENT
.UNINDENT
.SH COPYRIGHT
2003-2025, The Open MPI Community
.\" Generated by docutils manpage writer.
.