LLFI-GPU is an LLVM based fault injection tool, that injects faults into the LLVM IR of the application source code of GPU CUDA kernels. The faults can be injected into specific program points, and the effect can be easily tracked back to the source code. LLFI-GPU is typically used to map fault characteristics back to source code, and hence understand source level or program characteristics for various kinds of fault outcomes.
Dependencies (Tested):
- Python 2.7
- NVCC v6.0.1
- CUDA SDK v6.0.37
- LLVM 3.0
- Ubuntu 12.04 LTS x64
Steps:
- Modify 'makeCommands'to compile target benchmark in profile.py and inject.py. Put benchmark input in 'inputParameters'.
- Configure fault injection parameters in '# FI Config' section in profile.py and inject.py.
- Add headers in target benchmark source code. This is shown in line 9-17 in example.cu. Label GPU kernel calls so that you can trace it. This is added in line 124 and 126 in exmple.cu.
That's it. Run "python profile.py" and "python inject.py" to start fault injections. All fault injection logs and IR files are located under folder called 'bamboo_fi'.
An example of the command line output by running the above scripts can be found in example.output
We tested on NVIDIA K20 and GTX960 GPUs.
Have fun!
Understanding Error Propagation in GPGPU Applications (SC'16)