【发布时间】:2012-05-15 22:17:45
【问题描述】:
我想在一个内核的内核调用之间使用共享内存。 我可以在内核调用之间使用共享内存吗?
【问题讨论】:
标签: cuda shared-memory gpgpu
我想在一个内核的内核调用之间使用共享内存。 我可以在内核调用之间使用共享内存吗?
【问题讨论】:
标签: cuda shared-memory gpgpu
不,你不能。共享内存具有线程块生命周期。在一次__global__ 函数调用期间,属于一组的所有线程都可以访问存储在其中的变量。
【讨论】:
试试page-locked memory,但速度应该比显存慢很多。 cudaHostAlloc (void **ptr, size_t size, cudaHostAllocMapped); 然后将 ptr 发送到内核代码。
【讨论】:
以前您可以以非标准方式执行此操作,您将为每个共享内存块拥有唯一的 id,下一个内核将检查 id 并因此对该共享内存块执行所需的处理。这很难实现,因为您需要确保每个内核的完全占用并处理各种极端情况。此外,如果没有正式支持,您将无法依赖计算设备和 cuda 版本之间的兼容性。
【讨论】: