The topology of the cache hierarchy in gem5-gpu is implemented with Ruby. gem5-gpu should be able to use any topology that Ruby supports (mesh, pt2pt, crossbar, etc). However, these topologies were created with homogeneous CPU cores in mind. Using these topologies may result in strange behavior. For instance, you may have GPU and CPU cores scattered throughout the mesh randomly. Pt2Pt and crossbar should work fine since they are completely flat topologies. If you're interested in using mesh, torus, etc topologies with gem5-gpu send an email to gem5-gpu-dev.
For protocols other than VI_hammer, you can change the topology with the Ruby option –topology. See gem5/configs/ruby/Ruby.py
For the VI_hammer coherence protocol, cluster topology is hardcoded. The cluster topology is a hierarchy of crossbars meant to model clusters of different kinds of cores.
You can read the code in gem5-gpu/configs/gpu-protocols/VI_hammer(_fusion).py and in gem5/configs/topologies/Cluster.py to get an idea of how the hierarchy of crossbars is used.
As a short overview: All GPU cores (and their L1s) are connected to 1 crossbar, which is also connected to the GPU L2. All CPU cores (and their private L1s and L2s) are connected to another crossbar. These two crossbar are connected to another crossbar, which is also connected to the directory / memory.
!!!Add a picture!