Visual studio .cu文件显示语法错误,但编译成功
visual studio .cu file shows syntax error but compiles successfully
我有以下文件:
// 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 <
给出"expected an expression"错误,但代码编译没有问题,到达内核函数
配置属性:
- cpp文件项目类型c/c++编译器
- cu文件项目类型cuda c/c++
- cuh文件项类型不参与构建
- 通道文件项类型不参与构建
IDE (msvc++)和它用于智能感知的编译器前端(自动完成建议,以及"不正确"代码下的红线)不知道CUDA及其特殊语法。VS有一些方法可以理解大多数CUDA代码,但是在CUDA中选择<<< >>>
用于块/线程是一个非常不幸的选择,c++编译器前端无法理解(至少,它需要对解析器进行非常广泛的修改)。
总而言之,你必须生活在<<< >>>
下面的红色弯弯曲曲的线。
相关文章:
- 即使不包含其标头,如何成功向前声明的类编译?
- VS2017 版本 15.8.3 成功编译内联方法,而不返回所需值
- 编译花絮 g++, clang++, 使用 libboost -- g++8 编译失败时 g++7 成功;
- 如何在 c++ 中导入文件?以及如何成功编译它们?
- 编译成功,使用 clang 5.0.1/6.0.0 ,在 5.0.2/6.0.1 时失败
- 分配给静态变量的局部变量;编译错误在'c'但在 C++ 中成功
- D3D11 着色器编译成功,但出现白屏
- 尝试用 c++ 制作一个简单的加法器.编译成功,但输出错误
- G++ 和 CL(VS2017) 都编译成功,但 cl 编译的可执行文件运行异常
- Qt 编译成功,但运行失败
- OpenCV简单代码编译成功,但在运行时崩溃
- 在代码块13.12上编译成功,但在ideone或spoj上编译错误
- Visual Studio Team Services编译成功,但没有EXE文件
- 使用CUDA nvcc编译时,与提升库的链接失败,使用gcc编译成功
- 抽象类类型指针编译成功
- 编译成功后找不到 openni2 库
- Visual studio .cu文件显示语法错误,但编译成功
- 如果引用必须指向有效内存,那么为什么这个程序编译成功
- c++ \ 编译成功,无法调试 - STATUS_DLL_NOT_FOUND
- 将Makefiles转换为CMAKEList(编译成功,但程序的行为不同)