During the summer period this year, I will participate in the Purdue University SURF program and working in the Accel-Sim project, so I feel like to compose a weekly development blog series to keep track of challenges and insights gained from the research process.

This article is like the summary for week 0 progress, which is about the preparation work I have done to understand the project. Noted all of the following contents can be found on the project repo page and thus should be considered as publicly available info. In addition, some of the explanation on the project are based my own interpretation and thus might be fully represented the actual project. If you want accurate description, I suggest you to check out the official repo here: Accel-Sim.

First it might be good to introduce the project Accel-Sim.  Anyway, the Accel-Sim, basically is an academic simulator used to better simulate the modern industrial GPUs like the Nvidia RTX series in order to give a more accurate baseline for researchers when developing new GPUs. The main components of Accel-Sim include: 1) machine ISA support via SASS tracer tool utilizing NVBit, 2) flexible and detailed performance mode, 3) tuner and benmarks to reveal more configurations of actual physical GPU, and 4) correlator to match the simulated GPU with real hardware.

Before further introduction, some explanations on the terminologies might be helpful to let new comers to better understand the project.

machine ISA: according to the ISCA video from the research team, maintaining a virtual ISA and a machine ISA is a common practice in the GPU industry. Virtual ISA (Nvidia PTX for instance) is sort of like a higher level assembly language that does not get changed often for the developers to build compatible binaries over time, sort of like an interface between source code and the actual instructions run on the hardware. The machine ISA (Nvidia SASS), on the other hand, is what actually run on the physical chips and certain binaries might utilize it to hand tune for better performance, kind of like in embedded system development, certain components are written in assembly for performance considerations.

NVBit: NVidia Binary Instrumentation Tool (GitHub), which is used by the team to generate every SASS trace information for the executables run for better simulation result.

Now back to the Accel-Sim, what is does essentially is to incorporate machine ISA and virtual ISA for simulation to achieve better simulator of current GPUs in terms of error rate. In addition, the architecture changes made to the GPGPU-Sim simulator, which are introduced together with the Accel-Sim paper, better abstract the real design. Finally, the tuner, microbenchmarks, and the correlator introduced tune the simulated version of GPU as close as they can to the real hardware as possible.

The above paragraphs concluded what I have gained from some basic research and code reading from the project repo. In the next week, I will probably dig deeper into the simulator code and possible perform some evaluation tests on the program.

References

  1. Mahmoud Khairy, Jason Shen, Tor M. Aamodt, and Timothy G. Rogers "Accel-Sim: An Extensible Simulation Framework for Validated GPU Modeling", In The 47th International Symposium on Computer Architecture, May 2020