Skip to content

Commit 4602d87

Browse files
committed
Merge branch 'documentation' into develop
* documentation: Update documentation for command line usage and build system
2 parents 211538b + 900fb2e commit 4602d87

File tree

1 file changed

+85
-47
lines changed

1 file changed

+85
-47
lines changed

README

Lines changed: 85 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2003-2018 High Performance Computing Center Stuttgart,
1+
Copyright (c) 2003-2020 High Performance Computing Center Stuttgart,
22
University of Stuttgart. All rights reserved.
33
Copyright (c) 2005-2009 The University of Tennessee and The University
44
of Tennessee Research Foundation. All rights
@@ -20,87 +20,118 @@ $HEADER$
2020
----------------------------------------------
2121

2222
Overview
23-
--------
23+
========
2424

2525
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
3133

3234

3335
Introduction
34-
------------
36+
============
3537
This MPI-testsuite was initially developed for the use with PACX-MPI and
3638
has been extended within the Open MPI project.
3739

3840
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
4764

4865

4966
Compiling the MPI-Testsuite
5067
---------------------------
5168
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
5370

5471
>>> ./configure CC=mpicc
5572

5673
After a successful configure-run, one may compile with make.
5774

75+
>>> make
76+
5877

5978
Running the MPI-Testsuite
6079
-------------------------
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.
6281
It runs a variety of P2P and Collective tests with varying
6382
datatypes and preset communicators. Each test specifies, which kind of
6483
datatypes, e.g. struct-datatypes and comms, e.g. MPI_COMM_SELF,
6584
intra-comms and alike it may run.
6685

67-
6886
Per default, ALL tests will be run with ALL combinations of datatypes
6987
and ALL generated communicators! Only failed tests are shown afterwards.
7088

71-
7289
Through command-line switches, the user may influence and reduce the
7390
number of tests with the following commands, first the showing the help:
7491

7592
>>> mpirun -np 1 ./mpi_test_suite -h
7693

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:
95128

129+
>>> mpirun -np 1 ./mpi_test_suite -l
96130

97-
The following lists all available tests/test-classes, comms/comm-classes and
98-
type/type-classes is listed.
99131
Showing all the individual tests, comms and types would be too long, however,
100132
all of the tests, comms and types are grouped in classes, all of which are
101133
listed with (first the class, followed by number, then a free distinct name):
102134

103-
>>> mpirun -np 1 ./mpi_test_suite -l
104135
Num Tests : 100
105136
Environment test:0 Status
106137
Environment test:1 Request_Null
@@ -203,20 +234,27 @@ On some platforms, we found, that some tests fail:
203234

204235

205236

206-
Programming New Tests
207-
---------------------
237+
Extending the testsuite
238+
=======================
239+
240+
Adding new tests
241+
----------------
242+
208243
In order to integrate a new test, the programmer should
209244
- write three functions in a new file with a descriptive name, like:
210245
tst_p2p_simple_ring_bsend.c
211246
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
215250
where all names start with "tst_",
216251
and the kind of communication calls tested (actually a TST_CLASS)
217252
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
218256

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
220258
- Add the test-description to the tst_tests-array in tst_test.c:
221259
Here, the
222260
struct tst_test {

0 commit comments

Comments
 (0)