Tensor Inverse параллельно через несколько графических процессоров с использованием PyTorch - PullRequest
0 голосов
/ 09 октября 2019

Я хочу запустить несколько графических процессоров параллельно torch.inverse (), но не могу.

Я видел этот пост Matmul на нескольких графических процессорах , в котором описывается процесс для matmul. Это показывает, что если у вас есть несколько тензоров, выделенных для каждого GPU, matmul будет работать параллельно. Я смог повторить это поведение для matmul, но когда я пытаюсь сделать то же самое для torch.inverse (), он запускается последовательно, когда я проверяю "watch nvidia-smi". Также, когда я заменяю функцию torch.inverse () функцией fft, я получаю параллельное использование графического процессора. Любые идеи?

import torch

ngpu = torch.cuda.device_count()
# This is the allocation to each GPU.
lis = []
for i in range(ngpu):
    lis.append(torch.rand(5000,5000,device = 'cuda:'+ str(i)))

# per the matmul on multiple GPUs post this should already be in parallel
# but doesnt seem to be based on watch nvidia-smi
C_ = []
for i in range(ngpu):
    C_.append(torch.inverse(lis[i]))

Редактировать: Это можно сравнить с кодом FFT (ниже) и кодом Matmul в ссылке выше.

import torch

ngpu = torch.cuda.device_count()
# This is the allocation to each GPU.
lis = []
for i in range(ngpu):
    lis.append(torch.rand(5000,5000,2,device = 'cuda:'+ str(i)))

# per the matmul on multiple GPUs post this should already be in parallel
# but doesnt seem to be based on watch nvidia-smi
C_ = []
for i in range(ngpu):
    C_.append(torch.fft(lis[i],2))

...