This is the source code for the tool presented in the paper:
Adrian Horga, Ahmed Rezine, Sudipta Chattopadhyay, Petru Eles, Zebo Peng, "Symbolic Identification of Shared Memory Based Bank Conflicts for GPUs", Journal of Systems Architecture, 2022.
The code is structured into 3 folders:
- "Direct_approach" - the tool that uses the direct encoding for detecting bank conflicts
- "On-demand_conflict-guided_approach" - the tool that uses the step-by-step encoding for detecting bank conflicts
- "Programs" - the folder containing the applications tested
The tools are based on GKLEE. Follow the instructions on the GKLEE page in order to set-up both of the versions (i.e., "Direct_approach" and "On-demand_conflict-guided_approach").
The applications tested are in the folder "Programs". Since the ""On-demand_conflict-guided_approach" is the faster of the two proposed approaches, the applications are set up for that version.
As an observation, "histogram256" has variable transactions when writing to shared memory. As opposed to reading from shared memory. That means, for "histogram256", the tool needs to target "write" operations. For the moment, this needs to be done directly in the tool's code. In "BankConflictsSideChannel::computeModel()", the "write" analysis part needs to be uncommented and the "read" commented out. The tool needs to be recompiled after the changes.
For reporting bugs or any other issues please contact Adrian Horga.