600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > c语言 2059 语法错误 关于CUDA C 项目中“ error C2059: 语法错误:“” ”问题的解决方法...

c语言 2059 语法错误 关于CUDA C 项目中“ error C2059: 语法错误:“” ”问题的解决方法...

时间:2022-05-17 12:57:44

相关推荐

c语言 2059 语法错误 关于CUDA C 项目中“ error C2059: 语法错误:“” ”问题的解决方法...

该问题的关键在于理解CUDA项目中C\C++文件需要由c++编译器进行编译,而CUDAC的源文件需要由CUDA的编译器nvcc.exe进行编译。

发生该语法错误的原因是cu文件被C++编译器所编译,C++编译器无法识别“<<

为什么cu文件会被C++编译器所编译呢?原因在于我们使用#include将cu文件包含到了C++文件中。对于#include的用途,更简单的理解就是把几个文件合并成一个文件,所以,当编译C++文件中,包含其中的cu文件也会被编译,从而导致“<<

问题原因:不能直接把cuda程序放入cpp中去调用,即核函数的调用语句add<<<2, 128>>>(dev_a, dev_b, dev_c,size); 不能出现在.cpp文件中。

解决办法:可以在.cu文件中封装一层,就是在.cu文件中写一个传同样参数的核函数调用函数addKernel(int *a, int *b, int *c, int size),即在addKernel(int *a, int *b, int *c, int size)函数中调用核函数add<<<2, 128>>>(dev_a, dev_b, dev_c,size),然后在外边main.cpp文件中用调用普通函数的方法调用addKernel(int *a, int *b, int *c, int size)函数,此外需要在addKernel(int *a, int *b, int *c, int size)函数的定义之处和main.cpp文件头部将addKernel(int *a, int *b, int *c, int size)声明为外部函数࿰

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。