在CUDA的Drive API中launch kernel 函数原型如下:
CUresult CUDAAPI cuLaunchKernel(CUfunction f,
unsigned int gridDimX,
unsigned int gridDimY,
unsigned int gridDimZ,
unsigned int blockDimX,
unsigned int blockDimY,
unsigned int blockDimZ,
unsigned int sharedMemBytes,
CUstream hStream,
void **kernelParams,
void **extra);
在该函数中
,
参数
kernelParams
是个指针的指针。
举例说明:
如果我们的kernel函数原型如下:
void ktest(void *p1, void*p2, void* p3, void*p4, void*p5, void*p6);
假设我们现在有
6
个
void*
的指针变量,
void *p1,*p2,*p3,*p4,*p5,*p6;
那么
kernelParams
的值不能是这个样子:
void* kernelParams[]= {p1,p2,p3,p4,p5,p6}
而必须是这个样子
void*kernelParams[]= {(void*)&p1,(void*)&p2,(void*)&p3,