如何实际分配本地(共享)内存?

时间:2016-06-24 04:14:30

标签: parallel-processing cuda opencl shared-memory nvidia

作为并行计算的抽象概念,每个线程块(CUDA)/工作组(OpenCL)分配本地(共享)内存,并在同一线程块(CUDA)/工作组(OpenCL)中的所有线程之间共享。

如何实际分配?是由块/组的第一个线程分配还是在内存控制器创建块之前分配?或者是其他东西 ?

1 个答案:

答案 0 :(得分:1)

OpenCL认为"本地内存"是:

  • 仅在内核执行期间可用的内存,仅由同一工作组的元素共享。每个工作组只能看到他们的本地记忆。
  • 内存使用情况在编译时已知且有限。

它非常类似于CPU /多核系统中的寄存器或L1 / L2高速缓存。编译器知道目标CPU的寄存器并相应地进行规划。 当调度程序将工作组安排到硬件资源时,将始终确保每个工作组都有足够的内存。

您可以将内核执行中的本地内存视为已分配内存的指针,类似于寄存器或私有内存