visual studio .cu文件显示语法错误但成功编译

时间:2013-03-04 15:49:21

标签: c++ visual-studio syntax cuda

我有以下文件:

// Main.cpp
#include "kernel_util.cuh"

int main()
{
    call_kernel();
}

// kernel_util.cuh
#ifndef KERNEL_UTIL
#define KERNEL_UTIL

#include <cuda_runtime.h>

void call_kernel();

#endif

// kernel_util.cu
#include "kernel_util.cuh"
#include "kernel.curnel"

#define thread 16

void call_kernel() {

    dim3 blocks( ( width + thread - 1 ) / thread, ( height + thread - 1 ) / thread );

    dim3 threads( thread, thread );

    kernel<<<blocks, threads>>>();
}

// kernel.curnel
#ifndef KERNEL
#define KERNEL

#include <cuda_runtime.h>

__global__ void kernel() {

}

#endif

我安装了64位编译器和CUDA 5.0工具包的Visual Studio 2010。上面的代码编译成功但行

kernel<<<blocks, threads>>>();

3rd <给出了“预期的表达式”错误,但是代码编译没有问题并且达到了内核函数。

配置属性:

  • cpp文件项类型c / c ++编译器
  • cu文件项目类型cuda c / c ++
  • cuh文件项类型不参与构建
  • curnel文件项类型不参与构建

1 个答案:

答案 0 :(得分:1)

IDE(MSVC ++)及其用于IntelliSense的编译器前端(自动完成建议以及“错误”代码下的红线)不了解CUDA及其特有的语法。 VS有一些方法可以理解大多数CUDA代码,但是CUDA中块/线程的<<< >>>的选择是一个非常不幸的,C ++编译器前端无法理解(至少,它需要非常对解析器的广泛修改。)

总而言之,你必须忍受<<< >>>下面的红色波浪线。