... | ... | @@ -18,7 +18,7 @@ Not to be confused with bisection testing. In bidirectional testing messages are |
|
|
# Bisection Testing
|
|
|
Not to be confused with bidirectional testing. In bisection communication testing a population is split into two halves and the communication between the two halves is benchmarked. In Linktest the set of tasks is split into two halves and the communication times for a given message size is benchmarked between the two halves. In Linktest this is done by taking the two halves and iterating over all possible pairs with members from differing sets and timing their back-and-forth communication time for a given message size. This is for example useful for testing cell-to-cell communication performance in hierarchically routed network topologies. Linktest tests bisecting halves of tasks when the `--bisection` command-line option is specified.
|
|
|
|
|
|
Please note that the sets are determined at beginning of testing and are never changed. As such a given configuration always results in the same split of tasks into halves. If you wish to have different tasks associated with the two different halves then the task order needs to be changed. This is ideally done when submitting the parallel job for Linktest. TODO: Does this work with the `--mix` option?
|
|
|
Please note that the sets are determined at beginning of testing and are never changed. As such a given configuration always results in the same split of tasks into halves. If you wish to have different tasks associated with the two different halves then the task order needs to be changed. This is ideally done when submitting the parallel job for Linktest.
|
|
|
|
|
|
# Communication API
|
|
|
Communication APIs facilitate the communication between different computers by abstracting the underlying necessary hardware commands into easy-to-use portable instructions that can work on a host of different machines. A classical example is MPI.
|
... | ... | @@ -51,15 +51,11 @@ The time it takes before an action can be executed. For Linktest this is the tim |
|
|
For the relationship between latency transit time and message size see [Communication Time](#communication-time).
|
|
|
|
|
|
# Message Size
|
|
|
The message size is used to refer to the size of messages in bytes used by Linktest to benchmark communication. The relationship between message size and communication/transit time is complex.
|
|
|
|
|
|
For the relationship between latency transit time and message size see [Communication Time](#communication-time).
|
|
|
The message size is used to refer to the size of messages in bytes used by Linktest to benchmark communication. For the relationship between latency transit time and message size see [Communication Time](#communication-time). Note that many communication APIs only support message sizes up to 2 GiB. For 32-bit MPI implementations the cumulative message size of all messages is restricted in total to less than 2 GiB.
|
|
|
|
|
|
# Mixing Task Ranks
|
|
|
Although by default Linktest tests the connection between a given task, which has a number associated with it called the rank, and all other tasks results may depend on the order in which the testing is performed. The `--mix` command-line option causes the task ranks to be randomly mixed which means that consecutive runs will test physical connections in a different order.
|
|
|
|
|
|
TODO: Check for bisection
|
|
|
|
|
|
# Number Of Messages
|
|
|
Linktest benchmarks communications by repeating a communication many times. The amount of times it repeats the sending of messages for timing purposes is controlled via the `--num-messages` command-line argument. This defines how many times the back-and-forth sending of messages is repeated for timing purposes. The final returned times are the average time it took the message to be sent back-and-forth.
|
|
|
|
... | ... | |