相关疑难解决方法(0)

CUDA在__device__函数中分配内存

在CUDA中有没有办法在__device__函数中分配内存?我找不到这样做的任何例子.

来自手册:B.15动态全局内存分配void*malloc(size_t size); void free(void*ptr); 从全局内存中的固定大小的堆动态分配和释放内存.CUDA内核中malloc()函数至少从设备堆分配大小字节,并返回指向已分配内存的指针,如果存在的内存不足以满足请求,则返回NULL.保证返回的指针与16字节边界对齐.CUDA in-kernel free()函数释放ptr指向的内存,该内存必须由之前调用malloc()返回.如果ptr为NULL,则忽略对free()的调用.使用相同的ptr重复调用free()具有未定义的行为.由给定的CUDA线程通过malloc()分配的内存仍然在CUDA上下文的生命周期内分配,或者直到通过调用free()显式释放.它可以被任何其他CUDA线程使用,甚至可以在后续内核启动时使用.任何CUDA线程都可以释放由另一个线程分配的内存,但应注意确保同一指针不会被多次释放.

cuda

12
推荐指数
1
解决办法
2万
查看次数

CUDA中Malloc函数的效率

我正在尝试将一些 CPU 代码移植到 CUDA 中。我的CUDA卡是基于Fermi架构的,因此我可以使用设备中的malloc()函数来动态分配内存,而不需要对原始代码进行大量更改。(我的代码中多次调用了 malloc() 函数。)我的问题是这个 malloc 函数是否足够高效,或者如果可能的话我们应该避免使用它。我在 CUDA 上运行代码时没有得到太多加速,我怀疑这是由于使用 malloc() 函数引起的。

如果您有任何建议或意见,请告诉我。我感谢您的帮助。

malloc cuda

5
推荐指数
1
解决办法
3909
查看次数

标签 统计

cuda ×2

malloc ×1