cuda-gdb 调试 Program terminated with signal SIGKILL, Killed. The program no longer exists.

气象干旱触发水文(农业)干旱的概率及其触发阈值的动态变化-贝叶斯copula模型 本文通过建立不同类型干旱传播过程的触发阈值模型,解析了在不同等级气象干旱胁迫下诱发次一级干旱类型的触发阈值。通过贝叶斯概率模型,我们推导了气象干旱与水文干旱、农业干旱、地下水干旱之间的条件概率关系,进一步明确了气象干旱引发水文干旱、农业干旱和地下水干旱的概率及其触发阈值。该模型有效揭示了气象干旱对各级干旱类型的传播机制及其动态变化,为干旱预警系统的建立和水资源管理提供了理论依据和技术支持。 阅读详情

问题简介:

cuda-gdb 调试 Program terminated with signal SIGKILL, Killed. The program no longer exists.

问题背景:

编写cuda程序,需要核对计算过程是否正确,所以使用cuda-gdb来进行单步调试,并显示运算过程及结果。
通过 nvcc -g -G location.cu -o location 编译cuda程序
通过 cuda-gdb location 调试程序
键入 r 程序断在 如图示:
在这里插入图片描述
报出错误如下:

CUDA Exception: Warp Illegal Address
The exception was triggered at PC 0x5555c9de90 (location2.cu:45)
(cuda-gdb) n
[Thread 0x7fb7ff5010 (LWP 10479) exited]

Program terminated with signal SIGKILL, Killed.
The program no longer exists.

问题分析:

在gdb调试时出现以上报错信息,通常是 内存相关问题,查看系统日志 tail /var/log/kern.log -n 1000 发现如下:

Aug 12 09:29:11 nx kernel: [ 1197.607814] nvgpu: 17000000.gv11b         gv11b_fb_print_fault_info:710  [ERR]  [MMU FAULT] mmu engine id:  65, ch id:  504, fault addr: 0x7ffff4e000, fault addr aperture: 0, fault type: invalid pde, access type: virt read, 
Aug 12 09:29:11 nx kernel: [ 1197.608185] nvgpu: 17000000.gv11b         gv11b_fb_print_fault_info:719  [ERR]  [MMU FAULT] protected mode: 0, client type: gpc, client id:  t1 2, gpc id if client type is gpc: 0,
Aug 12 09:29:12 nx kernel: [ 1199.027576] nvgpu: 17000000.gv11b         gk20a_fifo_deferred_reset:1604 [ERR]  chid: 503 is not bound to tsg
Aug 12 09:29:12 nx kernel: [ 1199.039202] nvgpu: 17000000.gv11b          gk20a_tsg_unbind_channel:169  [ERR]  Channel 504 unbind failed, tearing down TSG 4

第一段日志信息说是 [MMU FAULT] fault addr: 0x7ffff4e000
此时,我却任然一头雾水,在网上搜索了很多关于
“cuda-gdb 调试 Program terminated with signal SIGKILL, Killed.
The program no longer exists.
”
这样的关键词,但所得结果均无效。搜索一下午,困惑一晚上,任然不得其解。第二天早上迷迷糊糊看向核函数的形参恍然大悟,问题不就是:将host变量引用传递给了device

在找到原因后才发现:其实,最重要的报错信息是如下,而我却忽略了

CUDA Exception: Warp Illegal Address
The exception was triggered at PC 0x5555c9de90 (location2.cu:45)

这报错信息明确说明 线程束非法地址,其异常被触发在 location2.cu 的45行处 。这意思不就是说地址非法了,再看源码

__global__
void gpu_location_kernel(DeviceArray2D<float>& struct_dev_arr_input_2D,
	DeviceArray2D<float>& struct_dev_arr_w1_2D, DeviceArray2D<float>& struct_dev_arr_w2_2D, DeviceArray2D<float>& struct_dev_arr_w3_2D,
	DeviceArray2D<float>& struct_dev_arr_b1_2D, DeviceArray2D<float>& struct_dev_arr_b2_2D, DeviceArray2D<float>& struct_dev_arr_b3_2D,
	DeviceArray2D<float>& struct_dev_median_layer1_reuslt, DeviceArray2D<float>& struct_dev_median_layer2_reuslt, DeviceArray2D<float>& struct_dev_final_reuslt)
{
	...
}

哈哈,我居然在核函数里使用引用,大错特错,再看源码调用 gpu_location_kernel 处,传递的参数居然是 host 变量的引用,大错特错。

