【发布时间】:2018-06-28 11:39:39
【问题描述】:
我需要编写一个 OpenCL 程序来将一个大缓冲区(几百万个浮点数)减少为一个浮点数。为了问题的简单性,我在这里假设我需要计算所有浮点数的总和。
所以我编写了一个内核,它接受一个浮点缓冲区作为输入,并通过 64 个数据包对其求和。它将结果写入一个小 64 倍的缓冲区。然后我迭代这个内核的调用,直到数据小到可以复制回主机并由 CPU 求和。
我是 OpenCL 的新手,我是否需要在每个内核之间设置屏障以便它们按顺序运行,或者 OpenCL 是否足够聪明,可以检测到第 n 个内核通道正在写入用作输入缓冲区的输出缓冲区第 n+1 个内核?
或者有更聪明的方法吗?
【问题讨论】:
标签: opencl