1

我想在一个内核的内核调用之间使用共享内存。我可以在内核调用之间使用共享内存吗?

4

3 回答 3

2

不,你不能。共享内存具有线程块生命周期。__global__在一次函数调用期间,属于一组的所有线程都可以访问存储在其中的变量。

于 2012-05-15T22:24:30.777 回答
0

试试page-locked memory,但速度应该比显存慢很多。cudaHostAlloc (void **ptr, size_t size, cudaHostAllocMapped); 然后将ptr发送到内核代码。

于 2012-05-22T08:48:53.747 回答
0

以前您可以以非标准方式执行此操作,您将为每个共享内存块拥有一个唯一的 id,下一个内核将检查该 id 并因此对该共享内存块执行所需的处理。这很难实现,因为您需要确保每个内核的完全占用并处理各种极端情况。此外,如果没有正式支持,您将无法依赖计算设备和 cuda 版本之间的兼容性。

于 2012-05-22T14:37:18.090 回答