完美解决pytorch多线程问题:Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing

在pytorch,dataloader里设置了num_workers > 1的时候, 会出现这个错误。

一般网上RuntimeError: Cannot re-initialize CUDA in forked subprocess解决方法之一_NLOS的博客-CSDN博客 解决方法,加上一行设定。

然而,我这里如果加上这行代码,会导致代码卡死在dataloader里面。

后面发现,代码里面设定了这样的几行。

if cuda:
     torch.set_default_tensor_type('torch.cuda.FloatTensor')
else:
     torch.set_default_tensor_type('torch.FloatTensor')

导致了,在dataloader的时候,tensor就会被设定为cuda上的变量,多线程的时候就会出问题,当注释掉这几行之后,就不会报错了。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值