These are only needed by the testsuite. If mydef is unavailable for some
reason, e.g. running autogen.sh from a testsuite-only tarball,
regeneration of the benchmarks will be skipped.
Add device memory support using mtest_common utilities. This will add
the dependency to utility libraries, which the makefile already
imports.
However, this will remove the simpliicity of building single
source with mpicc or mydef_run. If one doesn't need test device memory,
one can simply comment off "$include macros/mtest.def" to restore the
simplicity.
This check does not capture output (thus test results will show in
console log) and only checks for exit code - zero means success and
nonzero means failure.
We'll use this check for benchmark tests.
We could add rules to directly work with mydef code in Makefile, but
convert the code in autogen removes the mydef dependency.
Also fix a spelling error.
Add point-to-point benchmark code in MyDef. The tests have automatic
warm-ups and adjusts number of iterations for measurement accuracy.
It produces latency measurements with standard deviations and equivalent
bandwidths.
MYDEF_BOOT=[topsrc_dir]/modules/mydef_boot
export PATH=$MYDEF_BOOT/bin:$PATH
export PERL5LIB=$MYDEF_BOOT/lib/perl5
export MYDEFLIB=$MYDEF_BOOT/lib/MyDef
To run:
mydef_page p2p_latency.def # -> p2p_latency.c
mpicc p2p_latency.c && mpi_run -n 2 ./a.out
Alternatively use mydef_run (uses settings from config):
mydef_run p2p_latency.def
Next commit will add "make testing".
It is stressful to issue many fi_read in the get huge path especially
under the thread-contention case. Lower the count to ensure more
reliable CI results. It should be sufficient to test the correctness
with smaller count.
The pipelined_tree algorithm can generate lots of unexpected messages
when large messages consists many chunks. Thus, I think the algorithm
without control on in-fly chunks are questionable.
Large amount one-sided MPI_Get has similar issue as the pingping tests
-- accumulating unhandled messages at the receiver side and may result
in running out of receive buffers.
Run less iterations by default and increase stress if MPITEST_STRESS is
set.
The pingping tests quickly accumulates large amount unexpected message on
the receiver side with eager small messages. This is more a performance
issue than a correctness issue. Add barrier by default and set
MPITEST_STRESS to run stress tests e.g. in nightly.
Add environment variable MPITEST_STRESS to control the level of stress
testing. Increase stress levels runs some tests with more iterations,
larger counts, or more processes.
The test uses MPI_Gatherv to gather procnames into a `char **procname`
and uses `int *disp` to capture the difference between pointers. It
overflows on 64-bit systems when two malloc'ed pointers differ more than
INT_MAX. We fix it by using a single malloc'ed procname_buffer.
It is not clear why we didn't catch this issue in previous CI testing.
Huge patch set touching almost all of romio, but should be much fewer
places where we store potentially large values in an int. Passes
'-fsanitize=undefined' and also reduces '-Wshorten-64-to-32' warnings.
It is not clear that after a MPI function calls the user error handler,
whether it should return MPI_SUCESS or not. Update the tests not to
assume the MPI will return the error code after invoking the error
handler.
Rationale: if user want the MPI function to return error code, they
should use MPI_ERRORS_RETURN instead. Otherwise, we assume the user
error handler "resolved" the error. User always can throw an exception
in their error handlers.
Move the check "$test_opt->{mem} > $g_opt{memory_total}" to LoadTests so
that the skip happens before RunMPIProgram or AddMPIProgram, so that it
works for batchRun.
Add options to test more than INT_MAX count of contig and non-contig
datatypes.
To allow the tests to run with minimal memory, we use MPI_CHAR as the
basic type. Modify macros CTYPE and MPITYPE to test different basic
types.
Add options to test more than INT_MAX count of contig and non-contig
datatypes.
To allow the tests to run with minimal memory, we use MPI_CHAR as the
basic type. Modify macros CTYPE and MPITYPE to test different basic
types.
Different machines have different amount of memory and a single option
is too coarse to control what tests that can be safely run.
Remove the --enable-large-tests option and rely on the per-test "mem="
option to control whether the tests will be run. The default
MPITEST_MEMORY_TOTAL is set to 4 GB (the maximum for 32-bit nodes). Thus
all those tests require more than 4GB memory will be skipped by default.
For CI testing, the job script or the system should set
MPITEST_MEMORY_TOTAL appropriately to enable those large tests that can
fit.
The option --enable-large-tests enables those tests that require large
amount of memory. However, the tests -- large_count and large_type --
merely tests datatype creation and does not require large memory.
Always enable both tests. Add check in the tests so it skips on 32-bit
systems.
The reduce.c test used rank in comm to specify the GPU device used in
memory allocation. While iterating over multiple comms, the device could
change. This is an uncommon use-case, and one that is not yet supported
by UCX. Change the test to use world rank to specify the device. If
desired, we can add a multi-GPU test separately to verify that
capability.
Add test for
MPI_Status_f082c
MPI_Status_c2f08
MPI_Status_f082f
MPI_Status_f2f08
MPI_Status_f2c
MPI_Status_c2f
in C, and test for
MPI_Status_f082f
MPI_Status_f2f08
in Fortran.
Add a test to cover all modes of basic send, including eager/rndv,
expected/unexpected, whether to use ssend, or any source/any tag
receive. With odd/even testing, it also tests both shmmod and netmod.
* Try avoid print handle as int
* MPI_MESSAGE_NULL may not be MPI_REQUEST_NULL
* MPI_Comm may not be the same as MPI_Win
* Cast to (long long) to print MPI_Count
Now we added the declaration of MPI_Aint_add and MPI_Aint_diff in
mpif.h, we do not need to declare them in the test. They should have
been fixed in mpif.h in the first place.