【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 了。

相关推荐
这张生成的图像能检测吗2 分钟前
(论文速读)CCASeg:基于卷积交叉注意的语义分割多尺度上下文解码
人工智能·深度学习·计算机视觉·语义分割
大猪宝宝学AI2 小时前
【AI Infra】BF-PP:广度优先流水线并行
人工智能·性能优化·大模型·模型训练
Jerryhut2 小时前
Opencv总结7——全景图像拼接
人工智能·opencv·计算机视觉
5:002 小时前
Python进阶语法
开发语言·python
Captaincc2 小时前
AI 原生下的新的社区形态会是什么
人工智能
小康小小涵3 小时前
睿抗机器人大赛魔力元宝
python·ubuntu·gitee·github
勇往直前plus3 小时前
Python 类与实例对象的内存存储
java·开发语言·python
禾叙_3 小时前
【canal】canal同步msyql到redis
android·redis·python
先做个垃圾出来………3 小时前
Python位运算及操作
java·前端·python
人工小情绪4 小时前
python报错:AttributeError: module ‘numpy‘ has no attribute ‘object‘.
python·numpy·neo4j