我知道可以在内核中使用malloc
来为GPU的全局内存分配内存。是否也可以使用realloc
?
答案 0 :(得分:3)
在Cuda编程指南中,当他们介绍malloc
和free
函数时,没有提到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;
}
但如果你真的需要,一定要打电话给它。还要添加适当的错误检查。