CUDA新建删除

标签 cuda dynamic-memory-allocation

有人可以清楚地解释如果从 CUDA 4.2 中的 __device__ 或 __global__ 代码调用 new 和 delete 关键字将如何表现吗?

内存在哪里分配,如果是在设备上,是本地的还是全局的?

就问题的上下文而言,我正在尝试在 GPU 上创建神经网络,我想要一个链接表示(类似于链接列表,但每个神经元存储一个包含权重的连接的链接列表,以及指向另一个神经元的指针)神经元),我知道我可以在内核启动之前使用 cudaMalloc 进行分配,但我希望内核控制网络的创建方式和时间。

谢谢!

最佳答案

C++ newdelete 在设备堆内存上进行操作。该设备允许以这种方式分配全局(即板载)存储器的一部分。 newdelete 的工作方式与 device malloc and free 类似。

您可以使用 runtime API call 调整可用于堆的设备全局内存量。

您可能也对 C++ new/delete sample code. 感兴趣

这些功能需要 CC 2.0 或更高版本。

关于CUDA新建删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14417318/

相关文章:

c++ - 从 CUDA 内核访问全局内存指针

c - 在 C 中为队列的前面元素分配内存时出现段错误

c - 在 C 中实现链表的设计选择

c++ - 如何在 C++ 中分配大型动态数组?

concurrency - 如何减少 CUDA 同步延迟/延迟

pointers - 复制到 malloc() 分配的全局内存?

c++ - 在VS2008中构建Cuda程序出现问题: LNK2019

visual-studio-2010 - CUDA 5 和 Visual Studio 2010 智能感知错误

c - 当我多次运行程序时如何使用或释放​​动态分配的内存?

c - 动态内存访问仅在函数内部有效