-
Notifications
You must be signed in to change notification settings - Fork 31
Open
Description
import dpctl
import dpctl.tensor as dpt
import multiprocessing
import os
def _exec(di):
print(os.getpid())
x = dpt.ones(1, device="cpu")
print(2)
y = dpt.empty_like(x)
y[...] = x
di["hey"] = dpt.asnumpy(y)
def main():
print("starting")
with multiprocessing.Manager() as manager:
di_ = manager.dict()
p = multiprocessing.Process(
target=_exec,
args=(di_,)
)
p.start()
p.join(200)
print("Done")
if __name__ == "__main__":
# dpt.ones(1)
main()
Running this produces an output:
(triage_dpbench) opavlyk@opavlyk-mobl:~/tmp$ python run.py
starting
16819
2
Done
(triage_dpbench) opavlyk@opavlyk-mobl:~/tmp$
Uncommenting the line # dpt.ones(1)
above call to main()
causes the script to hang (looks like a deadlock).
If in addition x = dpt.ones(1, device="cpu")
is replaced with x = dpt.ones(1)
, the scripts errors out with
(triage_dpbench) opavlyk@opavlyk-mobl:~/tmp$ python run.py
starting
16969
Process Process-2:
Traceback (most recent call last):
File "/home/opavlyk/miniconda3/envs/triage_dpbench/lib/python3.9/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/opavlyk/miniconda3/envs/triage_dpbench/lib/python3.9/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/opavlyk/tmp/run.py", line 10, in _exec
x = dpt.ones(1)
File "/home/opavlyk/repos/dpctl/dpctl/tensor/_ctors.py", line 1006, in ones
hev, _ = ti._full_usm_ndarray(1, res, sycl_queue)
RuntimeError: Native API failed. Native API returns: -997 (The plugin has emitted a backend specific error) -997 (The plugin has emitted a backend specific error)
Done
(triage_dpbench) opavlyk@opavlyk-mobl:~/tmp$
Thank you to @ZzEeKkAa for reporting a related issue which was distilled into this reproducer
Metadata
Metadata
Assignees
Labels
No labels