Valgrind 和 CUDA:报告的泄漏是真的吗?

2024-03-10

我的应用程序中有一个非常简单的 CUDA 组件。 Valgrind 报告了大量泄漏和仍然可达的情况,所有这些都与 cudaMalloc 调用有关。

这些泄露是真的吗?我打电话cudaFree对于每一个cudaMalloc。这是 valgrind 无法解释 GPU 内存分配吗?如果这些泄漏不是真实的,我可以抑制它们并让 valgrind 只分析应用程序的非 GPU 部分吗?

extern "C"
unsigned int *gethash(int nodec, char *h_nodev, int len) {
    unsigned int *h_out = (unsigned int *)malloc(sizeof(unsigned int) * nodec);

    char *d_in;
    unsigned int *d_out;

    cudaMalloc((void**) &d_in, sizeof(char) * len * nodec);
    cudaMalloc((void**) &d_out, sizeof(unsigned int) * nodec);

    cudaMemcpy(d_in, h_nodev, sizeof(char) * len * nodec, cudaMemcpyHostToDevice);

    int blocks = 1 + nodec / 512;


    cube<<<blocks, 512>>>(d_out, d_in, nodec, len);

    cudaMemcpy(h_out, d_out, sizeof(unsigned int) * nodec, cudaMemcpyDeviceToHost);

    cudaFree(d_in);
    cudaFree(d_out);
    return h_out;

}

Valgrind 输出的最后一位:

...
==5727== 5,468 (5,020 direct, 448 indirect) bytes in 1 blocks are definitely lost in loss record 506 of 523
==5727==    at 0x402B965: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==5727==    by 0x4843910: ??? (in /usr/lib/nvidia-319-updates/libcuda.so.319.60)
==5727==    by 0x48403E9: ??? (in /usr/lib/nvidia-319-updates/libcuda.so.319.60)
==5727==    by 0x498B32D: ??? (in /usr/lib/nvidia-319-updates/libcuda.so.319.60)
==5727==    by 0x494A6E4: ??? (in /usr/lib/nvidia-319-updates/libcuda.so.319.60)
==5727==    by 0x4849534: ??? (in /usr/lib/nvidia-319-updates/libcuda.so.319.60)
==5727==    by 0x48191DD: cuInit (in /usr/lib/nvidia-319-updates/libcuda.so.319.60)
==5727==    by 0x406B4D6: ??? (in /usr/lib/i386-linux-gnu/libcudart.so.5.0.35)
==5727==    by 0x406B61F: ??? (in /usr/lib/i386-linux-gnu/libcudart.so.5.0.35)
==5727==    by 0x408695D: cudaMalloc (in /usr/lib/i386-linux-gnu/libcudart.so.5.0.35)
==5727==    by 0x804A006: gethash (hashkernel.cu:36)
==5727==    by 0x804905F: chkisomorphs (bdd.c:326)
==5727== 
==5727== LEAK SUMMARY:
==5727==    definitely lost: 10,240 bytes in 6 blocks
==5727==    indirectly lost: 1,505 bytes in 54 blocks
==5727==      possibly lost: 7,972 bytes in 104 blocks
==5727==    still reachable: 626,997 bytes in 1,201 blocks
==5727==         suppressed: 0 bytes in 0 blocks

valgrind 报告大量 CUDA 内容的误报是一个已知问题。避免看到它的最好方法是使用 valgrind 抑制,您可以在此处阅读所有相关内容:http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress

