1
- Copyright (c) 2003-2018 High Performance Computing Center Stuttgart,
1
+ Copyright (c) 2003-2020 High Performance Computing Center Stuttgart,
2
2
University of Stuttgart. All rights reserved.
3
3
Copyright (c) 2005-2009 The University of Tennessee and The University
4
4
of Tennessee Research Foundation. All rights
@@ -20,87 +20,118 @@ $HEADER$
20
20
----------------------------------------------
21
21
22
22
Overview
23
- --------
23
+ ========
24
24
25
25
1.) Introduction
26
- 2.) Compiling the MPI-Testsuite
27
- 3.) Running the MPI-Testsuite
28
- 3a.) MPI-implementations already tested
29
- 3b.) Tests failing on specific platforms
30
- 4.) Programming New Tests
26
+ 2.) Getting Started
27
+ 2.1.) Compiling the MPI-Testsuite
28
+ 2.2.) Running the MPI-Testsuite
29
+ 2.3.) MPI-implementations already tested
30
+ 2.4.) Tests failing on specific platforms
31
+ 3.) Extending the testsuite
32
+ 3.1.) Adding new tests
31
33
32
34
33
35
Introduction
34
- ------------
36
+ ============
35
37
This MPI-testsuite was initially developed for the use with PACX-MPI and
36
38
has been extended within the Open MPI project.
37
39
38
40
The main focus is on:
39
- - High degree of code coverage through combinations of tests.
40
- - Easy maintainability,
41
- - Easy integration of new tests,
42
- - Rich underlying functionality for flexible tests
43
- (convenience functions for datatypes, comms and checking),
44
- - Only a single binary (for single, since expensive
45
- MPI_Init/MPI_Finalize) to make it as quick and easy as possible to
46
- run automatically.
41
+ - High degree of code coverage through combinations of tests.
42
+ - Easy maintainability,
43
+ - Easy integration of new tests,
44
+ - Rich underlying functionality for flexible tests
45
+ (convenience functions for datatypes, comms and checking),
46
+ - Only a single binary (for single, since expensive
47
+ MPI_Init/MPI_Finalize) to make it as quick and easy as possible to
48
+ run automatically.
49
+
50
+
51
+
52
+ Getting Started
53
+ ===============
54
+
55
+ Prerequisites
56
+ -------------
57
+ Required dependencies to build and run the MPI test suite:
58
+ - MPI library with c compiler support
59
+ - make
60
+
61
+ Optional dependencies for developers:
62
+ - gengetopt (used for the generation of the command line parser code)
63
+ - autoconf, automake
47
64
48
65
49
66
Compiling the MPI-Testsuite
50
67
---------------------------
51
68
The MPI-Testsuite uses an autotools based build system.
52
- To configure provide the MPI compiter with
69
+ To configure provide the MPI c compiler with
53
70
54
71
>>> ./configure CC=mpicc
55
72
56
73
After a successful configure-run, one may compile with make.
57
74
75
+ >>> make
76
+
58
77
59
78
Running the MPI-Testsuite
60
79
-------------------------
61
- The MPI-Testsuite may be run with an arbitrary number of processes!
80
+ The MPI-Testsuite may be run with an arbitrary number of processes.
62
81
It runs a variety of P2P and Collective tests with varying
63
82
datatypes and preset communicators. Each test specifies, which kind of
64
83
datatypes, e.g. struct-datatypes and comms, e.g. MPI_COMM_SELF,
65
84
intra-comms and alike it may run.
66
85
67
-
68
86
Per default, ALL tests will be run with ALL combinations of datatypes
69
87
and ALL generated communicators! Only failed tests are shown afterwards.
70
88
71
-
72
89
Through command-line switches, the user may influence and reduce the
73
90
number of tests with the following commands, first the showing the help:
74
91
75
92
>>> mpirun -np 1 ./mpi_test_suite -h
76
93
77
- Usage: mpi_test_suite [-h] [-v] [-l] [-t test] [-c comm] [-d datatype]
78
- [-n num_values] [-r report] [-x execution_mode] [-j num_threads]
79
- test: one (or more) tests or test-classes (see -l) and
80
- comm: one (or more) communicator or communicator-classes (see -l)
81
- datatype: one (or more) datatype or datatype-classes (see -l)
82
- num_values: one (or more) numbers of values to communicate (default:1000)
83
- report: level of detail for tests being run, see -l (default:SUMMARY)
84
- execution_mode: level of correctness testing, tests to run and internal tests, see -l (default:RELAXED)
85
- num_threads: number of threads to execute the tests (default:no threads)
86
-
87
- All multiple test/comm/datatype-names must be comma-separated.
88
- Names are not case-sensitive, due to spaces in names, proper quoting should be used.
89
-
90
- -h: Show this help
91
- -v: Turn on verbose mode for debugging output
92
- -l/--list: List all available tests, communicators, datatypes and
93
- corresponding classes.
94
-
94
+ Usage: mpi_test_suite [OPTION]...
95
+
96
+ -h, --help Print help and exit
97
+ -V, --version Print version and exit
98
+ -t, --test=STRING tests or test-classes (default=`all')
99
+ -c, --comm=STRING communicators or commicator-classes
100
+ (default=`all')
101
+ -d, --datatype=STRING datatypes of datatype-classes (default=`all')
102
+ -n, --num-values=STRING number of values to communicate in tests
103
+ (default=`1000')
104
+
105
+ All multiple test-/comm-/datatype-names and num-values must be comma-separated.
106
+ Names are not case-sensitive, due to spaces in names, propper quoting should be
107
+ used. The special name 'all' can be used to select all tests/comms/datatypes.
108
+ To exclude a test/comm/datatype prefix it with '^' but be aware, that the
109
+ selection will happen in order, so use 'all,^exclude'.
110
+
111
+ -a, --atomic-io enable atomicity for files in I/O for all tests
112
+ that support it
113
+ -j, --num-threads=INT number of additional threads to execute the
114
+ tests (default=`0')
115
+ -r, --report=STRING level of detail for test report (possible
116
+ values="summary", "run", "full"
117
+ default=`summary')
118
+ -x, --execution-mode=STRING level of correctness testing (possible
119
+ values="disabled", "strict", "relaxed"
120
+ default=`relaxed')
121
+ -v, --verbose enable verbose output for debugging purpose
122
+ -l, --list list all available tests, communicators,
123
+ datatypes and corresponding classes
124
+
125
+
126
+ The following command lists all available tests/test-classes, comms/comm-classes and
127
+ type/type-classes:
95
128
129
+ >>> mpirun -np 1 ./mpi_test_suite -l
96
130
97
- The following lists all available tests/test-classes, comms/comm-classes and
98
- type/type-classes is listed.
99
131
Showing all the individual tests, comms and types would be too long, however,
100
132
all of the tests, comms and types are grouped in classes, all of which are
101
133
listed with (first the class, followed by number, then a free distinct name):
102
134
103
- >>> mpirun -np 1 ./mpi_test_suite -l
104
135
Num Tests : 100
105
136
Environment test:0 Status
106
137
Environment test:1 Request_Null
@@ -203,20 +234,27 @@ On some platforms, we found, that some tests fail:
203
234
204
235
205
236
206
- Programming New Tests
207
- ---------------------
237
+ Extending the testsuite
238
+ =======================
239
+
240
+ Adding new tests
241
+ ----------------
242
+
208
243
In order to integrate a new test, the programmer should
209
244
- write three functions in a new file with a descriptive name, like:
210
245
tst_p2p_simple_ring_bsend.c
211
246
containing:
212
- tst_p2p_simeple_ring_bsend_init
213
- tst_p2p_simeple_ring_bsend_run
214
- tst_p2p_simeple_ring_bsend_cleanup
247
+ tst_p2p_simple_ring_bsend_init
248
+ tst_p2p_simple_ring_bsend_run
249
+ tst_p2p_simple_ring_bsend_cleanup
215
250
where all names start with "tst_",
216
251
and the kind of communication calls tested (actually a TST_CLASS)
217
252
and the communication pattern (here a simple ring using MPI_Bsend).
253
+ - Add the new file to the list of sources for the mpi_test_suite target in Makefile.am
254
+ and update the build system with
255
+ >>> autoreconf -vif
218
256
219
- - Add these functions to mpi_test_suite.h in a sorted manner
257
+ - Add the new functions to mpi_test_suite.h in a sorted manner
220
258
- Add the test-description to the tst_tests-array in tst_test.c:
221
259
Here, the
222
260
struct tst_test {
0 commit comments