124 High Performance Parallel I/O
10.2.5 Flows
Flow is an important I/O mechanism that combines Trove and BMI for
transporting large amounts of data from disk (via Trove) across the network
(via BMI) to the client’s memory (via BMI on the client) or vice versa. Flow
works like software Direct Memory Access (DMA), so client and server can
start a complex transfer and then simply allow it to complete. The alter-
native is to repeatedly interact with higher-layer code to start and com-
plete each part of the transfer, which involves considerably more latency.
Flows also utilize a protocol based on MPI’s datatypes to implement non-
contiguous data access on the server without constructing a distinct request
for each part of the transfer. This involves