CUDA_ERROR_OUT_OF_MEMORY


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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM