LinkTest is a communication API benchmarking tool that tests all possible point-to-point connections between an even-numbered set of hosts and is designed to work on very large numbers of hosts (tested using 1 800 000 MPI tasks on JUQUEEN, Blue Gene/Q). It supports the benchmarking of MPI, TCP, UCP, IB Verbs, PSM2, and NVLink bridges via CUDA. Output of the program is a full timing communication matrix of the message-transmission times for all pairs of hosts written parallelly to SION file. A standard out log that summarizes the results is also provided. Tools are provided to read the generated SION file into Python and to make 1-A4-page reports out of the data.
LinkTest benchmarks communication APIs for n hosts by running n-1 steps. In each step every host performs a ping-pong test with another host. The order in which these connections are tested is by default fixed, but can be randomized.
Pingpong testing of a connection by default is done by having one host send a message to another, which returns the message. Alternatively both hosts can transmit the message at the same time. The specified communication pattern is repeated a user-specified number of times and the average time is taken. To warm-up a connection before testing the just described communication pattern can be run without timing for a user-specified number of times.
LinkTest can be used to benchmark inter- and intra-node communication. Below is an example of an inter-node MPI benchmark from our [AMD EPYC 7742 Case Study](Noteworthy-Reports#testing-inter-intra-cpu-communication-performance-for-a-single-node-a-amd-epyc-7742-case-study).