我注意到文档中没有该函数的说明,因此不清楚应该在哪里调用。下面两种方法哪个是正确的呢?
- 在每个 worker 代码的末尾调用它(例如,在 mp.spawn 内部)。
- 或者在 mp.spawn 外面即主进程中调用它。
请注意,有一个git问题要求将此功能加入文档:https://github.com/pytorch/pytorch/issues/48203
以下是2的示例:
def test_setup():
print('test_setup')
if torch.cuda.is_available():
world_size = torch.cuda.device_count()
else:
world_size = 4
master_port = find_free_port()
mp.spawn(setup_process, args=(world_size, master_port), nprocs=world_size)
dist.destroy_process_group()
print('successful test_setup!')