memory - 在 OpenCL 中通过 __local 内存传递参数

标签 memory opencl

我在这里对 OpenCL 中的 __local 内存感到困惑。 我读了一些规范说数据流必须从主机到 __Global,然后是__Local。 但我也看到了一些像这样的内核函数:

__kernel void foo(__local float * a)

我想知道数据是如何直接传输到__local 以这种方式内存?

谢谢。

最佳答案

不可能在主机端填充本地缓冲区。因此,您必须遵循流量主机 -> __global -> __local。

本地缓冲区可以在主机端创建,然后作为内核参数传递,也可以在内核中的 gpu 端创建。 在主机端创建本地缓冲区有利于在内核运行之前决定其大小,如果每次运行内核时本地缓冲区大小都需要不同,这可能很重要。

关于memory - 在 OpenCL 中通过 __local 内存传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249801/

相关文章:

android - 钛金 Android : Images and Memory

java - 当前 Java 的 OpenCL 实现是否提供跨平台支持以及在项目中使用的稳定性?

c++ - 将 AMD OpenCL 与 mingw 结合使用

c# - 通过 ref - 内存占用在堆栈上传递 'value type'

java - 对于 1GB 堆,在可视 VM 中运行计算保留大小需要多长时间?

c - C中的数组字符串和普通数组有什么区别?

c++ - 额外的函数/方法定义会增加程序的内存占用吗?

java - Java Encog 3 中的 OpenCL 后端

c++ - 链接 AMD SDK opencl 时出现问题

c - 如何在 OpenCL 中将元素添加到数组末尾?