“不知道该怎么办'nvcc致命错误

我在Ubuntu的terminal中使用命令行。

我正在编译CUDA_Compiler_Driver_NVCC.pdf中提供的三个文件

当我使用这3个文件的文档给出的命令行时,我得到以下错误:

nvcc fatal:不知道该怎么做'-dc'

如果我在命令行中擦除-dc,我也会得到以下错误:nvcc致命:不知道该怎么做'-surface = sm = 20'

有谁知道我可以如何解决这个问题?

提前感谢您的帮助

盖博

在下面,你会发现我在terminalinput的命令行和文件。

使用的命令行:nvcc -arch = sm_20 -dc a.cu b.cu nvcc -arch = sm_20 ao bo

文件代码(只是文档的复制粘贴):(看起来代码警察在粘贴时发生变化,对于这个小问题抱歉)

******* bh *********** #define N 8 extern __device__ int g[N]; extern __device__ void bar(void); ******* b.cu*********** #include "bh" __device__ int g[N]; __device__ void bar (void) { g[threadIdx.x]++; } ******* a.cu *********** #include <stdio.h> #include "bh" __global__ void foo (void) { __shared__ int a[N]; a[threadIdx.x] = threadIdx.x; __syncthreads(); g[threadIdx.x] = a[blockDim.x - threadIdx.x - 1]; } bar(); int main (void) { unsigned int i; int *dg, hg[N]; int sum = 0; foo<<<1, N>>>(); if(cudaGetSymbolAddress((void**)&dg, g)){ printf("couldn't get the symbol addr\n"); return 1; } if(cudaMemcpy(hg, dg, N * sizeof(int), cudaMemcpyDeviceToHost)){ printf("couldn't memcpy\n"); return 1; } for (i = 0; i < N; i++) { sum += hg[i]; } if (sum == 36) { printf("PASSED\n"); } else { printf("FAILED (%d)\n", sum); } return 0; } 

确保你使用的是正确版本的nvcc。 我有这样的问题,这是因为我使用NVCC 5.5而不是6.0。

还要确保破折号有正确的符号:使用 – (0x2D)而不是 – (0xD0)。