Arguments OpenCL内核的标量参数

Arguments OpenCL内核的标量参数,arguments,kernel,opencl,scalar,Arguments,Kernel,Opencl,Scalar,我有两个问题与OpenCL内核的参数有关。如果我在描述问题的上下文中出错,请纠正我 标量参数(例如,内核foo(inta))被放置在私有地址空间中(与所有内核参数一样,不管它们是否为标量)。不需要_uprivate关键字;默认情况下,参数放置在专用地址空间中。 问题1:谁负责将标量放入GPU专用地址空间?标量不需要显式传输操作(从CPU到GPU地址空间)。为什么呢? 问题2:我可以将标量作为参数输出吗?在其他数组中,我想从内核计算中获得一个值。Q1:OpenCL运行时负责处理内核参数 问题2:没

我有两个问题与OpenCL内核的参数有关。如果我在描述问题的上下文中出错,请纠正我

标量参数(例如,内核foo(inta))被放置在私有地址空间中(与所有内核参数一样,不管它们是否为标量)。不需要_uprivate关键字;默认情况下,参数放置在专用地址空间中。 问题1:谁负责将标量放入GPU专用地址空间?标量不需要显式传输操作(从CPU到GPU地址空间)。为什么呢?
问题2:我可以将标量作为参数输出吗?在其他数组中,我想从内核计算中获得一个值。

Q1:OpenCL运行时负责处理内核参数


问题2:没有。您必须写入缓冲区或映像。如果您想从内核的整个执行中获得单个值,请将其视为<强>还原< /强>。您的内核可能同时在一定数量的处理单元上运行,并且这些实例可能不会以任何特定顺序执行。如果内核存储一个值,那么内核的每个实例将存储一个值。每个实例都应该有自己的位置来存储值,这样一个实例就不会覆盖另一个实例

谢谢你的帮助。