Skip to content

wangvsa/VerifyIO

Repository files navigation

VerifyIO

VerifyIO is an open-source tool designed for verifying I/O consistency semantics in High-Performance Computing (HPC) applications. It addresses the challenges of ensuring correctness and portability across different I/O consistency models, such as POSIX, Commit, Session, and MPI-IO. By analyzing execution traces, detecting conflicts, and verifying synchronization adherence, VerifyIO provides actionable insights for both application developers and I/O library designers.

The verification workflow is trace-driven and consists of four steps:

  1. Collect the execution trace. The trace file needs to include I/O calls, MPI calls and all of their call arguments for the subsequent verificaiton processes. VerifyIO relies on Recorder to collect such detailed infomration.
  2. Detect data conflicts. Two I/O operations conflict if they access the same location of the same file, and one of them is a write operation.
  3. Build the happens-before graph. Recorder traces also include communication (MPI) events, which we use to build a happens-before graph to demtermine later whether two conflicting I/O operations are properly synchornized. Each node in the graph represents either an MPI event or an I/O event. If there's a path from node A to node B, then we say node A happens-before node B.
  4. Verify proper synchronization. This step iterates over all conflicting pairs and verify if all all conflicting I/O opertions are properly synchronized according to the specified consistency model.

workflow

License

VerifyIO is distributed under the terms of BSD-3 license.

All new contributions must be made under BSD-3 license.

See LICENSE, and NOTICE for details.

LLNL-CODE-2003320

About

Verifying Adherence to Parallel I/O Consistency Semantics

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors