PyTorch TypeError: scatter () отсутствует 1 обязательный позиционный аргумент: 'scatter_list' - PullRequest
0 голосов
/ 25 ноября 2018

все.У меня проблема с запуском распределенной программы при использовании «mpi» в качестве бэкэнда.Программа выглядит следующим образом:

def run(rank, size, hostname):
    print("I am {} of {} in {}".format(rank, size, hostname))
    tensor = torch.zeros(1)
    group=dist.new_group([0,1,2])
    if rank == 0:
        scatter_list=[torch.zeros(1) for _ in range(3)]
        dist.scatter(tensor= tensor, src=0, scatter_list=scatter_list, group=group)
        print("Master has completed Scatter")
    else:
        tensor += 1
        dist.scatter(tensor= tensor, src=0, group=group)
        print("worker has completed scatter")
    print('Rank', rank, 'has data', tensor[0])

def init_process(rank, size, hostname, fn, backend='tcp'):
    dist.init_process_group(backend, rank=rank, world_size=size)
    fn(rank, size,hostname)

if __name__ == "__main__":
    world_size = int(os.environ['OMPI_COMM_WORLD_SIZE'])
    world_rank = int(os.environ['OMPI_COMM_WORLD_RANK'])
    hostname = socket.gethostname()
    p = Process(target = init_process, 
                     args=(world_rank, world_size, hostname, run, 'mpi'))
    p.start()
    p.join()

Однако, когда программа запускается, она всегда выдает ошибку вроде:

  File "mpi_test.py", line 17, in run
dist.scatter(tensor= tensor, src=0, group=group)

TypeError: scatter() missing 1 required positional argument: 'scatter_list'

Ошибкаиспускается рангами 1 и 2, которые не нуждаются в аргументе: 'scatter_list'.Я пробовал много способов, но не получилось.Кто-нибудь знает почему?Спасибо за ваше чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...