简单的cuda编译出错

Man*_*ete 11 c c++ cuda gpu

FSPB_main.cpp

int main(int args, char* argv[]){    
    .......   

   float *d_a;   
   cudaMalloc( (void**)&d_a, 5*sizeof(float) );

}
Run Code Online (Sandbox Code Playgroud)

$ nvcc -L/usr/local/cuda/lib -lcutil -lcudpp -lcuda -lcudart -c -o FSPB_main.o FSPB_main.cpp

FSPB_main.cpp:在函数'int main(int,char**)'中:FSPB_main.cpp:167:45:错误:'cudaMalloc'未在此范围内声明

这个错误是什么意思?它只是一个cudaMalloc并且它假设为编译器支持吗?

像cudaMalloc这样的函数可以用在.cpp文件中吗?我是否需要为来自CUDA的任何内容创建.cu文件?

kar*_*lip 20

您需要包含声明CUDA函数的头文件:

#include <cuda_runtime_api.h>
#include <cuda.h>
Run Code Online (Sandbox Code Playgroud)

然后在cmd行上你还需要添加-I那些包含所在的PATH(选项).

在我的系统上,CUDA 2.1版安装了头文件/usr/local/cuda.要编译,我会做类似的事情:

nvcc -I/usr/local/cuda/include -L/usr/local/cuda/lib -lcutil -lcudpp -lcuda -lcudart -c -o FSPB_main.o FSPB_main.cpp
Run Code Online (Sandbox Code Playgroud)

-I.如果您的代码依赖于您编写的位于源代码的同一目录中的自定义标头,请不要忘记添加到该命令.