我在这里对 OpenCL 中的 __local 内存感到困惑。 我读了一些规范说数据流必须从主机到 __Global,然后是__Local。 但我也看到了一些像这样的内核函数:
__kernel void foo(__local float * a)
我想知道数据是如何直接传输到__local 以这种方式内存?
谢谢。
最佳答案
不可能在主机端填充本地缓冲区。因此,您必须遵循流量主机 -> __global -> __local。
本地缓冲区可以在主机端创建,然后作为内核参数传递,也可以在内核中的 gpu 端创建。 在主机端创建本地缓冲区有利于在内核运行之前决定其大小,如果每次运行内核时本地缓冲区大小都需要不同,这可能很重要。
关于memory - 在 OpenCL 中通过 __local 内存传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249801/