RuntimeError: expected device cuda:4 but got device cpu

    技术2022-07-16  66

    报错情况

    在计算两个tensor的loss时,使用了如下代码:

    u = eps * (torch.log(mu+1e-8) - torch.logsumexp(self.M(C, u, v), dim=-1)) + u

    报错:RuntimeError: expected device cuda:4 but got device cpu

     

     

    错误原因

    这里,M是一个函数。C的类型为:

    tensor([[44514.2383 ... 44565.1055]], device='cuda:4',        grad_fn=<SumBackward1>)

    u的类型为:

    (Pdb) u tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

    u和C一个在cpu上,一个在gpu上,从而报错RuntimeError: expected device cuda:4 but got device cpu

     

    解决方法

    定义u的时候加上u.cuda(gpu_ids[0])

    即u.cuda(4)

    Processed: 0.015, SQL: 10