GPU显存释放】的更多相关文章

我们在使用tensorflow 的时候, 有时候会在控制台终止掉正在运行的程序,但是有时候程序已经结束了,nvidia-smi也看到没有程序了,但是GPU的内存并没有释放,那么怎么解决该问题呢? 首先执行下面的命令: fuser -v /dev/nvidia* #查找占用GPU资源的PID 因为我们只有一块显卡,所以显示如下图所示:  可以看到我们的nvidia0上还有一个python 2.7的PID 然后我们执行: kill -9 pid 然后再执行nvidia-smi就可以看到内存已经被释放…
一.当程序没有运行,但GPU仍被占用, 可通过nvidia-smi查看,被占用的pid是什么 或通过sudo fuser -v /dev/nvidia* #查找占用GPU资源的PID 然后采用kill -9 (PID)来杀掉运行的进程…
笔者在ubuntu上跑Tensorflow的程序的时候,中途使用了Win+C键结束了程序的进行,但是GPU的显存却显示没有释放,一直处于被占用状态. 使用命令 nvidia-smi 显示如下 两个GPU程序都在执行中,实际上GPU:0已经被笔者停止了,但是GPU没有释放,进程还在继续,所以只有采用暴力手段了,将进程手动关闭掉,进程编号如图中红线部分,由于笔者在两个GPU跑的程序一样,很难从程序名称上找到自己,却可以从GPU:num上找到自己的PID. 关闭命令如下: sudo kill -9 P…
如何解决python进程被kill掉后GPU显存不释放的问题 1 重新开一个shell,然后输入: ps aux|grep user_name|grep python.所有该用户下的python程序就会显示出来(很多在用watch命令都不会显示的进程在这里可以看到): 2 然后再一个个用kill命令清理 两台Linux系统之间传输文件的几种方法 连接服务器shell窗口关闭导致程序中断,让程序在linux后台运行nohup - CUDA_VISIBLE_DEVICES=1 nohup pytho…
前言 今早我想用多块GPU测试模型,于是就用了PyTorch里的torch.nn.parallel.DistributedDataParallel来支持用多块GPU的同时使用(下面简称其为Dist). 程序运行时,由于程序中其他部分的代码(与Dist无关的代码)出现了错误,导致程序退出.这次使用Dist时没有考虑和处理这种程序崩溃的情况,因此在程序退出前没有用Dist关闭生成的所有进程,最终导致本次进程运行后GPU显存未释放(经观察,发现是由于没有用Dist关闭所有进程,导致程序运行后还有一部分…
很多用户反馈说终止程序之后,显存依然被占用,这里我们提供了两种解决方案,帮助用户解决这个问题. nvidia-smi查看 我们可以先用如下命令 nvidia-smi 查看一下当前GPU进程情况. _ GPU:GPU 编号: Name:GPU 型号: Persistence-M:持续模式的状态.持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态: Fan:风扇转速,从0到100%之间变动: Temp:温度,单位是摄氏度: Perf:性能状态,从P0到P12,P…
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6591923.html 参考网址: http://stackoverflow.com/questions/36668467/change-default-gpu-in-tensorflow http://stackoverflow.com/questions/37893755/tensorflow-set-cuda-visible-devices-within-jupyter 1 终端执行程序时设置使…
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本文目录 1 终端执行程序时设置使用的GPU 2 python代码中设置使用的GPU 3 设置tensorflow使用的显存大小 3.1 定量设置显存 3.2 按需设置显存 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6591923.html 参考网址: http://stackoverflo…
全局存储器,即普通的显存,整个网格中的随意线程都能读写全局存储器的任何位置. 存取延时为400-600 clock cycles  很easy成为性能瓶颈. 訪问显存时,读取和存储必须对齐,宽度为4Byte.假设没有正确的对齐,读写将被编译器拆分为多次操作,减少訪存性能. 多个warp的读写操作假设可以满足合并訪问,则多次訪存操作会被合并成一次完毕.合并訪问的条件,1.0和1.1的设备要求较严格,1.2及更高能力的设备上放宽了合并訪问的条件. 1.2及其更高能力的设备支持对8 bit.16 bi…
用只有2个G的显卡跑数据就需要在训练之前先把无关进程杀掉,防止跑到一半显存满了 nvidia-smi:显示当前GPU中的线程 kill -9 PID:输入PID以结束线程…
运行TensorFlow程序会占用过多的显卡比例,多人共同使用GPU的时候,会造成后面的人无法运行程序. 一.TensorFlow 1.预加载比例限制 tf_config = tensorflow.ConfigProto() tf_config.gpu_options.per_process_gpu_memory_fraction = 0.5 # 分配50% session = tensorflow.Session(config=tf_config) 2.自适应 tf_config = tens…
参考: https://blog.csdn.net/jyli2_11/article/details/73331126 https://blog.csdn.net/cfarmerreally/article/details/80321276 http://www.cnblogs.com/darkknightzh/p/6591923.html 场景: 有一台服务器,服务器上有多块儿GPU可以供使用,但此时只希望使用第2块和第4块GPU,但是我们希望代码能看到的仍然是有两块GPU,分别编号为0,1,…
Sometimes CUDA program crashed during execution, before memory was flushed. As a result, device memory remained occupied. There are some solutions: 1. Try using: nvidia-smi --gpu-reset or simply: nvidia-smi -r 2. Although it should be unecessary to d…
背景 作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 使用GPU训练时,一次训练任务无论是模型参数还是中间结果都需要占用大量显存.为了避免每次训练重新开辟显存带来计算之外的开销,一般框架的做法是在真正的训练任务开始前,将每个节点的输入和输出,以及模型参数的shape计算出来并全局开辟一次,例如Caffe就是这种做法.随着深度学习模型的发展和迭代,不仅模型训练的数据shape可能发生变化,就连模型本身在训练过程中也可能发生变化,那么…
技术背景 笔者在执行一个Jax的任务中,又发现了一个奇怪的问题,就是明明只分配了很小的矩阵空间,但是在多次的任务执行之后,显存突然就爆了.而且此时已经按照Jax的官方说明配置了XLA_PYTHON_CLIENT_PREALLOCATE这个参数为false,也就是不进行显存的预分配(默认会分配90%的显存空间以供使用).然后在网上找到了一些类似的问题,比如参考链接中的1.2.3.4,都是在一些操作后发现未释放显存,这里提供一个实例问题和处理的思路,如果有更好的方案欢迎大家在评论区留言. 问题复现…
keras在使用GPU的时候有个特点,就是默认全部占满显存. 若单核GPU也无所谓,若是服务器GPU较多,性能较好,全部占满就太浪费了. 于是乎有以下三种情况: - 1.指定GPU - 2.使用固定显存的GPU - 3.指定GPU + 固定显存 一.固定显存的GPU 本节来源于:深度学习theano/tensorflow多显卡多人使用问题集(参见:Limit the resource usage for tensorflow backend · Issue #1538 · fchollet/ke…
Keras 是一个高层神经网络API,Keras是由纯Python编写而成并基于TensorFlow,Theano以及CNTK后端.Keras为支持快速实验而生,能够将我们的idea迅速转换为结果.好了不吹了,下面继续学习Keras的一些用法,其中这篇博客包括了Keras如何指定显卡且限制显存用量,还有一些常见函数的用法及其问题,最后是使用Keras进行的练习. Keras如何指定显卡且限制显存用量 Keras在使用GPU的时候有个特点,就是默认全部占满显存.若单核GPU也无所谓,若是服务器GP…
MegEngine亚线性显存优化 MegEngine经过工程扩展和优化,发展出一套行之有效的加强版亚线性显存优化技术,既可在计算存储资源受限的条件下,轻松训练更深的模型,又可使用更大batch size,进一步提升模型性能,稳定batchwise算子.使用MegEngine训练ResNet18/ResNet50,显存占用分别最高降低23%/40%:在更大的Bert模型上,降幅更是高达75%,而额外的计算开销几乎不变. 基于梯度检查点的亚线性显存优化方法[1]由于较高的计算/显存性价比受到关注.M…
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7608916.html 参考网址: https://stackoverflow.com/questions/39758094/clearing-tensorflow-gpu-memory-after-model-execution https://github.com/tensorflow/tensorflow/issues/1727#issuecomment-285815312s tensorflo…
[精]从CPU架构和技术的演变看GPU未来发展 http://www.pcpop.com/doc/0/521/521832_all.shtml 显存与纹理内存详解 http://blog.csdn.net/pizi0475/article/details/8739557 GPU 与CPU的作用协调,工作流程.GPU整合到CPU得好处 http://blog.csdn.net/maopig/article/details/6803141 双剑合璧:CPU+GPU异构计算完全解析 http://bj…
显卡 Video card,Graphics card,又叫显示接口卡,是一个硬件概念(相似的还有网卡),执行计算机到显示设备的数模信号转换任务,安装在计算机的主板上,将计算机的数字信号转换成模拟信号让显示器显示出来. 显卡是计算机的标配之一,计算机要显示图像就必须安装显卡.普通计算机的显卡一般是集成在主板上的. 显卡驱动 显卡驱动是显卡跟计算机连接的桥梁,可以让计算机识别到GPU硬件,是必须正确安装的,不同厂商.不同型号的GPU对应不同的显卡驱动.非开发人员不用安装CUDA或cuDNN,但…
刚入门深度学习时,没有显存的概念,后来在实验中才渐渐建立了这个意识. 下面这篇文章很好的对GPU和显存总结了一番,于是我转载了过来. 作者:陈云 链接:https://zhuanlan.zhihu.com/p/31558973 来源:知乎 深度学习最吃机器,耗资源,在本文,我将来科普一下在深度学习中: 何为"资源" 不同操作都耗费什么资源 如何充分的利用有限的资源 如何合理选择显卡 并纠正几个误区: 显存和GPU等价,使用GPU主要看显存的使用? Batch Size 越大,程序越快…
知乎的一篇文章: https://zhuanlan.zhihu.com/p/31558973 关于如何使用nvidia-smi查看显存与GPU使用情况,参考如下链接: https://blog.csdn.net/Mr_HHH/article/details/80083803 其中在知乎的那篇文章中,有一处,我认为有错: 应为: 先乘后加算一次MACC(multipy-accumulate operation),有的也叫MADD. 每一次乘算一次flop,每一次加算一次flop. 其中flop大约…
显卡使用的内存分为两部分,一部分是显卡自带的显存称为VRAM内存,另外一部分是系统主存称为GTT内存(graphics translation table和后面的GART含义相同,都是指显卡的页表,GTT 内存可以就理解为需要建立GPU页表的显存).在嵌入式系统或者集成显卡上,显卡通常是不自带显存的,而是完全使用系统内存.通常显卡上的显存访存速度数倍于系统内存,因而许多数据如果是放在显卡自带显存上,其速度将明显高于使用系统内存的情况(比如纹理,OpenGL中分普通纹理和常驻纹理). 某些内容是必…
CUDA9的编译器和语言改进 使用CUDA 9,nvcc编译器增加了对C ++ 14的支持,其中包括新功能 通用的lambda表达式,其中使用auto关键字代替参数类型; auto lambda = [](auto a,auto b){return a * b;}; 功能的返回类型扣除(使用auto关键字作为返回类型,如上例所示) 对constexpr函数可以包含的更少的限制,包括变量声明,if,switch和循环. CUDA 9中的NVCC也更快,与CUDA 8相比,编译时间平均减少了20%,…
Antz系统更新地址: https://www.cnblogs.com/LexMoon/category/1262287.html Linux内核源码分析地址:https://www.cnblogs.com/LexMoon/category/1267413.html 目前已经完成了MBR的雏形,虽然有些简陋,比如我们的屏幕显示还是使用的BIOS中断,而在BIOS中断向量表只有在实模式下存在, 我们要进入保护模式之后就无法使用了.此次我们要完成直接操作显存来进行屏幕显示. 0.  关于显存 如果要…
在运行上面的blog的Tensorflow小程序的时候程序我们会遇到一个问题,当然这个问题不影响我们实际的结果计算,但是会给同样使用这台计算机的人带来麻烦,程序会自动调用所有能调用到的资源,并且全占满,在自己的PC上没问题,但是在服务器上,问题就很大,因为一旦你运行程序,占满显存别人就不能再用了,解决方法是我们通常是给程序运行指定一块GPU,然后限制其使用比例: import tensorflow as tf import os os.environ[' #指定第一块GPU可用 config =…
原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cuda runtime error (2) : out of memory at /opt/conda/conda-bld/pytorch_1524590031827/work/aten/src/THC/generic/THCStorage.cu:58 想必这是所有炼丹师们最不想看到的错误,没有之一.…
本来想对上一篇博客做优化,优化效果不明显.但知识点还是要记一下. 初衷是想把上一篇博客中定义域的计算搬到CPU来计算,因为定义域的计算对于每一个kernel都是一样的,所以直接读取应该是可以进一步减小kernel的执行时间的. 我的思路的初衷是将这块的数据送到显存之后再送到寄存器中,从寄存器读取的时间应该是很快的,通过这样把计算的时间改为读取的时间.当然,读取寄存器的时间是否比计算更短,这个确实应该质疑,但是对于比较复杂的计算,我觉得直接读应该是比计算更快的.而对于这部分数据,CPU计算应该会比…
Python在用GPU跑模型的时候最好开多进程,因为很明显这种任务就是计算密集型的. 用进程池好管理,但是tensorflow默认情况会最大占用显存,尽管该任务并不需要这么多,因此我们可以设置显存的按需获取,这样程序就不会死掉了. 1. 按比例预留: tf_config = tensorflow.ConfigProto() tf_config.gpu_options.per_process_gpu_memory_fraction = 0.5 # 分配50% session = tensorflo…