FusionSim is primarily intended for the simulation of execution of general-purpose CUDA workloads on heterogeneous x86 systems comprising a CPU and a GPU. FusionSim concurrently simulates an x86 out-of-order CPU, a CUDA-capable GPU, a CPU/GPU interconnect and a memory system. To the best of our knowledge, it is the first free open-source simulator available to the research community that provides this functionality.
FusionSim simulates execution of standard 32-bit Linux executable files that (optionally) make use of the NVidia CUDA API. The benchmark executables are created following the standard compilation procedure and are fed to FusionSim without any modifications. All x86 code of the benchmark is simulated on the cycle-accurate out-of-order 32-bit user-space PTLsim CPU simulator. All the CUDA API calls (if any) are simulated on the GPGPU-Sim GPU simulator. The CPU and the GPU simulation/execution happens in parallel as it does on an actual machine.
The origin of FusionSim’s name is twofold. FusionSim is a simulator built by fusion of the two existing simulators, the user-space 32-bit PTLsim CPU simulator and the GPGPU-Sim v.3.0.1b GPU simulator. Additionally, we consider FusionSim as a step towards the research of fused CPU+GPU designs implementing both units on the same die and partially sharing the memory hierarchy. We hope that future releases of this simulator will implement various models of the GPU/CPU interconnect and memory sharing and facilitate research in this area.
FusionSim comes in two flavours: the discrete version and the fused version.