pytorch - 为什么即使我将可见 CUDA 设置为 2,DDP 中的 `local_rank` 仍为零?

标签 pytorch cuda gpu distributed-computing

我的系统中有 3 个 GPU。

我想在最后一个上运行,即 2。因此,我在配置文件中将 gpu_id 设置为 2,并将 CUDA_VISIBLE_DEVICES=2 设置为 2。但在我的程序中,以下行始终分配第 0 个 GPU。

        local_rank = torch.distributed.get_rank()
        torch.cuda.set_device(local_rank) 

如何解决这个问题?

最佳答案

设置CUDA_VISIBLE_DEVICES=2时,您告诉操作系统仅将第三个GPU暴露给您的进程。也就是说,就 PyTorch 而言,只有一个 GPU。因此torch.distributed.get_world_size()返回1(而不是3)。 在您的进程中,该 GPU 的等级将为 0 - 因为没有其他 GPU 可用于该进程。但就操作系统而言 - 所有处理都在分配给该作业的第三个 GPU 上完成。

关于pytorch - 为什么即使我将可见 CUDA 设置为 2,DDP 中的 `local_rank` 仍为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73678882/

相关文章:

python - 查找张量中沿轴的非零元素数

excel - 如何在Excel中使用训练好的深度学习模型进行预测?

cuda - 线程与全局内存的交互

android - 为什么很多移动 GPU 支持 OpenGL ES,而不支持 OpenGL?

python - 计算两个张量之间的损耗时,Pytorch错误。 TypeError : __init__() takes 1 positional argument but 3 were given

python - 交叉熵损失与重量手动计算

cuda - 如何在 Windows 中运行 cuda-gdb?我可以使用 cygwin 吗?

cuda - 使用 CUDA 的多 GPU 编程策略

cuda - CUDA环境中GPU上的可视化

c++ - 工作组障碍不起作用