【问题标题】:Unable to compile simple CUDA example无法编译简单的 CUDA 示例
【发布时间】: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 中。我会尝试不同的例子。

标签: compilation cuda nvidia


【解决方案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”。
    猜你喜欢
    • 2017-03-26
    • 1970-01-01
    • 2020-11-13
    • 2017-08-05
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多