FPChecker is tool to detect floating-point exceptions (e.g., NaNs, division by zero) on NVIDIA GPUs. It uses clang/LLVM to compile and instrument CUDA kernels. The tool informs to users the location where exceptions occurred (file and line number).
FLiT (Floating-point Litmus Tests) is a C++ test infrastructure for detecting variability in floating-point code caused by variations in compiler code generation, hardware and execution environments.
ADAPT is a tool for mixed precision analysis. The tool uses algorithmic differentiation to estimate the output error due to lowering the precision of variables. ADAPT also provides a floating-point rounding error sensitivity profile of the code.
Precimonious is a framework to automatically tune the precision of floating-point variables. The tool allows users to specify a target error and performance threshold, and uses the clang/LLVM compiler a main compiler infrastructure.
HiFPTuner is a dynamic precision tuner. Different from other tuners, it explores the community structure of the floating-point variables and uses the community structure to guide precision tuning to find better precision configurations in less time.
FloatSmith provides automated source-to-source tuning and transformation of floating-point code for mixed precision using three existing tools: 1) CRAFT, 2) ADAPT, and 3) TypeForge. The primary search loop is guided by CRAFT and uses TypeForge to prototype mixed-precision versions of an application. ADAPT results can optionally be used to help narrow the search space, and there are a variety of options to customize the search.
FPBench provides benchmarks, compilers, and standards for the floating-point research community.
ReMPI is a record-and-replay tool for MPI+OpenMP applications. It helps in debugging floating-point program executions that produce different floating-point results due to MPI non-determinism.
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.