Я недавно изучаю pytorch, и этот вопрос встает передо мной.
При обращении к мульти-графическим процессорам я вижу много учебных пособий по поводу «DataParallel». Он разделяет вычисления для разных графических процессоров, а затем объединяет результаты.
Как насчет этого вопроса? Я хочу, чтобы данные сохранялись в разных графических процессорах, а затем вычислили их среднее значение на графических процессорах. Например, если у меня есть 4 тензора одинаковой формы:
tensor_gpu1=tensor_c1.to(device1)
tensor_gpu2=tensor_c2.to(device2)
tensor_gpu3=tensor_c3.to(device3)
tensor_gpu4=tensor_c4.to(device4)
##then I want the average still calculated on GPU (which means no communication with CPU)
##Will it work if I just sum up and divide?
result=(tensor_gpu1+tensor_gpu2+tensor_gpu3+tensor_gpu4)/4 ##Try to add tensors on different GPU.
После прочтения еще нескольких туориалов, теперь мне интересно, будет ли это работать. Говорят, что попытка добавить тензор ЦП и тензор ГП вызовет ошибку. Как насчет тензоров на разных GPU? Пройдет несколько дней, прежде чем я смогу получить доступ к доступному графическому процессору, поэтому я не могу попробовать его сейчас.