| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> CUDA编程_Segmenation fault (core dumped) 错误问题以及解决 -> 正文阅读 |
|
[Python知识库]CUDA编程_Segmenation fault (core dumped) 错误问题以及解决 |
摘要:????????本文主要介绍笔者在参加CUDA ON ARM Platform夏令营第二天课程中遇到问题以及其解决方法,本文同时还会以图文的方式介绍一点linux平台下CUDA编程时的错误调试方法。 ? ? ? ? 遇到的问题:Segmenation fault (core dumped)? 图1 报错内容 错误原因:使用“cudaMalloc”函数申请的数组访问越界 调试主要过程: ????????nvcc -g -G -o mul XXX.cu ????????cuda-gdb ./mul ????????run 接下来我会以图文的形式分享我调试的具体过程,遇到的问题以及解决办法。 遇到的问题及调试过程我们今天的任务是使用gpu计算矩阵乘法,同时把gpu计算得到的矩阵结果与cpu计算的到的矩阵结果进行对比,如果gpu和cpu的运算结果相同,则输出“pass!!!”以证明我们的程序没有问题。 我写完程序,编译之后就遇到 图1 所示的问题:Segmenation fault (core dumped) 百度这个错误之后有人说是除零的问题,但是我这是乘法,显然不存在这个问题。 由于程序量相对多,并且我在linux的命令行环境下,不容易人工找出这种运行时错误的发生位置。(如果是windows下的VisualStudio环境可能会容易调试一点) 这个时候社区的老师很热心的教了我在linux下CUDA程序的Debug方法(非常感谢!),下面主要介绍这部分内容。 ? 图2 执行nvcc -g -G -o mul XXX.cu ? ? ? ? 执行“nvcc -g -G -o mul matrix_mul.cu” 之后得到了“mul”文件(应该是保存有CUDA运行信息的文件),其中 -g -G 代表为CPU和GPU代码部分进行调试编译。 ???????? 图3 执行cuda-gdb ./mul 和 run ? ? ? ? 运行 cuda-gdb ./mul 和 run之后,按理说应该可以看到具体问题发生在哪一行了,但是我只看到了一个错误代码“CUDA_ERROR...”,并没有看到发生问题的具体代码行号。 ? ? ? ? 请教老师后得知这是因为我们使用的Nvidia Jetson nano开发板上被设置了权限,需要sudo才能看到。 图4 退出调试状态方法:Ctrl + d ? ? ? ? 这边使用Ctrl + d退出调试状态(不是 Ctrl + c) 图 5 sudo运行cuda-gdb失败 ? ? ? ? 第一次使用sudo 运行 cuda-gdb失败,原因是cuda-gdb命令的位置没有被添加到环境变量,这里调用需要用完整路径。 图6 使用whereis 命令查找 cuda-gdb的完整路径 ?? ?图7 使用完整路径运行 ?图8 发现具体的问题行数 ????????使用完整路径运行之后的到了具体的错误发生位置,这里需要说明的是错误可能不是正好就在提示的那一行,这时请向上方寻找错误位置。 最后:? ??图9 发现了低级错误 ? ? ? ? ?顺图索骥,我们在88行发现了一个低级错误。 ????????我把遍历遍历写错了位置,导致变量 j 停不下来,访问越界。 ? ? ? ? 注:也许是变量 j 访问的数组使用“cudaMalloc”函数分配空间才导致了本文最开头的错误。 ???????? 图10 修改错误之后成功运行? ? ? ? ? 修改这个错误之后成功运行! ?总结:? ? ? ? 我认为在命令行环境中编写关于CUDA的程序时,如果遇到了这种运行时错误,不使用专用的调试工具,直接人眼在大量的代码中寻找错误是很不可取的(我这个案例中其实代码量不多,但肉眼debug也很糟心)。 ? ? ? ? 因此我把我的这段经历写成文档,与大家共享,希望可以对大家有所帮助! ? ? ? ? 由于是第一次写这类文档,肯定存在着不少错误,如果大家发现了欢迎联系我勘正。 ? ? ? ? 邮箱:duoyixian1996@163.com ?致谢:? ? ? ? 最后,请让我对本次活动中的Nvidia社区和GPU Solutions社区的老师(排序不分先后!)表示衷心的感谢,是你们认真细心的解答,让我们有了提升,也让经验(知识)以更高的效率分享! ? ? ? ? 祝各位:工作开心,生活健康! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:46:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |