无法编译简单的CUDA示例

时间:2012-07-28 11:44:46

标签: compilation cuda nvidia

test.cu:

#include <iostream> 
#include "book.h"
__global__ void add( int a, int b, int *c ) {
    *c = a + b; 
}
int main( void ) {
    int c;
    int *dev_c;
    HANDLE_ERROR( cudaMalloc( (void**)&dev_c, sizeof(int) ) );
    add<<<1,1>>>( 2, 7, dev_c );
    HANDLE_ERROR( cudaMemcpy( &c, 
                              dev_c, 
                              sizeof(int), 
                              cudaMemcpyDeviceToHost ) );
    printf( "2 + 7 = %d\n", c );
    cudaFree( dev_c );
    return 0; 
}

我正在尝试编译上面的示例test.cu.我试过用nvcc test.cu但是编译器给出了错误

4.cu:2:18: fatal error: book.h: No such file or directory
compilation terminated.

如何告诉编译器book.h在哪里?我在/ usr / local / cuda中安装了CUDA。 我需要制作Makefile吗? 我是CUDA和Makefile的新手,所以问题似乎微不足道。

2 个答案:

答案 0 :(得分:2)

我认为使用引号(“”)告诉编译器查找与代码文件相同的目录,因此您可能希望尝试<book.h>而不是"book.h

假设book.h是CUDA附带的文件。我以前从未使用过它。

答案 1 :(得分:2)

Book.h不是CUDA。它被“Cuda by Example”用于一些简单的东西 在这个例子中需要提供HANDLE_ERROR,你应该编写自己的代码来处理错误。

在这里你可以找到book.h代码:http://code.google.com/p/cuda-examples/source/browse/trunk/common/book.h?r=3