opencl中并行求和约简的实现

opencl中并行求和约简的实现,opencl,gpgpu,Opencl,Gpgpu,我正在浏览NVIDIA在 在示例内核代码(fileoclReduction\u kernel.c)中,reduce4使用 1) 展开并移除线程id

我正在浏览NVIDIA在

在示例内核代码(file
oclReduction\u kernel.c
)中,reduce4使用

1) 展开并移除线程id<32的同步屏障

2) 除此之外,代码使用块大小检查对本地内存中的数据求和。我认为在OpenCL中,我们有
获取本地大小(0/1)
来了解工作组的大小。块大小让我困惑


我无法理解上述两点。这些东西为什么以及如何帮助优化?任何关于reduce5和reduce6的解释都会很有帮助。

您在幻灯片21和22中已经做了详细解释,其中@Marco13在评论中链接了这两张幻灯片

  • 随着减少的进行,#“活动”线程减少

    • 当演讲中提到CUDA时(不可否认,我认为OpenCL示例基本上是通过将CUDA内核尽可能地转换为OpenCL来创建的),但它可能会带来一些见解,特别是关于进一步优化的reduce5/reduce6版本。是的,它们仅在CUDA中。但是它没有回答任何问题谢谢@Marco13我在晚上错过了你的链接。可能是我困了:)当我们说代码是为GPU编译的SIMD-4时。可以这样说吗::将有四个SIMD内核执行相同的指令,并且指令可以类似于float/float4/float16??