根据这个http://www.nvidia.co.uk/content/PDF/isc-2011/Ziegler.pdf,我知道GPU文献中的重放意味着序列化。但是导致序列化数量的因素是什么?
为此,我做了一些实验。描述了一些内核并找到了重放次数(=发出指令 - 执行指令)。有时,银行冲突的数量等于重播次数。其他一些时候,银行冲突的数量较少。这意味着银行冲突的数量始终是一个因素。另一个呢?
根据上面的幻灯片(来自幻灯片35),还有其他一些:
。指令缓存未命中
。常数内存库冲突
根据我的理解,可以有另外两个:
。分支机构的分歧数量。由于两个路径都被执行,因此有重放。但是我不确定发布指令的数量是否会受到分歧的影响?
。缓存未命中数。我听说有时会重播长延迟内存请求。但在我的实验中,L1缓存未命中通常高于重放。
任何人都可以确认这些因素是否有助于序列化?什么是不正确的,我会错过其他什么吗?
由于
答案 0 :(得分:1)
据我所知,分支差异有助于教学重播。
我不确定缓存未命中数。应该由不影响指令的内存控制器透明地处理。更糟糕的是,我能想到的是管道在内存被正确获取之前就会停止。