Introducing FusionSim

AMD Fusion Developer Summit '12 presentation slides

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.   

  • Discrete FusionSim versions model a discrete heterogeneous CPU/GPU system.

    In a discrete
    heterogeneous system the CPU and the GPU each operate on a distinct memory space. The memory spaces are distinct both logically (separate memory address spaces) and physically (the CPU and the GPU each have their private DRAM). In such systems the CPU/GPU communication involves copying blocks of data back and forth between the main memory and the GPU DRAM via the PCIe link.
  • Fused FusionSim versions model a fused heterogeneous CPU/GPU system.

    In a fused heterogeneous system the CPU and the GPU are placed on the same die and share the same DRAM. This implementation alleviates the need to transfer blocks of data between the distinct DRAM memories thus eliminating overheads associated with the bandwidth limitations of PCIe and the
    latency of the memory transfers (due to OS, North Bridge, PCIe interconnect, etc.).
    Some of the recent real-life examples of such systems are AMD’s Lliano and Intel’s Sandy Bridge.
FusionSim was presented on June 13th at the AMD Fusion Developers Summit 2012 held in Bellevue, WA.