Я пытаюсь параллельно сделать вывод, используя многоядерный процессор и один графический процессор, однако я только что получил следующие ошибки времени выполнения.Я приложил упрощенный пример, который может воспроизвести ошибки.
Ошибка выполнения
Файл THCudaCheck FAIL = c: \ a \ w \ 1 \ s \ tmp_conda_3.6_091443 \ conda \conda-bld \ pytorch_1544087948354 \ work \ torch \ csrc \ generic \ StorageSharing.cpp line = 232 ошибка = 71: операция не поддерживается
Файл "C: \ Users \ Anaconda3 \ lib \ site-packages \ torch \ multiprocessing \ Reductions.py ", строка 213, в redu_tensor (устройство, дескриптор, storage_size_bytes, storage_offset_bytes) = storage._share_cuda _ ()
RuntimeError: ошибка времени выполнения cuda (71): операция не поддерживается в c: \ a \ w \ 1 \ s\ tmp_conda_3.6_091443 \ conda \ conda-bld \ pytorch_1544087948354 \ work \ torch \ csrc \ generic \ StorageSharing.cpp: 232
Упрощенный пример, который может воспроизводить ошибки
import torch
from torch import nn
# model used to do inference
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.fc1 = nn.Linear(100,1)
def forward(self,x):
return self.fc1(x)
# class running inference
class A(object):
def __init__(self):
pass
def do_something(self, model):
# do something
x = torch.randn(100).view(-1)
print(model.forward(x))
def run(self):
mp = torch.multiprocessing.get_context('spawn')
processes = []
for i in range(2):
p = mp.Process(target=self.do_something, args=(Model().cuda(),))
processes.append(p)
for p in processes:
p.start()
if __name__ == '__main__':
a = A()
a.run()
Буду очень признателен, если кто-нибудь сможет помочь решить эту проблему.Кстати, мой компьютер работает под управлением Windows 10 с одним графическим процессором GTX 1070.