CUDA的内存泄露问题及解决办法

简介: CUDA的内存泄露问题及解决办法

这几天,发现程序运行时,内存不断增加。首先吾确认自己的代码没有内存泄露,因为自己反复排查过多次,并测试过多次。于是跟踪刚加入的一个插件。于是对其内存进行了排查,发现也没有问题。嗯?


这意思就是,插件运行,导致吾这里内存有泄露?于是对各个功能进行了屏蔽,发现CUDA转JPG的代码会导致内存增加。注释之后,内存不增加了。于是不断的尝试,其中有几次错误结论,终于定位到了错误语句:


NPP_CHECK_CUDA(cudaMalloc(&pJpegEncoderTemp, nTempSize));


只要去掉这一句(当然后面的编码不能执行),内存就不会增加。没有释放?赶紧看看析构函数,有cudaFree()。说明了什么?说明了cudaMalloc()有问题。在1920x1280的情况下,nTempSize=38M。可能是这个原因?



有人问,怎么办?首先这个问题我是解决不了的。那么只有一个办法,绕过去。怎么绕?就是使用一个实例,一次初始化,不释放。这样就不会有问题了。



注意:


  • 图像尺寸初始化时,按照最大的来。
  • 如果多个线程访问,建议使用一个数组,每个进程一个编号,访问各自的编码器。
目录
相关文章
|
6月前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
285 4
|
28天前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
2月前
|
存储 并行计算 算法
CUDA统一内存:简化GPU编程的内存管理
在GPU编程中,内存管理是关键挑战之一。NVIDIA CUDA 6.0引入了统一内存,简化了CPU与GPU之间的数据传输。统一内存允许在单个地址空间内分配可被两者访问的内存,自动迁移数据,从而简化内存管理、提高性能并增强代码可扩展性。本文将详细介绍统一内存的工作原理、优势及其使用方法,帮助开发者更高效地开发CUDA应用程序。
|
4月前
|
C++
Vscode 内存过高的解决办法
Vscode 内存过高的解决办法
588 0
|
6月前
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
|
6月前
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,10个定位解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
141 0
|
存储 并行计算 测试技术
【CUDA学习笔记】第五篇:内存以及案例解释(附案例代码下载方式)(二)
【CUDA学习笔记】第五篇:内存以及案例解释(附案例代码下载方式)(二)
173 0
【CUDA学习笔记】第五篇:内存以及案例解释(附案例代码下载方式)(二)
|
并行计算 算法 数据可视化
432.4 FPS 快STDC 2.84倍 | LPS-Net 结合内存、FLOPs、CUDA实现超快语义分割模型(二)
432.4 FPS 快STDC 2.84倍 | LPS-Net 结合内存、FLOPs、CUDA实现超快语义分割模型(二)
119 0
|
机器学习/深度学习 编解码 并行计算
432.4 FPS 快STDC 2.84倍 | LPS-Net 结合内存、FLOPs、CUDA实现超快语义分割模型(一)
432.4 FPS 快STDC 2.84倍 | LPS-Net 结合内存、FLOPs、CUDA实现超快语义分割模型(一)
197 0
|
存储 API C++
dump系列(2)C++程序异常或内存错误,导致闪退的解决办法:分析dump文件
dump系列(2)C++程序异常或内存错误,导致闪退的解决办法:分析dump文件
1792 0