程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

pythonRuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing

編輯:Python

RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the ‘spawn’ start method

  • fork和spawn是構建子進程的不同方式:
forkspawn分叉產卵繼承非繼承從頭構建一個子進程,父進程的數據拷貝到子進程的空間中,擁有自己的Python解釋器變量具有與父進程中相同的idN在每個子進程開始時導入模塊子進程獲取在 name == main 塊中定義的變量N

解決方案

if __name__=='__main__':
torch.multiprocessing.set_start_method('spawn')

參考與更多

  • 日志提示“RuntimeError: Cannot re-initialize CUDA in forked subprocess”
  • https://britishgeologicalsurvey.github.io/science/python-forking-vs-spawn/
  • https://www.pythonf.cn/read/65459
  • https://stackoverflow.com/questions/64095876/multiprocessing-fork-vs-spawn

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved