Oclgrind is a virtual OpenCL device simulator, including an OpenCL runtime with ICD support. The goal is to provide a platform for creating tools to aid OpenCL development. In particular, this project currently implements utilities for debugging memory access errors, detecting data-races and barrier divergence, collecting instruction histograms, and for interactive OpenCL kernel debugging. The simulator is built on an interpreter for LLVM IR. This project is being developed by James Price and Simon McIntosh-Smith at the University of Bristol.
Project on Github: https://github.com/jrprice/Oclgrind