想想为什么会犯这个错误呢?
其实我只是想通过结构体引用传递多个参数值,如果一个参数一个参数写作形参,实在是太长了。遂而将 device 地址放到了 host 结构体中,然后将 host 结构体的引用作为实参传递给核函数,这不出现非法地址,才怪!

解决办法:

只需要将 host 结构体 拷贝到 device 结构体中,然后将 device 结构体指针传递给核函数就可以了,这样既满足了传递多个参数而不追加形参,而又解决了目前的问题。
代码如下:

struct GPULocationKernelParameter{
	float *dev_arr_input_2D;
	size_t dev_arr_input_2D_pitch;
	int dev_arr_input_2D_rows;
	int dev_arr_input_2D_columns;

	float *dev_arr_w1_2D;
	size_t dev_arr_w1_2D_pitch;
	int dev_arr_w1_2D_rows;
	int dev_arr_w1_2D_columns;
	
	float *dev_arr_w2_2D;
	size_t dev_arr_w2_2D_pitch;
	int dev_arr_w2_2D_rows;
	int dev_arr_w2_2D_columns;
	
	float *dev_arr_w3_2D;
	size_t dev_arr_w3_2D_pitch;
	int dev_arr_w3_2D_rows;
	int dev_arr_w3_2D_columns;
	
	float *dev_arr_b1_2D;
	size_t dev_arr_b1_2D_pitch;
	int dev_arr_b1_2D_rows;
	int dev_arr_b1_2D_columns;
	
	float *dev_arr_b2_2D;
	size_t dev_arr_b2_2D_pitch;
	int dev_arr_b2_2D_rows;
	int dev_arr_b2_2D_columns;
	
	float *dev_arr_b3_2D;
	size_t dev_arr_b3_2D_pitch;
	int dev_arr_b3_2D_rows;
	int dev_arr_b3_2D_columns;
	
	float *dev_median_layer1_reuslt;
	size_t dev_median_layer1_reuslt_pitch;
	int dev_median_layer1_reuslt_rows;
	int dev_median_layer1_reuslt_columns;
	
	float *dev_median_layer2_reuslt;
	size_t dev_median_layer2_reuslt_pitch;
	int dev_median_layer2_reuslt_rows;
	int dev_median_layer2_reuslt_columns;
	
	float *dev_final_reuslt;
	size_t dev_final_reuslt_pitch;
	int dev_final_reuslt_rows;
	int dev_final_reuslt_columns;
};

__global__
void gpu_location_kernel(GPULocationKernelParameter *dev_kernelParameter)
{
	GPULocationKernelParameter dev_struct_kernelParameter = *dev_kernelParameter;
	...
}

补充:

1.参考的cuda-gdb调试文章
CUDA-GDB 使用
CUDA C编程(三十八)CUDA调试
GDB调试操作
GDB调试

2.感悟
这个问题我思考了一下午近5h,外加困扰一晚上。现在回想这个问题的原因在报出时就已经给出了,然而我却浑然不知。所以我还是应该认认真真地去看执行过程报出的错误,里面每一个单词,每一句话都有深意。

本地生成无限量的AI图像和视频——无需网络,无限制,本地人工智能图像和视频生成的实用指南 我们将使用ComfyUI,这是一个功能强大的基于节点的 AI 图像和视频生成可视化界面。如果您是 ComfyUI 的新手,请不要担心。ComfyUI是什么?ComfyUI 是一款可视化工具,可让您在自己的计算机上生成 AI 图像和视频。您无需一次性理解所有内容。在本指南中,我们将从现成的工作流程入手,逐步帮助您建立信心。乍一看,内容似乎很庞杂——但本指南将着重于:-简单的工作流程-预构建示例-最少的配置我想向你展示使用这个工具最简单的工作流程。 阅读详情

相关推荐

ICM42670-P嵌入式开发实战:从寄存器配置到姿态解算全解析

本文全面解析ICM42670-P高性能6轴MEMS运动传感器的嵌入式开发实战,涵盖寄存器配置、数据采集滤波、低功耗优化及姿态解算算法。通过详细代码示例和应用案例,帮助开发者快速掌握从硬件对接到姿态跟踪系统的完整开发流程,适用于可穿戴设备和智能家居等低功耗应用场景。

gold的博客 1066

Program terminated with signal SIGKILL,Killed 问题解决方法

