ToB企服应用市场:ToB评测及商务社交产业平台

标题: RuntimeError: CUDA error: initialization [打印本页]

作者: 悠扬随风    时间: 2024-12-27 08:24
标题: RuntimeError: CUDA error: initialization
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企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4