CUDA:在内核中使用realloc

时间:2011-03-16 08:18:37

标签: cuda

我知道可以在内核中使用malloc来为GPU的全局内存分配内存。是否也可以使用realloc

2 个答案:

答案 0 :(得分:3)

在Cuda编程指南中,当他们介绍mallocfree函数时,没有提到realloc。我认为它不存在。

如果你想知道它,你为什么不写一个简单的内核并尝试使用它?

答案 1 :(得分:3)

您可以为自己的数据类型编写自己的realloc设备函数。

只需为新数组分配新空间,将旧值复制到新数组,释放旧数组空间,返回新空间。

大致类似于以下代码片段:

__device__ MY_TYPE* myrealloc(int oldsize, int newsize, MY_TYPE* old)
{
    MY_TYPE* newT = (MY_TYPE*) malloc (newsize*sizeof(MY_TYPE));

    int i;

    for(i=0; i<oldsize; i++)
    {
        newT[i] = old[i];
    }

    free(old);
    return newT;
}

但如果你真的需要,一定要打电话给它。还要添加适当的错误检查。