有人可以清楚地解释如果从 CUDA 4.2 中的 __device__ 或 __global__ 代码调用 new 和 delete 关键字将如何表现吗?
内存在哪里分配,如果是在设备上,是本地的还是全局的?
就问题的上下文而言,我正在尝试在 GPU 上创建神经网络,我想要一个链接表示(类似于链接列表,但每个神经元存储一个包含权重的连接的链接列表,以及指向另一个神经元的指针)神经元),我知道我可以在内核启动之前使用 cudaMalloc 进行分配,但我希望内核控制网络的创建方式和时间。
谢谢!
最佳答案
C++ new
和 delete
在设备堆内存上进行操作。该设备允许以这种方式分配全局(即板载)存储器的一部分。 new
和 delete
的工作方式与 device malloc
and free
类似。
您可以使用 runtime API call 调整可用于堆的设备全局内存量。
您可能也对 C++ new/delete sample code. 感兴趣
这些功能需要 CC 2.0 或更高版本。
关于CUDA新建删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14417318/