@smth - Fun fact: if I make the worker sleep for 5 seconds, the following happens:

If we use mp.Manager().Queue(), the problem still persists as I reported earlier.
If we change to using mp.Queue(), then the problem is resolved (as you were expecting!).

The python docs (and many other resources) seem to point out that mp.Manager().Queue() can be used wherever we are using mp.Queue(), but it does seem that torch CUDA tensors somehow do not play well with mp.Manager().Queue()? I have found using Manager().Queue() is better for handling clean up / preventing deadlock when one of the worker dies or is interrupted, and that is the reason why I was using it (it works great with CPU tensors). The other question was that even if we were to move to using mp.Queue(), I wouldn’t be able to control workers retaining access to the transferred tensors, so would be curious to know the best practices around that. I’m happy to open an issue instead if you think that’s a better channel to discuss this.