From 3b1f776c0f439b27226af77de01f43f6a3335664 Mon Sep 17 00:00:00 2001 From: Ignacio Laguna Date: Wed, 9 Jun 2021 10:33:13 -0700 Subject: [PATCH] Release 0.2.1 --- README.md | 10 +++++++++- RELEASE.md | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 130d7a2..eae2aa2 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ make && make install ## Using the FPChecker Front-end Version -To use this version, make sure the `bin` directory is available in your `PATH` variable. In LLNL systems, run `module load fpchecker`. This version requires the use of c++11 or later, i.e., `-std=c++11` should be added to compilation flags. +To use this version, make sure the `bin` directory is available in your `PATH` variable. In LLNL systems, run `module load fpchecker`. This version requires the use of c++11 or later, so `-std=c++11` should be added to compilation flags. Replace `nvcc` in your build system with `nvcc-fpc` (which acts as a wrapper for nvcc). For cmake, you can use `cmake -DCMAKE_CUDA_COMPILER=nvcc-fpc`. To instrument the code at build time, the `FPC_INSTRUMENT` environment variable must be set; this can be set when running `make`: @@ -47,6 +47,14 @@ $ FPC_INSTRUMENT=1 make -j ``` If `FPC_INSTRUMENT` is not set, the application will be compiled without instrumentation. +As an alternative, we also provide an interception tool called `fpchecker` that automatically intercepts all nvcc calls from the build script and replaces them with `nvcc-fpc`. To use this tool, simply run `fpchecker` and pass the build script (and its parameters): + +```sh +$ fpchecker make -j +``` + +The `fpchecker` works in Linux only; it uses the LD_PRELOAD trick to intercept all calls to nvcc (via intercepting execve()). + ### Report of Instrumented Files After the code is built, we can see a report of the processed files (which can contained instrumentation) and failed compilations: diff --git a/RELEASE.md b/RELEASE.md index ac06fa5..f4ffd9e 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,3 +1,7 @@ +## Release 0.2.1 +- Added 'fpchecker' tool that intercepts all calls to nvcc from build script (e..g, make) +- The interception tool uses the Linux LD_PRELOAD trick to intercept execve system calls + ## Release 0.2.0 - Added a custom front-end that instruments CUDA. This front-end doesn't require clang/LLVM. - The new front-end is work in progress and has limitations