如果您想快速开始了解更接近您的具体问题的内容,Nvidia 开发论坛上有一篇有趣的帖子。它有一个指向示例抑制规则文件的链接。https://devtalk.nvidia.com/default/topic/404607/valgrind-3-4-suppressions-a-little-howto/ https://devtalk.nvidia.com/default/topic/404607/valgrind-3-4-suppressions-a-little-howto/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Valgrind 和 CUDA:报告的泄漏是真的吗? 的相关文章

  • C#:模拟内存泄漏

    我想用c 编写以下代码 a 模拟内存泄漏的小型控制台应用程序 b 小型控制台应用程序 它将调用上述应用程序并立即释放它 模拟管理内存泄漏问题 换句话说 应用程序 b 将不断调用并释放应用程序 a 以模拟如何遏制 叛逆 内存泄漏应用程序 而不
  • 委托会导致内存泄漏吗?

    委托会导致内存泄漏吗 我的意思是 例如如果一个班级A包含一个ADelegate后者指向BMethod of Bclass 这是否可以阻止 GC 收集 A 类或 B 类 如果是这样 我们如何 释放 代表 设置ADeletate Nothing
  • 设置最大 CUDA 资源

    我想知道是否可以设置 CUDA 应用程序的最大 GPU 资源 例如 如果我有一个 4GB GPU 但希望给定的应用程序只能访问 2GB 如果它尝试分配更多 就会失败 理想情况下 这可以在进程级别或 CUDA 上下文级别上设置 不 目前没有允
  • Yocto for Nvidia Jetson 由于 GCC 7 而失败 - 无法计算目标文件的后缀

    我正在尝试将 Yocto 与 meta tegra 一起使用 https github com madisongh meta tegra https github com madisongh meta tegra 为 Nvidia Jets
  • iPhone应用程序NSNumber内存泄漏

    我遇到了内存泄漏 但我不知道它从哪里来以及如何修复它 在某些时候 我计算两个位置之间的距离 double calc self getDistance location to otherLocation NSNumber distance N
  • Cuda 6.5 找不到 - libGLU。 (在 ubuntu 14.04 64 位上)

    我已经在我的ubuntu上安装了cuda 6 5 我的显卡是 GTX titan 当我想要制作 cuda 样本之一时 模拟 粒子 我收到这条消息 gt gt gt WARNING libGLU so not found refer to C
  • cuda中有模板化的数学函数吗? [复制]

    这个问题在这里已经有答案了 我一直在寻找 cuda 中的模板化数学函数 但似乎找不到 在普通的 C 中 如果我调用std sqrt它是模板化的 并且将根据参数是浮点数还是双精度数执行不同的版本 我想要这样的 CUDA 设备代码 我的内核将真
  • 如何在cmake中添加cuda源代码的定义

    我使用的是 Visual Studio 2013 Windows 10 CMake 3 5 1 一切都可以使用标准 C 正确编译 例如 CMakeLists txt project Test add definitions D WINDOW
  • RenderTargetBitmap 内存泄漏

    我正在尝试使用 RenderTargetBitmap 渲染图像 每次我从 RenderTargetBitmap 创建一个实例来渲染图像时 内存都会增加 完成后内存永远不会释放 这是代码 RenderTargetBitmap rtb new
  • NodeJS 内存增长 - (系统)内存泄漏?

    我在我们的生活环境中遇到了奇怪的内存泄漏 其中 system 堆中的对象不断增长 堆转储 Here is a memory dump where the memory usage grew to 800MB 请注意 该内存保留在Genera
  • NET/COM 互操作的 ref string[] 内存泄漏

    我最近发现一个非常奇怪的 对我来说 内存泄漏IEnumString http msdn microsoft com en us library ms693735 28VS 85 29 aspxC 使用的 COM 对象 具体来说 使用已包含先
  • CUDA - 将 CPU 变量传输到 GPU __constant__ 变量

    与 CUDA 的任何事情一样 最基本的事情有时也是最难的 所以 我只想将变量从 CPU 复制到 GPUconstant变量 我很难过 这就是我所拥有的 constant int contadorlinhasx d int main int
  • 如何跟踪数据库连接泄漏

    我们有一个应用程序似乎存在连接泄漏 SQL Server 表示已达到最大池大小 我独自一人在我的开发机器上 显然 只需导航应用程序 我就会触发此错误 SQL Server 活动监视器显示大量正在使用我的数据库的进程 我想查找哪些文件打开连接
  • 设置 MetaspaceSize 的指南 - java 8

    64 位服务器的 MetaspaceSize 默认值是多少 我在官方文档中没有找到它 我观察到 在服务器 JVM 进程中 GC 频率有时会变高并持续增长 如果我重新启动服务几次 它就会恢复稳定 我认为这是由于 JRE 升级造成的 JVM 堆
  • 如何以编程方式找出我的 PermGen 空间使用情况?

    我正在尝试诊断java lang OutOfMemoryError PermGen Space在 Sun 的 Hotspot JVM 上运行时出现错误 并且想知道我的程序在不同时刻使用了多少 PermGen 空间 有没有办法以编程方式找出这
  • Delphi 5 的哈希表实现 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道 Delphi 5 的良好且免费的哈希表实现吗 我需要在哈希表中组织大量数据 并且我有点担心在网
  • 将 nvidia 运行时添加到 docker 运行时

    我正在运行虚拟机GCP配备特斯拉 GPU 并尝试部署一个PyTorch基于应用程序使用 GPU 加速 我想让 docker 使用这个 GPU 可以从容器访问它 我设法在主机上安装了所有驱动程序 并且该应用程序在那里运行良好 但是当我尝试在
  • DOM 解析器 Chrome 扩展内存泄漏

    问题 我开发了一个扩展程序 可以拦截 Web 请求 获取 Web 请求来源的 HTML 并对其进行处理 我使用 DOMParser 来解析 HTML 并且意识到 DOMParser 正在导致大量内存泄漏问题 最终导致 chrome 扩展崩溃
  • 如何彻底删除 Perl 中的包?

    如何在 Perl 中彻底删除一个包 这不仅意味着包变量 还意味着 Perl 更新以处理继承更改和其他事情的任何魔术表 这个简单的测试 use warnings use strict use Test LeakTrace use Symbol
  • 这是内存泄漏还是误报?

    这是我的代码 import java io BufferedReader import java io FileNotFoundException import java io FileReader import java util Sca

