E tensorflow/stream_executor/cuda/cuda_driver.cc:1002] failed to allocate 198.83M (208486400 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY

In case it's still relevant for someone, I encountered this issue when trying to run Keras/Tensorflow for the second time, after a first run was aborted. It seems the GPU memory is still allocated, and therefore cannot be allocated again. It was solved by manually ending all python processes that use the GPU, or alternatively, closing the existing terminal and running again in a new terminal window.

在使用Linux的过程中,有时候我们需要手动去终止进程,少的话还好,找出pid把它kill掉即可。但是,如果有一堆进程需要终止怎么办?今天我就遇到了这样的问题,启动了好多rtp包接收进程,结果停不下来。
  用 ps -ef 命令查看,如下:

  想了一下,应该可以用pipe(管道)来完成这项任务,经过测试,真的成功了。命令如下:
  

$ ps -ef | grep rtprecv | grep -v grep | awk '{print $2}' | xargs kill -9

  

1
解释一下:
  ps -ef 用于获取当前系统所有进程,如上图所示。
  grep rtprecv 过滤出与“rtprecv”字符相关的数据(以行为单位)。
  grep -v grep 的作用是除去本次操作所造成的影响,-v 表示反向选择。
  awk '{print $2}' 表示筛选出我们所关注的进程号,$2 表示每行第二个变量,在这个例子中就是进程号。所以如果你使用ps工具不一样,或者ps带的参数不一样,那需要关注的就可能不是$2,可能是$1 。
  xargs kill -9 中的 xargs 命令表示用前面命令的输出结果(也就是一系列的进程号)作为 kill -9 命令的参数,-9 表示强制终止,不是必须的。

  上面是用 kill 配合过滤操作来完成,实际上还有更简单的方法——使用 killall 命令。killall 通过进程名字终止所有进程,用法如下:killall <process_name> 。
  在我们这个例子中,可以这么用:

# killall -9 rtprecv
1
  当然,killall 也可以和 ps 或 pgrep 结合使用,以此来查看哪些程式正在运行。

【扩展知识】
  与终止进程相关的命令有:

ps : 报告当前进程的快照
kill : 向一个进程发出信号
killall : 按名字消灭进程
pkill : 根据名字和其它属性查看或者发出进程信号
skill : 发送一个信号或者报告进程状态
xkill : 按照X资源消灭一个客户程序
终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。
  另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如 mysql 服务器最好是按其正常的程序关闭,而不是用 pkill mysqld 或 killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用 kill 来杀掉。
  xkill 是在桌面用的杀死图形界面的程序。比如当 firefox 出现崩溃不能退出时,点鼠标就能杀死 firefox 。当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就 OK 了。如果您想终止 xkill ,就按右键取消。
  
  另外,说一下 grep 和 pgrep 的区别:
  pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用。用法:pgrep 参数选项 程序名。
  grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix 的 grep 家族包括 grep、egrep 和 fgrep。
  简单来说,一个是查询程序的运行状态,一个是搜索内容。
---------------------
作者:阿基米东
来源:CSDN
原文:https://blog.csdn.net/lu_embedded/article/details/53590815
版权声明:本文为博主原创文章,转载请附上博文链接!

CUDA_ERROR_OUT_OF_MEMORY的更多相关文章

  1. Keras 训练时出现 CUDA_ERROR_OUT_OF_MEMORY 错误

    不用惊慌,再试一次.估计当时GPU内存可分配不足,可手动结束所有python程序后释放相关GPU内存,或者重新运行一次终端

  2. 解决TensorFlow程序无限制占用GPU

    今天遇到一个奇怪的现象,使用tensorflow-gpu的时候,出现内存超额~~如果我训练什么大型数据也就算了,关键我就写了一个y=W*x.......显示如下图所示: 程序如下: import te ...

  3. BI-LSTM and CRF using Keras

    问题1:CUDA_ERROR_OUT_OF_MEMORY: How to activate multiple GPUs from Keras in Tensorflow import keras.ba ...

  4. 初始 DQN 程序 所遇到的问题

    初始 DQN 程序 所遇到的问题 最近在看 DQN,但是想试试别人放出来的 code,但是发现,额,各种问题,在此记录,以备不时之需! 问题1. wangxiao@GTX980:~/Documents ...

  5. tensorflow-gpu 使用的常见错误

    这篇博客会不定期整理我在 tensorflow 中出现的问题和坑. 1. CUDA_ERROR_OUT_OF_MEMORY: tensorflow 在执行过程中会默认使用全部的 GPU 内存,给系统保 ...

随机推荐

  1. ipython+notebook使用教程(转载)

    ipython是python交互环境的增强版 IPython notebook目前已经成为用Python做教学.计算.科研的一个重要工具.IPython Notebook使用浏览器作为界面,向后台的I ...

  2. hdu2642二维树状数组单点更新

    碰到这种题一定要注意坐标是不是有序的,也要注意坐标是不是有0的,有的话需要+1处理 #include<bits/stdc++.h> using namespace std; #define ...

  3. 自动化测试使用cookie跳过验证码

    准备工具: fiddler Python+selenium 安装fidder fidder官方下载地址 fidder首次安装需要设置才能抓取https参考如下 fidder设置抓取https 开始 1 ...

  4. ERP合同列表页面自动导航(三十二)

    合同审核完成页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CRMC ...

  5. Web应用程序项目XXXX已配置为使用IIS。无法访问IIS 元数据库。您没有足够的特权访问计算机上的IIS

    错误图片:

  6. 浅谈Spring MVC知识

    关于MVC框架,我相信大家都不陌生,都会说也就是模型-视图-控制器这三层的框架结构,如果你参加面试的时候考官会问:“MVC框架是什么?你说一说.”其实我们都知道这个问题还需要问的,只要你是一个开发人员 ...

  7. [SDOI2012]象棋

    题解: sd的题目也真是奇怪 第一题有了最短路第二题还有 第二题有了网络流第三题还有 显然是可以网络流的 但考虑每个点只能存在一个这个条件 刚开始我以为是建分层图..但发现这个时间复杂度太高了 其实我 ...

  8. SVM(支持向量机)分类算法

    SVM算法比较复杂,数学功底要求很高. 详见七月大神博客<支持向量机通俗导论(理解SVM的三层境界)>

  9. TotoriseGit安装

    1.前提 前提是有安装过git. 2.下载 3.安装 二:参考的文档 1.不错的文档 https://www.cnblogs.com/xinlj/p/5978730.html http://blog. ...

  10. js获取按键

    event.altKey.event.ctrlKey.event.shiftKey 属性 属性为true表示事件发生时Alt.Ctrl.Shift键被按下并保持,为false则Alt.Ctrl.Shi ...