“…It is used for early design space exploration and architecture tuning [1]- [3], evaluation of GPU compilation techniques [4], application development and optimization [5], and in virtual platforms for system software development [6]. While Central Processing Unit (CPU) simulation techniques have reached maturity, GPU simulation often suffers from the following problems: (a) instruction sets are not accurately modeled, but approximated by an artificial, low-level intermediate representation [7], [8], (b) GPU simulators do not model existing commercial GPUs, but only simplified GPU architectures [9], (c) instead of using vendor provided driver stacks and compilers, GPU simulators often rely on simplified system software, which may behave entirely differently to original tools [10], [11], and (d) GPUs are treated as standalone devices, not modeling any CPU-GPU transactions [12]. This has led researchers using GPU simulation to rely on tools providing questionable accuracy [13].…”