随机推荐

  • 处理尝试破解网站的最佳方法

    一点背景 我为一个非营利组织运营该网站 在发现死链接后 我在网站上运行了链接检查器 并发现了更多链接 因此 我实现了一个自定义 404 页面来记录所有失败的链接 这使我能够修复损坏的链接 并提醒链接到我们的其他人他们的链接已损坏 它很快就得
  • R 矩阵/data.frame索引选择真的很慢

    我正在选择 data frame 的子集g raw 像这样 g raw lt read table gfile sep header F row names 1 snps intersect row names na omit csnp r
  • 与 Julia 实时绘图

    我正在尝试绘制一个与 Julia 一起实时演化的函数 为此 当我尝试完全应用给定的示例时 我发现 GR 包可以在 Julia 中使用here https pgi jcns fz juelich de pub doc anim html im
  • 如果我需要自定义 getter/setter,我可以省略字段创建吗?

    我可以写出如此漂亮简单的代码 public int Delta get private set 现在我只想添加一个电话OnPropertyChanged Delta 这是我知道如何做到这一点的唯一方法 public int Delta ge
  • 并排绘制 gList

    我有 2 个 gList 对象 网格 当我这样做时 它们可以很好地绘制 grid draw plot1 grid draw plot2 但我希望这些在 pdf 中并排显示 就像是 pdf test pdf par mfrow c 1 2 p
  • 如何更改列表视图的文本大小

    我正在使用 List Activity 从 SQLITE 检索数据 但我无法设置列表视图的字体大小 请帮我 public class CartList extends ListActivity private ArrayList
  • PDF Box 由于其中包含 JBIG2 图像而生成空白图像

    首先让我向您介绍一下我的项目 我有一个 pdf 文件 需要将其转换为图像 一页一张图像 PDFBoxAPI 并将所有这些图像写入新的 pdf 中PDFBoxAPI 本身 基本上 将 pdf 转换为 pdf 我们称之为 PDF 转码 对于某些
  • Qt QImage 到 QPixmap 转换丢失 UI 的颜色信息

    我正在尝试更新主 Qt UI 中 QLabel 上的 QPixmap 调用以下插槽来使用 newImage 变量 QImage 执行此操作 因为它来自不同的线程 QImage 使用 ConvertFromImage 转换为 someImag
  • 如何将不带空格的文本拆分为单词列表

    Input tableapplechairtablecupboard 很多话 将此类文本拆分为单词列表并获得的有效算法是什么 Output table apple chair table cupboard cup board 首先想到的是遍
  • 如何使用 cleanup 属性初始化变量?

    有没有办法用以下方式初始化变量cleanup编译器属性 或者我必须在声明变量后设置值吗 我试过把cleanup前面的属性 malloc 10 就像下面和后面的例子一样 malloc 10 但都不能编译 include
  • mysql通过有来计数组

    我有这张表 Movies ID Genre 一部电影可以有多种类型 因此 ID 并不特定于某个类型 而是多对多的关系 我想要一个查询来查找恰好有 4 种类型的电影总数 我当前的查询是 SELECT COUNT FROM Movies GRO
  • 使用 Plugman 创建 Ionic 插件

    我是 Ionic 和 Cordova 的新手 我需要使用 Cordova 创建一个 ionic 插件并将其集成到示例 ionic 应用程序中 我遵循的步骤是 使用plugman创建一个简单的离子插件 plugman create name
  • WPF - 如何在父级鼠标悬停时更改子级样式

    我有一个StackPanel 1 与另一个StackPanel 2 里面 SP 2 应隐藏 不透明度 0 直到 SP 1 悬停为止 鼠标悬停应将 SP2 的样式更改为不透明度 100 我尝试在 StackPanel 资源中定义样式 然后使用
  • 标签替换换行符[重复]

    这个问题在这里已经有答案了 我有一个带有文本区域的表单 我想将输入中的换行符更改为段落 使用 p 标签 我正在使用爆炸和内爆来替换 n with p p 但是如果你连续有两个换行符 你最终会得到 p p p p 我试图使用 foreach
  • Asp.net MVC 中的 TimeSpan 和“24:00”解析错误

    我的 Web 应用程序中有一个模式对话框 用户可以在其中输入 00 00 到 24 00 之间的时间范围 范围滑块用于选择该范围 一切都按预期工作 除了每当用户将正确的范围句柄设置为具有值 24 00 时 默认模型绑定器无法解析此值Time
  • 对于不成功的 Try() 方法,输出值应该设置为多少?

    我正在实现 TryParse string s Out object result 方法 如果解析失败 我不想触及 out 参数 因此之前的任何结果都将保持不变 但 VS2k8 不让我这么做 无论如何 我都必须设置 out 对象的值 我应该
  • Spring Boot - Websockets - 如何查看订阅者

    我正在开发一个 websocket 应用程序 我试图让一个 websocket 提供信息 然后输出给端点的订阅者 我已经弄清楚了 但我想知道是否有办法查看订阅了哪些订阅者以及订阅了什么路径 这是我正在处理的代码示例 Autowired pr
  • 图灵机的 C 语言实现

    我正在为形式语言理论课程研究图灵机 教授建议运行以下内容算法 http code zhoubot com archives 52详细查看 TM 背后的逻辑 但不起作用 当尝试编译时告诉我以下错误 C Documents and Settin
  • 在 ASP MVC 3 中创建可下载文本文件时无法访问关闭的流

    我试图提示可下载的文本文件 txt 但出现此错误 无法访问关闭的流 我在这里查看了类似的问题 无法访问关闭的流 https stackoverflow com questions 2331675 cannot access closed s
  • Valgrind 和 CUDA:报告的泄漏是真的吗?

    我的应用程序中有一个非常简单的 CUDA 组件 Valgrind 报告了大量泄漏和仍然可达的情况 所有这些都与 cudaMalloc 调用有关 这些泄露是真的吗 我打电话cudaFree对于每一个cudaMalloc 这是 valgrind