|
Packit Service |
c5cf8c |
Tests to create or code to modify
|
|
Packit Service |
c5cf8c |
This list is based on the results of the coverage analysis. Because of errors
|
|
Packit Service |
c5cf8c |
in the GNU coverage code (it appears to lose data if two processes
|
|
Packit Service |
c5cf8c |
simulateously update the same coverage data file), there may be some
|
|
Packit Service |
c5cf8c |
items listed here that are already sufficiently tested.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
(completed tests moved below)
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
6. Collective code:
|
|
Packit Service |
c5cf8c |
a) make sure that all algorithms are covered: short and long
|
|
Packit Service |
c5cf8c |
messages; differing numbers of processes, including non powers
|
|
Packit Service |
c5cf8c |
of two. May only need to further divide the Intel tests to
|
|
Packit Service |
c5cf8c |
include collective tests for varying numbers of processes.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
opband types: logical (f77), unsigned, long, long_long,
|
|
Packit Service |
c5cf8c |
unsigned long, short, unsigned short, char, unsigned char,
|
|
Packit Service |
c5cf8c |
byte
|
|
Packit Service |
c5cf8c |
opbor types: int, unsigned, long, long long, unsigned long, short,
|
|
Packit Service |
c5cf8c |
unsigned short, char, unsigned char, byte
|
|
Packit Service |
c5cf8c |
opbxor types: int, unsigned, long, long long, unsigned long, short,
|
|
Packit Service |
c5cf8c |
unsigned short, char, unsigned char, byte
|
|
Packit Service |
c5cf8c |
opland types: logical (f77), integer (f77)
|
|
Packit Service |
c5cf8c |
oplor types: logical (f77), integer (f77)
|
|
Packit Service |
c5cf8c |
oplxor types: int, unsigned, long, long long, unsigned long,
|
|
Packit Service |
c5cf8c |
short, unsigned short, char, unsigned char, float, double,
|
|
Packit Service |
c5cf8c |
long double, logical (f77), integer (f77)
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
opmax types: unsigned, long, long long, unsigned long, short,
|
|
Packit Service |
c5cf8c |
unsigned short, char, unsigned char, float, double,
|
|
Packit Service |
c5cf8c |
long double
|
|
Packit Service |
c5cf8c |
opmaxloc types: (none tested?)
|
|
Packit Service |
c5cf8c |
opmin types: (none tested?)
|
|
Packit Service |
c5cf8c |
opminloc types: 2int, float_int, long_int, short_int, double_int,
|
|
Packit Service |
c5cf8c |
longdouble_int, 2real (f77), 2double_precision (f77)
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
opprod types: long long, short, unsigned short, char, unsigned char,
|
|
Packit Service |
c5cf8c |
long double, double complex
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
opsum types: unsigned, long, long long, unsigned long, short,
|
|
Packit Service |
c5cf8c |
unsigned short, char, unsigned char, float, double,
|
|
Packit Service |
c5cf8c |
long double, complex (f77), double complex (f77)
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
red_scat: differnt alg lengths
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
reduce: run with non powers of two, both odd and even values
|
|
Packit Service |
c5cf8c |
run with root in various places, particularly with non
|
|
Packit Service |
c5cf8c |
power of two nodes.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
b) Intercommunicator collective tests are needed. These could be
|
|
Packit Service |
c5cf8c |
implemented by using the non-collective definition code; e.g.,
|
|
Packit Service |
c5cf8c |
the "trivial" implementation in terms of MPI_Send and MPI_Recv.
|
|
Packit Service |
c5cf8c |
The tests should use intercomms with both the same and different
|
|
Packit Service |
c5cf8c |
sized groups.
|
|
Packit Service |
c5cf8c |
Reduce_scatter
|
|
Packit Service |
c5cf8c |
Alltoallw
|
|
Packit Service |
c5cf8c |
c) Tests for MPI_IN_PLACE are needed
|
|
Packit Service |
c5cf8c |
d) Tests for sendcounts of 0 are needed, particularly in the xxxv functions
|
|
Packit Service |
c5cf8c |
and in the allxxx functions (e.g., alltoallv for ghostpoint exchange)
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
7. Set and get name for comm, predefined name MPI_COMM_PARENT.
|
|
Packit Service |
c5cf8c |
Also, test *ALL* datatype names.
|
|
Packit Service |
c5cf8c |
9. Check the use of error macros in intercomm create and merge; also
|
|
Packit Service |
c5cf8c |
consider adding tests that would exercise this code.
|
|
Packit Service |
c5cf8c |
10. Datatype info routines: get address (use address test), get count
|
|
Packit Service |
c5cf8c |
(for partial datatype; use example from MPI book), get elements
|
|
Packit Service |
c5cf8c |
(for partial datatype, done with pack and datatype)
|
|
Packit Service |
c5cf8c |
11. pack (see lines 184-208 in pack.c)
|
|
Packit Service |
c5cf8c |
12. status_set_elements - combine with get_elements to ensure that the
|
|
Packit Service |
c5cf8c |
correct values are set.
|
|
Packit Service |
c5cf8c |
13. create_hindexed, create_hvector, and create-struct. These can use
|
|
Packit Service |
c5cf8c |
the MPI-1 tests, with the data-types suitably updated. Add these
|
|
Packit Service |
c5cf8c |
to the Intel tests. - done for C. Need to do Fortran (needs
|
|
Packit Service |
c5cf8c |
Fortran address_kind type)
|
|
Packit Service |
c5cf8c |
15. type_extent - check lines 99/100 (in coverage file)
|
|
Packit Service |
c5cf8c |
16. type util - make sure that setup of builtins is performed.
|
|
Packit Service |
c5cf8c |
16a. Type free, get-extent, true_extent for derived types. Make sure all
|
|
Packit Service |
c5cf8c |
allocated space is freed
|
|
Packit Service |
c5cf8c |
17a Add tests for comm call errhandler
|
|
Packit Service |
c5cf8c |
18. comm set,get errhandler - use MPI-1 versions. Also apply to win, file.
|
|
Packit Service |
c5cf8c |
Also user-defined errhandlers. Make sure references work correctly (e.g.,
|
|
Packit Service |
c5cf8c |
if freed while still in communicator, or freed after communicator is
|
|
Packit Service |
c5cf8c |
freed).
|
|
Packit Service |
c5cf8c |
19. errutil.c - make sure MPIR_Err_preinit protected in error macros.
|
|
Packit Service |
c5cf8c |
Test by compiling with error checking off, then check symbol
|
|
Packit Service |
c5cf8c |
table of library
|
|
Packit Service |
c5cf8c |
20. (win set/get/call errhandler) - see 18
|
|
Packit Service |
c5cf8c |
22. Ensure group diff error checks are error macro protected
|
|
Packit Service |
c5cf8c |
24. group intersection error check ; group union error check
|
|
Packit Service |
c5cf8c |
26. ensure that attributes on comm self are freed in
|
|
Packit Service |
c5cf8c |
the correct order by MPI_Finalize (see MPI-2 spec; comm_self is
|
|
Packit Service |
c5cf8c |
freed FIRST, then the order is undefined). In particular, MPI_Finalized
|
|
Packit Service |
c5cf8c |
returns false in the comm_self attribute delete functions.
|
|
Packit Service |
c5cf8c |
27. Add tests for finalized, initthread, ismain, querythread, version
|
|
Packit Service |
c5cf8c |
-- all but finalized and ismain from another thread
|
|
Packit Service |
c5cf8c |
29. Add tests for generalized requests, including cancelling a generalized
|
|
Packit Service |
c5cf8c |
request.
|
|
Packit Service |
c5cf8c |
30. Add tests for Request_free for regular send or receive requests.
|
|
Packit Service |
c5cf8c |
34. Topology tests:
|
|
Packit Service |
c5cf8c |
graph-create - n == 0
|
|
Packit Service |
c5cf8c |
topoutil - see line 92+; add test (dup communicator with topology)
|
|
Packit Service |
c5cf8c |
35. Ixsend to self.
|
|
Packit Service |
c5cf8c |
If thread multiple, all MPI_Issend, MPI_Ssend to self, with no posted
|
|
Packit Service |
c5cf8c |
receive when send initiated.
|
|
Packit Service |
c5cf8c |
38. Add tests for all RMA (get, put, accumulate,
|
|
Packit Service |
c5cf8c |
win_complete, win_test, win_lock, win_unlock, win_post, win_start,
|
|
Packit Service |
c5cf8c |
win_wait)
|
|
Packit Service |
c5cf8c |
39. Add tests for dynamic processes
|
|
Packit Service |
c5cf8c |
open_port, close_port, accept, connect, spawn, spawn multiple
|
|
Packit Service |
c5cf8c |
40. Add tests for all of MPI-IO not already covered.
|
|
Packit Service |
c5cf8c |
(These may now be covered by the John May test)
|
|
Packit Service |
c5cf8c |
These include the routines in the files (entire file if no notes on that
|
|
Packit Service |
c5cf8c |
file):
|
|
Packit Service |
c5cf8c |
open.c (a few lines, including if(!rank)ADIO_Set_shared_fp
|
|
Packit Service |
c5cf8c |
filenames with filesystem, e.g., nfs:name
|
|
Packit Service |
c5cf8c |
Open in APPEND mode
|
|
Packit Service |
c5cf8c |
delete.c
|
|
Packit Service |
c5cf8c |
filenames with filesystem
|
|
Packit Service |
c5cf8c |
get_view.c (roughly lines 99ff, at Type_contiguous)
|
|
Packit Service |
c5cf8c |
set_view.c (for MPI_DISPLACEMENT_CURRENT)
|
|
Packit Service |
c5cf8c |
set_info.c
|
|
Packit Service |
c5cf8c |
seek_sh.c (for MPI_SEEK_CUR)
|
|
Packit Service |
c5cf8c |
read_sh/write_sh
|
|
Packit Service |
c5cf8c |
atomicity && file system NOT NFS
|
|
Packit Service |
c5cf8c |
41. Delete/free attributes on datatypes, windows; Fortran versions (to
|
|
Packit Service |
c5cf8c |
get int instead of pointer-to-int)
|
|
Packit Service |
c5cf8c |
42. Keyval free (F90 and C++)
|
|
Packit Service |
c5cf8c |
43. Type create indexed block
|
|
Packit Service |
c5cf8c |
44. Type create resized
|
|
Packit Service |
c5cf8c |
45. User-defined error handler invoked:
|
|
Packit Service |
c5cf8c |
a. On comm from Fortran on communicator
|
|
Packit Service |
c5cf8c |
b. On win from C++ and Fortran
|
|
Packit Service |
c5cf8c |
46. Error output strings involving:
|
|
Packit Service |
c5cf8c |
a. MPI_MODE_NOSTORE errors
|
|
Packit Service |
c5cf8c |
b. MPI_MODE_NOCHECK errors
|
|
Packit Service |
c5cf8c |
c. MPI_MODE_NOPUT errors
|
|
Packit Service |
c5cf8c |
d. MPI_MODE_NOSUCCEED errors
|
|
Packit Service |
c5cf8c |
e. MPI_MODE_NOPRECEED errors
|
|
Packit Service |
c5cf8c |
f. Unknown assert value in window mode (as above)
|
|
Packit Service |
c5cf8c |
g. Datatype = 0x0
|
|
Packit Service |
c5cf8c |
h. MPI_Op = MPI_REPLACE
|
|
Packit Service |
c5cf8c |
i. MPI_UNDEFINED
|
|
Packit Service |
c5cf8c |
j. MPI_IN_PLACE
|
|
Packit Service |
c5cf8c |
k. MPI_FILE_NULL
|
|
Packit Service |
c5cf8c |
l. MPI_WIN_NULL
|
|
Packit Service |
c5cf8c |
m. MPI_REQUEST_NULL
|
|
Packit Service |
c5cf8c |
o. MPI_Count output (Note dangerous and improper assert! in errutil.c!)
|
|
Packit Service |
c5cf8c |
47. Use of "CombineSpecificCodes" (static in file); MPIR_Err_combine_codes
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
Also,
|
|
Packit Service |
c5cf8c |
Replace the calls to MPIR_Group_release in Finalize with
|
|
Packit Service |
c5cf8c |
MPIR_Process.group_release, and set the pointer to this routine when
|
|
Packit Service |
c5cf8c |
the group code is used.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
--- DONE ---
|
|
Packit Service |
c5cf8c |
1. Free keyvals, while in use in a communicator and while not in use
|
|
Packit Service |
c5cf8c |
2. User copy and delete functions on keyvals
|
|
Packit Service |
c5cf8c |
a) Also check error return on attribute copy during comm dup. This
|
|
Packit Service |
c5cf8c |
should be a recoverable error.
|
|
Packit Service |
c5cf8c |
3. Check all 7 predefined attributes on comm world
|
|
Packit Service |
c5cf8c |
4. Set multiple attributes, in various orders (to ensure that all
|
|
Packit Service |
c5cf8c |
branches of the insert-into-list of keyvals code are exercised).
|
|
Packit Service |
c5cf8c |
5. Perform attribute tests with comm, type, win (same code?)
|
|
Packit Service |
c5cf8c |
6. Collective tests:
|
|
Packit Service |
c5cf8c |
b. Misc
|
|
Packit Service |
c5cf8c |
opland types: long long, char, unsigned char, float, double,
|
|
Packit Service |
c5cf8c |
long double
|
|
Packit Service |
c5cf8c |
oplor types: long long, char, unsigned char, float, double,
|
|
Packit Service |
c5cf8c |
long double
|
|
Packit Service |
c5cf8c |
bcast: non contig input type (e.g., broadcast a vector).
|
|
Packit Service |
c5cf8c |
bcast: long messages
|
|
Packit Service |
c5cf8c |
alltoall: long messages are not covered
|
|
Packit Service |
c5cf8c |
c) Need tests for Alltoallw, Exscan.
|
|
Packit Service |
c5cf8c |
d. Intercomm collective
|
|
Packit Service |
c5cf8c |
bcast
|
|
Packit Service |
c5cf8c |
reduce
|
|
Packit Service |
c5cf8c |
allreduce
|
|
Packit Service |
c5cf8c |
allgather
|
|
Packit Service |
c5cf8c |
Gatherv
|
|
Packit Service |
c5cf8c |
Scatterv
|
|
Packit Service |
c5cf8c |
Allgatherv
|
|
Packit Service |
c5cf8c |
Alltoall
|
|
Packit Service |
c5cf8c |
Alltoallv
|
|
Packit Service |
c5cf8c |
Barrier
|
|
Packit Service |
c5cf8c |
7. Set and get name for comm, type, win. Check predefined names.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
8. dup an intercommunicator (context generation in commutil);
|
|
Packit Service |
c5cf8c |
also check the handling of attributes after the dup.
|
|
Packit Service |
c5cf8c |
- dup done, still need to check attribute handling - done
|
|
Packit Service |
c5cf8c |
8a) Get group of an intercommunicator
|
|
Packit Service |
c5cf8c |
14. type_dup. Apply to both predefined and user defined types.
|
|
Packit Service |
c5cf8c |
(Should be done; see fkeyvaltype)
|
|
Packit Service |
c5cf8c |
17. Add tests for add-error-class, code, string; -- done
|
|
Packit Service |
c5cf8c |
21. Ensure group compare unequal (line 142--145 in source) are tested;
|
|
Packit Service |
c5cf8c |
this is for groups of the same size but with different processes -- done
|
|
Packit Service |
c5cf8c |
23. group incl with empty group as output (n == 0)
|
|
Packit Service |
c5cf8c |
25. groupdebug.c - use debug macro marker for debug routine (and do
|
|
Packit Service |
c5cf8c |
not compile unless enable-g=something is set).
|
|
Packit Service |
c5cf8c |
28. bsendutil.c - construct tests to ensure that all branches are
|
|
Packit Service |
c5cf8c |
tested. For example, arrange for different completion orders for
|
|
Packit Service |
c5cf8c |
entries added to the buffer (e.g., use send but then do the
|
|
Packit Service |
c5cf8c |
receives in a particular order, and make the data large enough to
|
|
Packit Service |
c5cf8c |
trigger rendezvous sending in the internal Isend). - test added (need
|
|
Packit Service |
c5cf8c |
to test against the coverage tests)
|
|
Packit Service |
c5cf8c |
31. request_get_status; can be tested as if MPI_Test, but does not free
|
|
Packit Service |
c5cf8c |
the request (really a nondestructive MPI_Test) (also see 29.)
|
|
Packit Service |
c5cf8c |
32. For testall, testsome, waitall, and waitsome. Add tests that
|
|
Packit Service |
c5cf8c |
trigger the MPI_ERR_IN_STATUS, by using MPI_ERR_TRUNCATE for
|
|
Packit Service |
c5cf8c |
receives. -- done for all four.
|
|
Packit Service |
c5cf8c |
33. Add tests for lookup/publish/unpublish. use host:port values as
|
|
Packit Service |
c5cf8c |
port name. -- done
|
|
Packit Service |
c5cf8c |
34. Topology tests:
|
|
Packit Service |
c5cf8c |
cart-map - newrank undefined - done
|
|
Packit Service |
c5cf8c |
cart-shift - displ == 0 - done
|
|
Packit Service |
c5cf8c |
cart-sub - remove all dimensions - done
|
|
Packit Service |
c5cf8c |
dims-create - see code FIXME (-done-maybe)
|
|
Packit Service |
c5cf8c |
graph_map - newrank undefined - done
|
|
Packit Service |
c5cf8c |
topotest - undefined - done
|
|
Packit Service |
c5cf8c |
36. Add tests for info delete, dup, getvaluelen. Add enough tests to
|
|
Packit Service |
c5cf8c |
check insert at beginning, middle, end. -- all done
|
|
Packit Service |
c5cf8c |
37. Add tests for info set that replaces an existing value. -- done
|
|
Packit Service |
c5cf8c |
38. Add tests for all RMA (alloc mem, free mem, (get, put, accumulate)-
|
|
Packit Service |
c5cf8c |
with win_fence,
|
|
Packit Service |
c5cf8c |
win_create, win_free, win_get_group,
|
|
Packit Service |
c5cf8c |
win_get_name, win_set_name,
|
|
Packit Service |
c5cf8c |
40. Add tests for all of MPI-IO not already covered.
|
|
Packit Service |
c5cf8c |
Most of these were be covered by the John May test.
|
|
Packit Service |
c5cf8c |
These include the routines in the files (entire file if no notes on that
|
|
Packit Service |
c5cf8c |
file):
|
|
Packit Service |
c5cf8c |
get_posn_sh.c
|
|
Packit Service |
c5cf8c |
iotest.c
|
|
Packit Service |
c5cf8c |
iread_sh.c
|
|
Packit Service |
c5cf8c |
iwrite_sh.c
|
|
Packit Service |
c5cf8c |
open.c (a few lines, including if(!rank)ADIO_Set_shared_fp
|
|
Packit Service |
c5cf8c |
rd_atallb.c
|
|
Packit Service |
c5cf8c |
rd_atalle.c
|
|
Packit Service |
c5cf8c |
read_at.c (at "convert count and offset to bytes")
|
|
Packit Service |
c5cf8c |
read_ord.c
|
|
Packit Service |
c5cf8c |
read_ordb.c
|
|
Packit Service |
c5cf8c |
read_sh.c (for ADIO_ReadStrided)
|
|
Packit Service |
c5cf8c |
seek.c (for MPI_SEEK_SET)
|
|
Packit Service |
c5cf8c |
seek_sh.c (for MPI_SEEK_END)
|
|
Packit Service |
c5cf8c |
wr_atallb.c
|
|
Packit Service |
c5cf8c |
write_at.c (at "convert bufocount and offset to bytes")
|
|
Packit Service |
c5cf8c |
write_ord.c
|
|
Packit Service |
c5cf8c |
write_ordb.c
|
|
Packit Service |
c5cf8c |
write_sh.c (ADIOI_WRITE_LOCK and UNLOCK; also ADIO_WriteStrided)
|