调试一个CUDA核函数过程中发现一个奇怪的问题:
调用某个核函数,程序耗时33秒,并且主要时间是main()函数结束后的33秒;
而注释掉此核函数,程序执行不到1秒。

由此可见,可能是某种栈溢出,导致了程序运行异常。
但是,为什么程序的效果看起来是在main函数结束后还继续卡死这么长时间呢?并且没有任何core文件,很神奇!

====================================================

2019-05-23补充:

1.确实是核函数中有越界,导致程序逻辑执行完成后又卡死了30秒;
2. 解决的办法如下:
    nvcc编译的时候加上  -g -G, 去掉 -O2
    使用 cuda-gdb调试,

b _kennel
         r param
         n
        p var
3. 要注意:break在核函数才能单独调试核函数;break在C函数,是无法单步到核函数的。
4.强制指针类型转换,会被认为是越界:
    uint8_t* start = ...;
    uint32_t pixel_val = *(uint32_t*)(start + x * channels);
5.我在计算核函数的计算时间的时候,总是不准确。
   有效的方法是调用核函数后立即执行:cudaDeviceSynchronize();

转载于:https://www.cnblogs.com/ahfuzhang/p/10894954.html

【记录一个问题】cuda核函数可能存在栈溢出,导致main()函数退出后程序卡死30秒CUDA...相关推荐

  1. 记录由于未关闭加速器就关机而导致的再次启动后DNS配置错误

    记录由于未关闭加速器就关机而导致的再次启动后DNS配置错误 先直接给出解决方案: cmd输入 netsh winsock reset 这段时间在同学的推荐下入坑了鹅鹅鸭(Goose Goose Duc ...

  2. 一个项目中不能同时出现两个main函数

    在写两个短程序的时候想着把两个cpp文件放到同一个项目中比较省空间,然后就出现了下面的问题:main函数已经定义过,然后将项目中的一个含有main函数的cpp文件删除之后再运行,可以运行 原因大概是m ...

  3. 【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Java 类中 , 调用 Groovy 脚本 , 出现如下错误 ; java.io.FileNotFoundException: Y:\002_ ...

  4. c语言 cuda核函数,CUDA核函数与线程配置

    CUDA核函数 在GPU上调用的函数成为CUDA核函数(Kernel function),核函数会被GPU上的多个线程执行.每个线程都会执行核函数里的代码,当然由于线程编号的不同,执行的代码路径可能会 ...

  5. 【C语言进阶深度学习记录】二十九 main函数与命令行参数

    文章目录 1 main函数的返回值 2 main函数的参数 2.1 main函数的参数的代码案例分析 3 main函数不一定是程序中第一个执行的函数 4 总结 1 main函数的返回值 main函数是 ...

  6. c语言源程序必含有,一个c源程序必须包含一个main函数吗

    是的,必须包含一个main函数.main函数是程序默认的入口,程序的执行是从main函数开始:如果没有main函数,则编译器不知道程序从哪里开始执行,所以一个c源程序有且仅有一个主函数(main函数) ...

  7. 【记录一个问题】linux+opencv+cuvid解码1080P视频,当使用CUDA核函数的时候,必然崩溃...

    崩溃的信息如下: 1 OpenCV(4.1.0-dev) Error: Gpu API call (invalid configuration argument) in videoDecPostPro ...

  8. 结构体在cuda核函数里面不能用吗_求职招聘 | 面试机器学习职位,这些知识点你都会了吗?...

    『运筹OR帷幄』转载 求职招聘栏目 来自于运筹帷幄的招聘板块.一方面,我们将为大家精心挑选和整理全球与运筹学.数据科学.机器学习.人工智能等领域相关的招聘职位.另一方面,我们也将翻译和转载国内外在该领 ...

  9. 详解CUDA核函数及运行时参数

    详解CUDA核函数及运行时参数 核函数是GPU每个thread上运行的程序.必须通过__gloabl__函数类型限定符定义.形式如下: __global__ void kernel(param lis ...

最新文章

  1. Ubuntu .deb包安装方法
  2. Cannot call sendError() after the response has been committed
  3. ug中文字大小设置_UG与AutoCAD的数据转换,原来还有这么简单的方法
  4. python matplotlib数据可视化_Python - matplotlib 数据可视化
  5. 写个买卖小游戏,第1天(昨天)
  6. 《转》常用的正则表达式
  7. 功夫小子实践开发-游戏设置功能的实现
  8. 吉林大学计算机学院换届,CCF吉林大学学生分会举行换届选举会议-中国计算机学会...
  9. 压缩文件苹果手机怎么解压「iphone技巧」
  10. flutter大小单位:dp
  11. 8086微处理器介绍
  12. 借一篇论文了解重要性采样
  13. Ueditor编辑器如何改变上传图片大小限制
  14. aspack的简单脱壳,望大牛勿喷。
  15. python爬虫总结,看这篇就够了
  16. 用Excel制作不一样的分割图表
  17. 信奥赛一本通 C++题解 2041【例5.9】新矩阵
  18. 客户关系管理:CRM战略
  19. 1.3 项目经理的知识和技能
  20. python心率检测

热门文章

  1. Activemq的连接方式
  2. 4 信道编码之循环码
  3. CentOS7编译安装MySQL5.7之后安装mysql-devel出错解决方案
  4. 【zabbix学习笔记之二】部署zabbix-server端
  5. Placement new
  6. MVC验证05-自定义验证规则、验证2个属性值不等
  7. initrd映像文档的作用和制作
  8. 迁移 Nexus 软件仓库拾遗
  9. 归并排序的 Go 语言实现和优化
  10. (转)maven打包时跳过测试