I. Introduction
For high-performance computing systems the interconnection network is the critical piece of hardware that makes the system a “supercomputer”. In other realms, cloud and enterprise data centers and personal computers for example, one can find the same processors, memory, storage devices, and accelerators. It is the network that tightly couples these devices in such a way that it can be viewed and used as a single high-performance system. The network enables the programming runtimes (e.g., MPI, SHMEM, UPC, etc.) to be highly productive to programmers by supplying large amounts of bandwidth and low message latencies. Supercomputer architectures are seeing a large increase in size and complexity to achieve an exaflop of performance [32]. As the number and complexity of nodes continues to increase to achieve exascale, the importance and critical role of the network also increases.