无法编译简单的 CUDA 示例

Posted

技术标签:

【中文标题】无法编译简单的 CUDA 示例【英文标题】:Unable to compile simple CUDA example 【发布时间】:2012-07-26 21:27:50 【问题描述】:

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

【问题讨论】:

Book.h 不是 CUDA 的一部分。它与“CUDA by example”一书中的示例一起提供。 感谢@talonmies,我的印象是 book.h 包含在 CUDA 中。我会尝试不同的例子。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

假设 book.h 是一个包含在 CUDA 中的文件。我以前从来没有用过。

【讨论】:

感谢 Liam 的回复,但 CUDA 似乎不包含“book.h”。

以上是关于无法编译简单的 CUDA 示例的主要内容,如果未能解决你的问题,请参考以下文章