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.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

OpenMP Meets I/O: Portable and Runtime-Managed File Tasks

  • Rodrigo Ceccato,
  • Jhonatan Cléto,
  • Jose M. Monsalve Diaz,
  • Hervé Yviquel

摘要

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.