GPU序列化分解

时间:2011-07-20 06:59:01

标签: cuda opencl gpu gpgpu

根据这个http://www.nvidia.co.uk/content/PDF/isc-2011/Ziegler.pdf,我知道GPU文献中的重放意味着序列化。但是导致序列化数量的因素是什么?

为此,我做了一些实验。描述了一些内核并找到了重放次数(=发出指令 - 执行指令)。有时,银行冲突的数量等于重播次数。其他一些时候,银行冲突的数量较少。这意味着银行冲突的数量始终是一个因素。另一个呢?

根据上面的幻灯片(来自幻灯片35),还有其他一些:

。指令缓存未命中

。常数内存库冲突

根据我的理解,可以有另外两个:

。分支机构的分歧数量。由于两个路径都被执行,因此有重放。但是我不确定发布指令的数量是否会受到分歧的影响?

。缓存未命中数。我听说有时会重播长延迟内存请求。但在我的实验中,L1缓存未命中通常高于重放。

任何人都可以确认这些因素是否有助于序列化?什么是不正确的,我会错过其他什么吗?

由于

1 个答案:

答案 0 :(得分:1)

据我所知,分支差异有助于教学重播。

我不确定缓存未命中数。应该由不影响指令的内存控制器透明地处理。更糟糕的是,我能想到的是管道在内存被正确获取之前就会停止。