CUDA Error:no kernel image is available for execution on device解决方法

1. 问题描述

操作环境:VS2017+CUDA11.1
显卡:GT930M

运行第一个 Hello World程序

代码:

// An highlighted block
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include "stdio.h"

/* 修饰符__global__表明这个函数是将会从CPU中调用,在GPU中进行执行。 并借此函数来启动内核函数。 */
__global__ void kernel_hello(void)
{
	printf("Hello World  ! \n");
}

int main(void) {
	kernel_hello <<<1, 5 >>> ();
	/* 三重尖括号里的参数表明的是相关的执行配置,用来表明使用多少线程来执行内核函数, 在本例子中有5个GPU线程被系统所调用。 */
	cudaDeviceReset();
	/* 执行完成后调用cudaDeviceReset()函数释放和清空与当前进程运行相关的资源。 */
	return 0;
}


但发现发现可以运行,不报错,但不输出 printf语句里的内容
然后运行了一个cuda自带的例子:计算两个数组间的加法
输出如下
在这里插入图片描述

2.解决方法

查阅后分析原因可能是cuda版本过高,不匹配当前显卡

(1)查看本机显卡的算力
打开控制台,输入
cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\extras\demo_suite
11.1是我的cuda版本,改成你自己的
输入
deviceQuery.exe
在这里插入图片描述
如图,我的算力是5.0,你的是多少就是多少
(2)VS中配置
工程右键属性
在这里插入图片描述
在这里插入图片描述
增加 -arch sm_xx ,xx指算力,例如我的上面步骤得出的GT930M的算力是5.0,那么就是 -arch sm_50

3.验证

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值