最近发现一个奇怪的问题,程序运行一段时间后会被杀死。 通过gdb调试发现程序收到的信号是“Program terminated with signal SIGKILL,Killed”。 百度一番,有说是程序内存占用过多导致的,通过top -p 进程pid的方法进行检测,发现程序内存占用很低,只能是其他原因了。 最后搜到工具audit可以监控程序被kill的原因,执行命令如下。 1.先查看audi...

Rain 1万+

桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...

1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...

weixin_39525355的博客 1877

Program terminated with signal SIGKILL,Killed

车载后视镜机器,Liinux + qtUI形式,前后双路,前一天晚上开机用gdb run DvrUI,第二天早上回来一看,机器绿屏卡死了,录像预览停止刷新了,sd录像也停止了。点击无任何反应。 看gdb打印显示“Program terminated with signal SIGKILL,Killed” ,用bt答应stack调用显示“No statck”。很怪异不知道怎么死的。 想来...

weixin_33982670的博客 2248

BurpSuite实战:5分钟搞定Pikachu靶场表单爆破(附最新字典配置技巧)

本文通过Pikachu靶场实战,详细演示了如何使用BurpSuite的Intruder模块对Web登录表单进行暴力破解。从代理配置、请求捕获、集束炸弹模式设置,到载荷配置与结果分析,提供了完整的操作流程。文中还分享了2024年有效的字典获取与优化技巧,帮助安全测试人员快速定位弱口令漏洞。

weixin_29327977的博客 600

SpringCloudGateway网关高频20个面试题整理

Spring Cloud Gateway 是基于 Spring 5、Project Reactor 和 Spring Boot 2 构建的 API 网关,提供动态路由、监控、弹性、安全等核心功能。Spring Cloud Gateway 是 Spring Cloud 生态中的 API 网关,用于微服务架构中的请求路由、负载均衡、限流、鉴权等。实现@Component@Override// 逻辑处理。

u012024132的专栏 1114

“Program terminated with signal SIGKILL,Killed”

最近遇到一个问题,情况是IPC通信,通过一个程序调用另一个程序,但每次都执行了一般程序就挂掉了,用gdb跟进去发现,报错内容为: “Program terminated with signal SIGKILL,Killed” 程序被杀掉了,不知道如何确定何种原因,哪个程序把我的进程杀掉,看到下面这篇文章,才准确定位问题所在,贴出来学习分享。 转载请注明出处 http://forever.bl...

lyl001234的专栏 3523

【论文精度】生成式预训练模型——BART(Bidirectional and Auto-Regressive Transformers)

​ BART是一个预训练的seq2seq的去噪自编码(denoising autoencoder)模型,BART以下方式进行训练①用任意的噪声函数(noising function)去破坏文本;②学习一个模型来重建原始文本。它使用一个标准的基于transformer的神经机器翻译架构,可以看作是BERT(双向编码器)、GPT(left-to-right解码器)以及其他预训练方案的推广。

weixin_45828972的博客 7447

【Jenkins】 Nodejs相关问题

1 速度慢 1、输入:npm get registry(显示当前安装默认的镜像地址) 2、修改默认镜像地址为淘宝地址:npm config set registry http://registry.npm.taobao.org 再次npm get registry下就会看到默认地址已更改为淘宝镜像地址,重新npm install就会比以前快速许多。 ...

我是Superman丶的博客 1975

高德地图 搜索和点击定位

高德地图vue

weixin_45474673的博客 1943

Python编程基础05:运算符与表达式

文章目录一、算术运算符1、分类说明表2、注意事项3、案例演示任务1、计算成绩差与平均成绩课堂练习:编程处理带余除法。任务2、打印购物小票 运算符就是专门用于告诉程序执行特定运算或逻辑操作的符号。表达式是指由常量、变量和运算符组成的一个算式。编写程序对数据进行处理,其实处理就是对数据实施各种各样的运算,搞懂运算符与表达式是我们编写程序的基础性工作,本次讲课笔记通过案例讲解各种运算符的用法以及正确书写Python表达式的注意事项。 一、算术运算符 Python中的算术运算符就是用来处理四则运算的符号,也是

howard2005的专栏 3119

解决 Command failed with signal “SIGILL“. 错误

使用Vue CLI创建的项目运行时报以下错误

weixin_52054631的博客 8440

2026华为OD机考新系统真题 + 双机位C卷 + 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸!

算法大师! 45万+

Program terminated with signal SIGKILL, Killed. The program no longer exists. 程序起不来

改了一行代码又起来了,总之莫名其妙的问题。 后面查看系统日志,知道了是操作系统杀死的,将虚拟机的内存由原来的2g变为3g后ok。

