无法编译简单的 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】:我相信使用引号 ("") 会告诉编译器在与代码文件相同的目录中查找,因此您可能想尝试使用 <book.h>
而不是 "book.h
。
假设 book.h 是一个包含在 CUDA 中的文件。我以前从来没有用过。
【讨论】:
感谢 Liam 的回复,但 CUDA 似乎不包含“book.h”。以上是关于无法编译简单的 CUDA 示例的主要内容,如果未能解决你的问题,请参考以下文章
使用 Visual Studio 2010 express 编译 CUDA 示例