【Pytorch】在多进程中使用 CUDA

Python 原生自带的多进程库不支持在子进程中调用 CUDA 进行加速运算。因此,本文介绍了使用 Pytorch 中的 multiprocessing 库实现在子进程中调用 CUDA 的方法。

在使用 Python 原生自带的 multiprocessing 库中,若在子进程中调用 CUDA,则会报错:

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

如果根据提示信息,直接使用

python 复制代码
torch.multiprocessing.set_start_method("spawn")

则会报错:

RuntimeError('context has already been set')

这是因为想要实现在多进程中调用 CUDA,需要先新建一个 context 对象,并在实际使用中用这个 context 对象替换 torch.multiprocessing,例如:

python 复制代码
context = torch.multiprocessing.get_context("spawn")
...
process = context.Process(target=..., args=...)

此时,在子进程中就可以放心地调用 CUDA 了。

相关推荐
岁月宁静25 分钟前
什么是 Agent:从"会聊天"到"会做事"
人工智能·python
岁月宁静42 分钟前
AI 应用开发工程师简历怎么写:HR 初筛、技术复筛、面试追问,三道关卡各看什么?
人工智能·python·面试
来让爷抱一个1 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
老金带你玩AI1 小时前
全球股市跌麻了:AI在进化,牛马在买单
人工智能
小肝一下3 小时前
3.基础语法(3)
python
我qq不是451516523 小时前
WorkBuddy下载体验
人工智能·经验分享·ai·workbuddy
深蓝AI3 小时前
Python 子进程树:父进程被杀后,孙进程为何还在跑?
python
IT_陈寒4 小时前
Redis雪崩把我坑惨了,这是5年经验的教训
前端·人工智能·后端
心祭丫丫4 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习