#define NX 256
#define BATCH 10
cufftHandle plan
cufftComplex *data
cudaMalloc((void**)&data, sizeof(cufftComplex)*NX*BATCH)
if (cudaGetLastError() != cudaSuccess){
fprintf(stderr, "Cuda error: Failed to allocate\n")
return
}
if (cufftPlan1d(&plan, NX, CUFFT_C2C, BATCH) != CUFFT_SUCCESS){
fprintf(stderr, "CUFFT error: Plan creation failed")
return
}
...
/* Note:
* Identical pointers to input and output arrays implies in-place
transformation
*/
if (cufftExecC2C(plan, data, data, CUFFT_FORWARD) != CUFFT_SUCCESS){
fprintf(stderr, "CUFFT error: ExecC2C Forward failed")
return
}
if (cufftExecC2C(plan, data, data, CUFFT_INVERSE) != CUFFT_SUCCESS){
fprintf(stderr, "CUFFT error: ExecC2C Inverse failed")
return
}
1、首先MATLAB调用CUDA是通过,MATLAB调用C文件,C文件调用cu文件。2、其次c调用cu之前,使用system,通过nvcc编译cu文件为.o文件,以提供给cpp文件使用,这样C就能调用cu了。
3、最后MATLAB通过mex调用mexFuntion文件,就能编译成MATLAB可调用的mexa64/32文件函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)