草庐IT

cuda-gdb

全部标签

c++ - gdb - 防止在捕获/重新抛出情况下丢失回溯

是否可以在不丢失gdb中的回溯的情况下重新抛出异常?或者在gdb中是否有一种方法可以“备份”几行并从那里回溯?我使用的是最新的GDB7.7.1。我有时发现自己遇到这样的情况,需要从最初抛出的异常开始回溯,需要注释掉try/catch部分,重新​​编译,然后在gdb中重新运行。try{someFuncThatCanThrowException();}catch(exceptionType&exception){if(@CAN_RECOVER@){...}else{throw;}}----或者----try{someFuncThatCanThrowException();}catch(ex

c++ - 为三角矩阵计算优化 CUDA 内核的执行

我正在开发我的第一个Cuda应用程序,我有一个“吞吐量低于预期”的内核,这似乎是目前最大的瓶颈。内核的任务是计算一个N×N大小的矩阵(DD),其中包含数据矩阵上所有元素之间的平方距离。数据矩阵(Y)的大小为NxD(以支持多维数据)并存储为行优先。来源:__global__voidcomputeSquaredEuclideanDistance(constfloat*__restrict__Y,float*__restrict__DD,constintN,constintD){intindex=blockIdx.x*blockDim.x+threadIdx.x;intstride=bloc

【Linux】gdb调试与make/makefile工具

目录导读1.make/Makefile1.1 引入1.2概念1.3语法规则1.4 示例2. Linux调试器-gdb2.1引入2.2概念2.3使用导读我们在上次讲了Linux编辑器gcc\g++的使用,今天我们就来进一步的学习如何调试,以及makefile这个强大的工具。1.make/Makefile1.1 引入会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作1.2概念在

c++ - 使用 gdb 处理信号

我正在为Ubuntu10.04调试一个C++应用程序,它有时会收到一个SIGKILL信号。我想捕获信号并阻止它终止执行,只是为了看看我是否能在那个精确时刻获得应用状态的一些有用信息。阅读gdbdocumentation我找到了handle命令,所以我尝试将它应用于SIGKILL信号:(gdb)handleSIGKILLstopnopassSignalStopPrintPasstoprogramDescriptionSIGKILLYesYesNoKilled因此,据我正确理解:stopGDBshouldstopyourprogramwhenthissignalhappens.Thisim

c++ - CUDA 初学者 - 在继续之前强制等待线程完成

我正在学习CUDA,目前我有类似的东西。__device__voiditerate_temperatures(intfieldSize,Atom*atoms){inttemperature=threadIdx.x+blockDim.x*blockIdx.x;nAtoms=pow(fieldSize,DIMENSION);iterate_atoms>>(atoms,nAtoms,temperature);}问题是,每个温度都需要最后一个的结果。我怎样才能强制每个block等待最后一个。谢谢! 最佳答案 只要调用__syncthread

c++ - 将 CUDA 添加到 ROS 包

我想在ros包中使用cuda。有人给我一个简单的例子吗?我试图用cuda函数构建一个静态库并将这个库添加到我的包中,但我总是得到一个链接错误:Undefinedreferencecuda...我已经构建了一个可执行文件而不是库并且它可以工作。请帮忙! 最佳答案 我自己找到了解决办法:CMakeLists.txt:cmake_minimum_required(VERSION2.8.3)PROJECT(beginner_tutorials)FIND_PACKAGE(CUDAREQUIRED)find_package(catkinREQU

c++ - gdb,多个位置的断点

我在其中一个.h文件中设置了一个断点,该文件实现了一个小方法,(gdb)breakSmallVector.h:141这是我从gdb得到的:Breakpoint5at0x416312:SmallVector.h:141.(38locations)为什么断点设置在38个位置而不是一个位置?我对调试和C++都不是新手,但不幸的是,我从来没有像现在(编译器)那样处理过任何复杂的东西。所以我以前从未遇到过这样的事情。感谢任何帮助。 最佳答案 有几种方法可以实现这一点。如您所见,一种主要方式是内联函数。一些编译器(如gcc)将发出有关它已完成的

c++ - gdb 显示不正确的 double 值

我的程序有一个奇怪的行为,其中double失去了精度。我的cout显示了正确的值,但行为仍然出乎意料。因此我调试并发现甚至gdb显示意外值。以下只是简化的场景:doublelength=2.11;//gdbshows2.10herebutprints2.11correctlyusingcoutattheendcout在无法调试且唯一的选择是使用尽可能多的打印件的生产场景中,通常很难发现此类问题。有什么建议可以避免这个问题吗? 最佳答案 假设IEEE754doublefloat,最接近2.11的double略小2.1099999999

【抄作业】ubuntu完全卸载CUDA,彻底卸载cuda,卸载不同版本的cuda,cuda不同版本的卸载方法

卸载的实现方法如何正确、完全的卸载cuda呢?其实cuda安装时就已经准备好了卸载的接口,卸载程序在/usr/local/cuda-xx.x/bin下,需要注意的是cuda10.0及之前的版本卸载程序名为uninstall_cuda_xx.x.pl,而cuda10.1及之后的版本卸载程序名为cuda-uninstaller。找到之后运行卸载程序即可,这里的xx.x表示自己的cuda版本。 在命令行中卸载注意把下边的xx.x替换为自己的cuda版本。cuda10.0及以下的卸载:cd/usr/local/cuda-xx.x/bin/sudo./uninstall_cuda_xx.x.plsudo

Ubuntu22.04/20.04双系统nvidia驱动和CUDA和pytorch安装配置yolov8深度学习环境

Ubuntu22.04/20.04双系统和CUDA安装配置yolov8深度学习环境写在前面Ubuntu22.04/20.04安装首先制备系统烧录U盘其次划分空间给ubuntu开始装硬盘NVIDIA驱动安装方法一方法二方法来自CSDN博主「huiyoooo」的原创文章,转载请附上原文出处链接及本声明。一、英伟达官网下载驱动二、更新软件列表和安装必要软件、依赖三、禁用默认驱动四、进入tty模式五、安装驱动六、返回图形界面安装CUDA环境配置cudnn安装anaconda安装写在前面首先作为小白你肯定觉得痕奇怪,也不知道这些东西干啥的奇奇怪怪的安装一大堆。其实简单理解就是我们需要一个linux系统环