作为并行计算的抽象概念,本地(共享)内存按线程块(CUDA)/工作组(OpenCL)分配,并在同一线程块(CUDA)/工作组(OpenCL)中的所有线程之间共享。
实际是怎么分配的?它是由块/组的第一个线程分配的,还是在内存控制器创建块之前分配的?或者是其他东西 ?
OpenCL 认为“本地内存”是:
它非常类似于 CPU/多核系统中的寄存器或 L1/L2 缓存。编译器了解目标 CPU 的寄存器并相应地进行规划。 当调度程序将工作组调度到硬件资源时,将始终确保为每个工作组提供足够的内存。
您可以将内核执行中的本地内存视为指向已分配内存的指针,类似于寄存器或私有内存。