GPU Compute in Full System
The GPU model in gem5 is currently only supported in SE mode with dependencies on particular ROCm versions (given how the driver is implemented) and limited functionality to the ioctls implemented.
To provide support in FS, we need to model the GPU interface on PCI (referred to as GPU Controller) where it interacts with kernel driver and translate reads/writes to different apertures to proper calls to the shader (GPU) through exisiting HSA interfaces (CP, HW Scheduler, etc.).
There are many different ways to do this, but in the current effort we decided to use unmodified kernel modules and make our implementation compatible with that. The trade off here is lowering the maintenance overhead of the code over time at the cost of more development efforts. This issue is described with an AMD GPU and its required software stack as target. For FS components see GEM5-213. Currently development is done on AMD’s staging branch.
There are multiple steps in which the GPU Controller interacts with kernel and driver.
After we get the driver initialization done, regardless of the functionality implemented, we have:
Stable setup on kernel side.
Reference values for what needs to be implemented.
This would allow us to incrementally add functionality to our GPU PCI Controller. An ongoing list of items to be implemented (feel free to add as we go):
A couple of notes:
Want to convert this into an Epic
Add task to look into dual license for Jason