5
是否可以在內核中的GPU全局內存上動態分配內存?
我不知道我的答案會有多大,因此我需要一種方法爲答案的每個部分分配內存。 CUDA 4.0允許我們使用RAM ...是一個好主意還是會降低速度?在GPU上動態分配內存
是否可以在內核中的GPU全局內存上動態分配內存?
我不知道我的答案會有多大,因此我需要一種方法爲答案的每個部分分配內存。 CUDA 4.0允許我們使用RAM ...是一個好主意還是會降低速度?在GPU上動態分配內存
可以在內核中使用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
從CUDA 4.0,你將能夠使用new
和delete
運營商從C++而不是malloc
和free
從C。
@ scatman:一旦你在內核中調用malloc,我想分配的內存將會在設備上...我是對的嗎? – Manolete
由於cpu無法像malloc一樣快速地處理gtx980的2048個內核,我懷疑它在gpu上分配。否則它只是爲了集成gpus而不是離散的。 –