RuntimeError: CUDA error: initialization

打印 上一主题 下一主题

主题 803|帖子 803|积分 2409

RuntimeError: CUDA error: initialization


cuda初始化出问题了,这是由于在python多线程跑gpu代码步伐时先对cuda举行操纵,然后在跑gpu代码时就没有cuda可用了。
在main的主步伐代码加一行代码就可以了,用来获取cuda,在代码中只能使用一次:
  1. import multiprocessing as mp
  2. if __name__ == "__main__":
  3.     mp.set_start_method('spawn')
复制代码

多历程推理代码:


  1. import os
  2. os.environ['CUDA_VISIBLE_DEVICES']='0'
  3. import torch
  4. import multiprocessing
  5. # 定义每个进程要执行的函数,这里简单做一个张量求和计算示例
  6. def process_task(gpu_id, tensor_data):
  7.     # 设置当前进程可见的CUDA设备
  8.     # os.environ['CUDA_VISIBLE_DEVICES'] = str(gpu_id)
  9.     print("gpu_id",gpu_id)
  10.     device= torch.device(f"cuda:{gpu_id}")
  11.     seed=1234
  12.     generator = torch.Generator(device).manual_seed(seed)
  13.    
  14.     # device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  15.     tensor = tensor_data.to(device)
  16.     result = tensor.sum()
  17.     return result.item()
  18. if __name__ == "__main__":
  19.     num_processes = 5  # 定义要启动的进程数量,这里设置为2,可根据实际GPU数量等情况调整
  20.     gpu_ids = [2,2,5]  # 对应每个进程使用的GPU设备编号,需根据实际系统中的GPU情况安排
  21.     tensor_list = [torch.randn(5, 5) for _ in range(num_processes)]  # 模拟每个进程要处理的张量数据
  22.     with multiprocessing.Pool(num_processes) as pool:
  23.         args_list = [(gpu_id, tensor) for gpu_id, tensor in zip(gpu_ids, tensor_list)]
  24.         results = pool.starmap(process_task, args_list)
  25.     print("各个进程的计算结果:", results)
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

悠扬随风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表