在内核中动态分配GPU全局内存是否可能?
我不知道我的答案有多大,因此我需要一种为每个部分分配内存的方法。CUDA 4.0允许我们使用RAM…这是一个好主意还是会降低速度?
在内核中动态分配GPU全局内存是否可能?
我不知道我的答案有多大,因此我需要一种为每个部分分配内存的方法。CUDA 4.0允许我们使用RAM…这是一个好主意还是会降低速度?
可以在内核中使用malloc。请查看下面的示例,该示例摘自Nvidia Cuda指南:
__global__ void mallocTest()
{
char* ptr = (char*)malloc(123);
printf(“Thread %d got pointer: %p\n”, threadIdx.x, ptr);
free(ptr);
}
void main()
{
cudaThreadSetLimit(cudaLimitMallocHeapSize, 128*1024*1024);
mallocTest<<<1, 5>>>();
cudaThreadSynchronize();
}
will output:
Thread 0 got pointer: 00057020
Thread 1 got pointer: 0005708c
Thread 2 got pointer: 000570f8
Thread 3 got pointer: 00057164
new
和delete
运算符,而不是C中的malloc
和free
。