错误 To use CUDA with multiprocessing, you must use the ‘spawn‘ start method 解决方案

本文最后更新于:2022年2月24日 晚上

在 Linux 下多进程调用 CUDA 执行任务时可能会报错: To use CUDA with multiprocessing, you must use the ‘spawn‘ start method,本文记录解决方案。

问题原因

  • 操作系统为 Linux

  • 多进程调用程序

  • 程序中需要调用 CUDA

  • 调用多进程时使用的不是 spawn 模式

    Linux 默认调用多进程的方法为 fork,参考之前的说明

在此种情景中为了保证 CUDA 进程的隔离仅能使用 spawn 模式运行多进程任务,如果没有使用则会报出上述错误

解决方案

  • 需要强制 multiprocessing 使用 spawn 方法调用多进程
1
2
import multiprocessing
multiprocessing.set_start_method('spawn')

参考资料


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!