3

测试.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 的新手,所以问题可能看起来微不足道。

4

2 回答 2

3

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

于 2012-07-28T12:22:11.370 回答
2

我相信使用引号 ("") 会告诉编译器在与代码文件相同的目录中查找,因此您可能想尝试<book.h>而不是"book.h.

假设 book.h 是包含在 CUDA 中的文件。我以前从未使用过它。

于 2012-07-28T12:06:06.783 回答