3

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を初めて使用するので、質問は些細なことに思えるかもしれません。

4

2 に答える 2

3

Book.hはCUDAではありません。それはいくつかの簡単なもののために「CudabyExample」によって使用されます。
この例では、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 に答える