c – 简单的cuda编译出错

FSPB_main.cpp

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

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

}

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

FSPB_main.cpp: In function ‘int main(int, char**)’:
FSPB_main.cpp:167:45: error: ‘cudaMalloc’ was not declared in this
scope

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

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

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

#include <cuda_runtime_api.h>
#include <cuda.h>

然后在cmd行上,您还需要添加PATH(选项-I),其中包含这些包含.

在我的系统上,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

别忘了添加-I.如果您的代码依赖于您编写的自定义标头,那么该命令位于源代码的同一目录中.

翻译自:https://stackoverflow.com/questions/6374609/error-in-a-simple-cuda-compilation

转载注明原文:c – 简单的cuda编译出错