15

コマンドラインから nvcc を使用して cuda .cu ファイルをコンパイルする必要があります。ファイルは「vectorAdd_kernel.cu」で、次のコードが含まれています。

extern "C" __global__ void VecAdd_kernel(const float* A, const float* B, float* C, int N)
{
    int i = blockDim.x * blockIdx.x + threadIdx.x;
    if (i < N)
        C[i] = A[i] + B[i];
}

次のコマンドを使用しました (.cubin ファイルを取得する必要があります)。

nvcc --cubin --use-local-env --cl-version 2010 -keep -I "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include" vectorAdd_kernel.cu

コンパイラはファイル vectorAdd_kernel.cpp4.ii および vectorAdd_kernel.cpp1.ii を作成し、次の出力で停止します。

C:\Users\Massimo\Desktop\Pluto>nvcc --cubin --use-local-env --cl-version 2010 vectorAdd_kernel.cu -keep -I "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include"

vectorAdd_kernel.cu

vectorAdd_kernel.cu

c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(29): error: invalid redeclaration of type name "size_t"

C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include\new(51): error: first parameter of allocation function must be of type## Heading ## "size_t"

C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include\new(55): error: first parameter of allocation function must be of type "size_t"

この問題を解決するために私を助けてもらえますか?

4

3 に答える 3

1

同様の問題がありました。

SourceAnnotations.h でビルドが中断するコード:

#ifdef  _WIN64
typedef unsigned __int64    size_t;
#else
typedef _W64 unsigned int   size_t;
#endif

_WIN64これでコンパイラシンボルを追加しました--compiler-options "-D _WIN64"。私の nvcc ビルド文字列は次のようになりました。

nvcc kernel.cu --cubin --compiler-options "-D _WIN64"
于 2015-02-15T20:54:12.283 に答える