Hi,
I installed Pytorch 0.3.0 with latest Anaconda3-5.0.1-Linux-x86_64(python 3.6) by
conda install pytorch torchvision -c pytorch
When I try to read from a shared tensor, it is blocked.
import torch
import torch.multiprocessing as mp
from torch.multiprocessing import Process
import numpy as np
class MyProcess(Process):
def __init__(self):
super(MyProcess, self).__init__()
self.batch_size = 256
self.N = 443757
self.idx = np.random.randint(0, self.N, size=(self.batch_size,)).tolist()
self.a = torch.zeros([self.N, 3000])
self.a.share_memory_()
print('reading in main process ...')
data = self.a[self.idx, :]
print('done!')
self.lock = mp.Lock()
def run(self):
with self.lock:
print('reading in sub-process ...')
data = self.a[self.idx, :] # blocked!!
print('done!')
my_process = MyProcess()
my_process.start()
my_process.join()
The output is
reading in main process ...
done!
reading in sub-process ...
But it goes well in Pytorch0.2.0:
reading in main process ...
done!
reading in sub-process ...
done!
I also noticed that when self.batch_size is a small number (e.g. 8), it can works well in both Pytorch0.3.0 and Pytorch0.2.0.
Any suggestions about this issues would be appreciated.