pengda63的博客 1554

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

系统什么时候发送SIGKILL信号

when does the system send SIGKLILL 我的程序有时候会随机收到SIGKILL信号,gdb会提示: Program terminated with signal SIGKILL, Killed. The program no longer exists. (gdb) 并且我找不到任何原因?什么时候系统会发送SIGKILL信号呢?我这里没有其他程序发送这个

JoJo-追求卓越~ 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)...

新版本的录制程序终于快完工了,在添加了一个新特性“报警录制”后,就开始测试了。 一开始就不顺利:程序正常运行一段时间后就会崩溃,由于程序添加了守护进程,在崩溃后会自动重启。 因此测试得到的结果就是:程序运行一段时间后就自动重启,并不断持续;有时几个小时重启一次,有时甚至每分钟都重启。 废话少说,开始定位问题: 1.去掉自动重启功能,在gdb下运行,20多分钟后就崩溃了:   2011-10-26 ...

weixin_33965305的博客 1435

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Xshell打包vite项目报错error Command failed with signal “SIGKILL“.

问题:安装过程出现服务器断开连接后node版本又回退到14低版本,导致一直打包失败。解决问题:最开始服务器安装node版本为14版本,升级到16.20.2版本即可。解决:nvm alias default v16.20.2。分析问题:初步判断,服务器上安装的node版本不合适。

follow12138的博客 865

vite&vue3创建项目后编译或修改文件报错

# # Fatal error in , line 0 # Check failed: U_SUCCESS(status). # # # error Command failed with signal "SIGILL". info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. 解决方法: 检查ndoe版本,尝试切换到当前稳定版本 如:node 为12.0.0而 package.json 为

qq_35052138的博客 1439

查看进程被哪个进程杀掉(九十五)

1.demo.c #include <unistd.h> #include <sys/syscall.h> #include <stdio.h> int main(){ pid_t tid; while(1){ sleep(1); tid = syscall(SYS_gettid); printf("tid(hex) = %#x, tid(dex) = %d\n",tid,tid); } } # gcc demo.c # ps aux | gre.

Android系统攻城狮 1757

Program terminated with signal SIGQUIT, Quit.

当程序接收到SIGQUIT信号时,它会终止执行并生成核心转储文件,该文件可以用于后续调试。SIGQUIT信号通常用于应对程序的异常情况,比如程序出现严重错误或不响应时,用户可以发送SIGQUIT信号来终止程序并获取有关程序状态的核心转储信息。SIGINT信号是用于请求程序终止的中断信号,而SIGQUIT信号通常用于在程序出现问题时获取核心转储信息。信号SIGQUIT是由用户发送的信号,通常用于请求程序终止并生成核心转储(core dump)。

天涯路的专栏 841

关于SIGSEGV错误及处理方法

关于SIGSEGV错误及处理方法    

brace的专栏 15万+

解决ERROR: Command errored out with exit status 1

"ERROR: Command errored out with exit status 1"是一个常见的Python错误信息,通常表示在执行某个命令时出现了问题,并导致命令无法成功完成。退出状态值为1是指在执行一个程序或命令时,该程序或命令在正常情况下会返回一个退出状态值,而退出状态值为1表示程序或命令执行失败或出现错误。然而,当程序或命令遇到错误或异常情况时,它可能会返回非零的退出状态值,其中退出状态值为1较为常见。通过这个示例代码,我们可以逐个安装软件包,并在遇到错误时停止安装,同时输出错误信息。

牛肉胡辣汤 2万+

Vscode报错:clang: error: linker command failed with exit code 1

Vscode报错:clang: error: linker command failed with exit code 1

guhong1995的博客 4993

段错误

3。编程中通常碰到段错误的地方有哪些? 为了进行下面的实验,我们需要准备两个工具,一个是gcc,一个是gdb 我是在ubuntu下做的实验,安装这两个东西是比较简单的 Quote: sudo apt-get install gcc-4.0 libc6-dev sudo apt-get install gdb 好了,开始进入我们的实验,我们粗略的分一下类

iefswang的专栏 3102

CUDA code=700(cudaErrorIllegalAddress) 报错与排查方法

最近笔者在调试自己写的 CUDA 代码时, 遇到了的报错, 在此记录一下排查和解决方法.

LostUnravel的博客 8562
上一篇: string转float显示位数有误;cout 的 precision 成员函数
下一篇: 程序代码局部变量定义超过栈空间大小限制
returningprodigal
博客等级 码龄12年 53粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值