Linux CUDA C项目(nvcc编译器)中的编译错误

Linux CUDA C项目(nvcc编译器)中的编译错误,linux,cuda,compiler-errors,nvcc,Linux,Cuda,Compiler Errors,Nvcc,我正在从事一个CUDA C项目,一步一步地添加新功能。 一切都很顺利,直到我在代码中添加了一个特定的内核:nvcc编译器现在给了我4个错误,都与同一个内核(新内核)有关。 以下是错误生成行: __global__ void update(float* original, float* new, float* current, int nhalf) { // line 104 int i = threadIdx.x + blockDim.x*blockIdx.x; // line 105

我正在从事一个CUDA C项目,一步一步地添加新功能。 一切都很顺利,直到我在代码中添加了一个特定的内核:nvcc编译器现在给了我4个错误,都与同一个内核(新内核)有关。 以下是错误生成行:

__global__ void update(float* original, float* new, float* current, int nhalf) {  // line 104
  int i = threadIdx.x + blockDim.x*blockIdx.x;  // line 105
  if (i < nhalf) {  // line 106
    current[i] /= nhalf;  // line 107 
    new[i] = (original[i] < current[i]) ? current[i] : original[i]; // line 108  
  }
} 
我使用以下bash命令进行编译:

nvcc -O0 -shared -o libproject.so project.cu -Xcompiler "-fPIC" -I$HOME/include/csound -arch=sm_30 -I/usr/local/cuda/include -L/usr/local/cuda/lib -lcufft -g -G 
我真的很困惑,还因为在同一个项目中,我有许多其他内核非常相似,它们编译得很好。我以同样的方式毫无问题地启动它们。 有人能帮我找出这个问题吗?非常感谢


PS:我正在Ubuntu上使用cuda toolkit 7.0。

这是因为在内核中使用了一个变量,该变量的名称与保留关键字冲突(
在本例中为new


>这个社区wiki答案已从评论中添加,以将问题从未回答的列表中删除]。<>代码>新< /COD>是C++中的保留关键字。将该参数名称更改为其他名称,如

my_new
,在参数处以及
update
函数体中使用。啊,太简单了!非常感谢@RobertCrovella,顺便问一下,你认为有更好的方法找到两个数组的元素最大值吗?我想知道这是不是一个低性能的解决方案。。。(再次感谢您回答所有与cuda相关的问题)
project.cu(106): error: expected a ")"
project.cu(107): error: identifier "current" is undefined
project.cu(108): error: expected a type specifier
project.cu(384): error: too many arguments in function call
nvcc -O0 -shared -o libproject.so project.cu -Xcompiler "-fPIC" -I$HOME/include/csound -arch=sm_30 -I/usr/local/cuda/include -L/usr/local/cuda/lib -lcufft -g -G