在vs中写cuda代码时,调用核函数<<<>>>,提示E0029:应输入表达式,但是程序编译通过,并且可以正常运行。

查了大量文章,都没有给出完整的解决方案,有人说编写的是以.cu结尾的CUDA文件,但是因为在vs中使用的是c++的语法提示,编译器按照C++语法提示错误,但是这个错误符合CUDA的语法,所以编译本身是通过的,这里可以忽略它,不影响。我比较认同这个观点,不用管它,后续目前还没发现什么问题。

还有说法是因为用vs创建CUDA文件时系统会创建一个示例代码kernel.cu,这样你在写自己代码时就有了两个main函数,我尝试过删除vs创建的示例代码,但是问题并未解决;还有人说是因为CUDA和vs版本不匹配,查阅文件没有人给出确切回复,这样可以解决,所以就没有尝试

以下是我写的第一个代码出现的问题,目前还并未解决,但是目前没有发现过什么问题

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
__global__ void hello_from_gpu() {
	printf("Hello World from the GPU2!\n");
}
int main() {
	hello_from_gpu<<<2,2>>>();
	cudaDeviceSynchronize();
	return 0;
}

更多推荐