先给出具体结论,代码在最后面。
具体结论:
核心问题是如何修改gem5-gpu的topology,例如改成mesh network
那么解决方法就是更改了VI_hammer*.py文件(VI_hammer.py和VI_hammer_fusion.py)中的Cluster()调用,将它们更改为Mesh()而不是使用gem5的自动配置拓扑。
可以添加print语句来理解gem5/configs/ruby/ruby.py和gem5-gpu/configs/gpu_protocol/VI_hammer*.py之间的流程。
如果你想使用网格或环面拓扑,使用Ruby拓扑应该相当简单。
您可以在gem5网站上找到更多相关文档:http://gem5.org/Interconnection_Network。
使用Ruby时有两个正交选项。要使用的缓存一致性协议(例如,MOESI_hammer、MESI_Two_level、VI_hammer)和系统的拓扑结构(例如,网格、点对点、交叉开关)。
VI_hammer是一种更“类似gpu”的协议,其中gpu L1是直写的,可能保存过时的数据。MOESI_hammer是一种基于目录的一致性协议,最初是为多插槽CPU系统设计的。
如果要使用网格而不是默认拓扑,则