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. Map<String,String>集合的四种遍历方式 其中有一种针对大容量的数据集合

  2. Webpack devServer中的 proxy 实现跨域

    Webpack dev server使用http-proxy解决跨域问题 文档资料 webpack关于webpack-dev-server开启proxy的官方介绍Vue-cli proxyTable ...

  3. Java中BigDecimal类介绍及用法

    Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...

  4. java多线程快速入门(七)

    什么是守护线程 守护线程是为用户线程服务的这么一个线程,主线程结束,守护线程也结束 package com.cppdy; class MyThread3 extends Thread{ @Overri ...

  5. Python3-RabbitMQ 3.7.2学习——Hello World(二)

    RabbitMQ环境搭建好了,接下来就是学习编程的入门级hello world. 在运行程序前,要先确保开启RabbitMQ服务 然后安装pika,命令:pip install pika 1.创建一个 ...

  6. windows Service程序的安装、启动、卸载命令

    安装:%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe ServiceTest.exe 启动:Net Start serv ...

  7. thinkphp搭建后台品字形框架页面

    页面分为三个部分 head,left,right共同组成了index 在indexController中 function Index(){ $this->display(); } //展现后腰 ...

  8. 【Java】 剑指offer(1) 找出数组中重复的数字

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字 ...

  9. fbs创建windows下安装qtpy应用程序!

    cd 到python3.6目录下Python -m venv venv 创建虚拟环境call venv\scripts\activate.bat 激活虚拟环境将pip升级到最新版19.2pip ins ...

  10. xhprof扩展安装与使用

    目录 一.xhprof扩展安装步骤 二.xhprof的使用 总结 参考资料 一.xhprof扩展安装步骤 xhprof是PHP的一个扩展,最好也直接安装上graphviz图形绘制工具(用于xhprof ...