大家好,初学CUDA编程,现在已有C语言代码,在将其用CUDA C改写的时候遇到了内存分配的问题,希望大家可以指点一下,谢谢~~
是这样子的,C语言代码中有个4阶复数矩阵求逆的子函数,其中有这么一句话:
int *a_inv = (int*)malloc(sizeof(int)*N);
并将a_inv这个指针变量作为返回值。在C中这么写应该是没有问题的,但是这个子函数在CUDA中是定义为__device__的,并且在
__global__中需要调用它,那么我该如何在CUDA编程的时候在__device__中动态分配内存呢?
我在网上查了一下,GPU端的内存都是在host端管理的,也就是说我需要用cudamalloc在__device__中分配内存,至于传输是不是就不能用cudamemcpy了?而是要用cudamemcpytosymbol?也就是说,在host分配内存之后如何将分配的空间与在__device__中定义的指针变量联系起来呢?
我不知道我有没有把问题说清楚,有哪里没说清楚的跟我提一下哈,希望大家帮忙解答一下这个问题,再次谢谢~~