|
1
0
应该避免使用原子函数,因为与并行缩减内核相比,原子函数会损害性能。您的内核看起来是在正确的轨道上,但是您需要记住,您必须多次调用它;不要在主机上执行最后的总和(除非您有来自上一次缩减的非常少量的数据)。也就是说,需要一直调用它,直到本地大小等于全局大小。无法对大量数据进行单一调用,因为无法在工作组之间进行同步。 此外,您需要小心设置适当的工作组大小(即本地大小),这取决于本地和全局内存吞吐量和延迟。不幸的是,据我所知,除了自我剖析代码之外,没有办法通过opencl来确定这一点,尽管这并不太难编写,因为ocl为您提供了jit编译。通过经验测试,我发现你应该在遭受过多的银行冲突(太大的本地大小)和全局内存延迟惩罚(太小的本地大小)之间找到一个最佳的位置。最好先做一个基准来确定您的缩减的最佳本地大小,然后使用该本地大小来进行将来的缩减。 编辑: 值得注意的是,将内核调用链接在一起的最佳方法是通过opencl事件。 |
|
Julia · 矢量中相加为总和S的值的数量 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 3 年前 |
![]() |
magisterludi · R中条件下的组变量和和和 3 年前 |
![]() |
Arwen · R中数据帧中特定行的求和函数是什么? 3 年前 |
![]() |
evam · R: 以开头的所有列的总和 3 年前 |
![]() |
John Conor · 将随机观测值之和计算为R中每周的总和 3 年前 |
![]() |
Blueshift · 如何从列表中的对象获取特定属性的总和? 3 年前 |