OpenMP Meets I/O: Portable and Runtime-Managed File Tasks
摘要
HPC nodes have heterogeneous processors with equally diverse storage technologies. OpenMP is the industry standard for portable threaded and accelerator-offload programming, but lacks native support for I/O operations. We propose a set of clauses that explicitly describes file operations to the runtime. We also introduce an agnostic layer that allows this file support to be backend-agnostic. With this semantic information, the runtime can automatically prefetch, coalesce, throttle, and place I/O alongside computation. Using the IOR benchmark, our library prototype sustains raw POSIX throughput even for many small accesses and prevents oversubscription at high thread counts. We showcase benefits of such design with a simple element-wise multiplication kernel prototype. By informing the runtime about file operations, it is able to perform automatic prefetching and accelerates a disk-backed vector multiplication by up to \(1.4\times \) . By treating I/O as first-class tasks in the OpenMP graph, we can cut end-to-end time and deliver portable runtime-managed data movement.