**Currently only works with stable branch and MPI**
To perform a bisection bandwidth test, in which the parallel bandwidth between two bisecting halves of tasks, usually placed in a specific configuration of interest with respect to the network topology, two options need to be set.
`--bisection` splits the tasks into two halves and only tests between them. If the tasks assigned to linktest are enumerated `0` to and including `n-1`, where `n` is even, then the tasks `0` to and including `n/2-1` are assigned to the first half and the tasks `n/2` to and including `n-1` are assigned to the second half. Tasks should be pinned to nodes such that the desired test configuration is achieved.
`--unidirectional` causes linktest to test unidirectionally connections in parallel. Testing semidirectionally or bidirectionally does not ensure that communication occurs unidirectionally between the two halves at any given point in time. `--bidirictional` can be used with the understanding that at no point the tests guarantee a certain communication pattern and direction between the two bisecting halves. The individual communications can not be sufficiently synchronized for this. For `--semidirectional` we have seen that the communication organizes itself in such a way that on a given link communication occurs in one direction, but the direction any given link communicates at any given time is random.
## Usage of TCP Communication API Without miniPMI
Linktest can be configured to test MPI or TCP without the miniPMI library. In the case of MPI no additional work is necessary, aside from executing with `mpiexe` or the like, and linktest can be used as above. When testing TCP communication without the miniPMI library the cluster configuration needs to be specified explicitly via the following four environment variables: `LINKTEST_TCP_SIZE`, `LINKTEST_TCP_RANK`, `LINKTEST_TCP_IPADDR_<<<RANK>>>` and `LINKTEST_TCP_PORT_<<<RANK>>>`.