Archer is a data race detector for OpenMP programs.
Archer combines static and dynamic techniques to identify data races in large OpenMP applications, leading to low runtime and memory overheads, while still offering high accuracy and precision. It builds on an open-source tools infrastructure including LLVM, ThreadSanitizer, and OMPT to provide portability.
Archer is an open-source tool and can be obtained on GitHub .
The dynamic analysis of Archer is part of LLVM starting with LLVM release 10.0. New features and fixes are upstreamed to LLVM, so always check out the latest version of LLVM.
LLVM is available at the LLVM Download Page.
Alternatively install using Spack:
$ git clone https://github.com/LLNL/spack
$ spack/bin/spack install llvm+clang
Archer maintains an up-to-date package in the Spack develop branch, which builds all dependencies and Archer itself. This version of Archer includes the static analysis, but latest features of the dynamic anaylsis might be missing. To install via Spack run:
$ git clone https://github.com/LLNL/spack
$ spack/bin/spack install archer
If you already have Spack, you can omit the first line.
Please refer to the instructions in the README.md.