# MedCat error Cannot re-initialize CUDA in forked subprocess

**URL:** <https://discourse.cogstack.org/t/medcat-error-cannot-re-initialize-cuda-in-forked-subprocess/136>\
**Category:** MedCAT\
**Created:** [January 11, 2023, 5:04pm UTC](https://discourse.cogstack.org/t/medcat-error-cannot-re-initialize-cuda-in-forked-subprocess/136 "2023-01-11T17:04:33Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Samora](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Samora](https://discourse.cogstack.org/u/Samora)\
**Post date:** [January 11, 2023, 5:04pm UTC](https://discourse.cogstack.org/t/medcat-error-cannot-re-initialize-cuda-in-forked-subprocess/136/1 "2023-01-11T17:04:33Z")

</div>

%%time  
treatment\_doc\_annotations = cat.get\_entities\_multi\_texts(docs\_filtered[‘body\_analysed’].dropna(), n\_process=24)

Exception raised when applying component meta\_cat to a batch of docs.  
Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the ‘spawn’ start method  
Traceback (most recent call last):  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 376, in \_set\_meta\_anns  
all\_predictions, all\_confidences = predict(self.model, data, config)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/utils/meta\_cat/ml\_utils.py”, line 80, in predict  
model.to(device)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/torch/nn/modules/module.py”, line 852, in to  
return self.\_apply(convert)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/torch/nn/modules/module.py”, line 530, in \_apply  
module.\_apply(fn)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/torch/nn/modules/module.py”, line 552, in \_apply  
param\_applied = fn(param)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/torch/nn/modules/module.py”, line 850, in convert  
return t.to(device, dtype if t.is\_floating\_point() or t.is\_complex() else None, non\_blocking)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/torch/cuda/ **init**.py”, line 162, in \_lazy\_init  
raise RuntimeError(  
RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the ‘spawn’ start method  
Stack (most recent call last):  
File “/opt/conda/lib/python3.8/runpy.py”, line 194, in \_run\_module\_as\_main  
return \_run\_code(code, main\_globals, None,  
File “/opt/conda/lib/python3.8/runpy.py”, line 87, in \_run\_code  
exec(code, run\_globals)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/ipykernel\_launcher.py”, line 16, in   
app.launch\_new\_instance()  
File “/home/icat/.venv/play/lib/python3.8/site-packages/traitlets/config/application.py”, line 846, in launch\_instance  
app.start()  
File “/home/icat/.venv/play/lib/python3.8/site-packages/ipykernel/kernelapp.py”, line 677, in start  
self.io\_loop.start()  
File “/home/icat/.venv/play/lib/python3.8/site-packages/tornado/platform/asyncio.py”, line 199, in start  
self.asyncio\_loop.run\_forever()  
File “/opt/conda/lib/python3.8/asyncio/base\_events.py”, line 570, in run\_forever  
self.\_run\_once()  
File “/opt/conda/lib/python3.8/asyncio/base\_events.py”, line 1859, in \_run\_once  
handle.\_run()  
File “/opt/conda/lib/python3.8/asyncio/events.py”, line 81, in \_run  
self.\_context.run(self.\_callback, \*self.\_args)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/ipykernel/kernelbase.py”, line 461, in dispatch\_queue  
await self.process\_one()  
File “/home/icat/.venv/play/lib/python3.8/site-packages/ipykernel/kernelbase.py”, line 450, in process\_one  
await dispatch(\*args)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/ipykernel/kernelbase.py”, line 357, in dispatch\_shell  
await result  
File “/home/icat/.venv/play/lib/python3.8/site-packages/ipykernel/kernelbase.py”, line 652, in execute\_request  
reply\_content = await reply\_content  
File “/home/icat/.venv/play/lib/python3.8/site-packages/ipykernel/ipkernel.py”, line 359, in do\_execute  
res = shell.run\_cell(code, store\_history=store\_history, silent=silent)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/ipykernel/zmqshell.py”, line 532, in run\_cell  
return super().run\_cell(\*args, \*\*kwargs)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/IPython/core/interactiveshell.py”, line 2768, in run\_cell  
result = self.\_run\_cell(  
File “/home/icat/.venv/play/lib/python3.8/site-packages/IPython/core/interactiveshell.py”, line 2814, in _run\_cell  
return runner(coro)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/IPython/core/async\_helpers.py”, line 129, in pseudo\_sync\_runner  
coro.send(None)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/IPython/core/interactiveshell.py”, line 3012, in run\_cell\_async  
has\_raised = await self.run\_ast\_nodes(code\_ast.body, cell\_name,  
File “/home/icat/.venv/play/lib/python3.8/site-packages/IPython/core/interactiveshell.py”, line 3191, in run\_ast\_nodes  
if await self.run\_code(code, result, async=asy):  
File “/home/icat/.venv/play/lib/python3.8/site-packages/IPython/core/interactiveshell.py”, line 3251, in run\_code  
exec(code\_obj, self.user\_global\_ns, self.user\_ns)  
File “/tmp/ipykernel\_281695/243332362.py”, line 1, in   
get\_ipython().run\_cell\_magic(‘time’, ‘’, “treatment\_doc\_annotations = cat.get\_entities\_multi\_texts(docs\_filtered[‘body\_analysed’].dropna(), n\_process=24)\n”)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/IPython/core/interactiveshell.py”, line 2257, in run\_cell\_magic  
result = fn(\*args, \*\*kwargs)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/IPython/core/magics/execution.py”, line 1316, in time  
exec(code, glob, local\_ns)  
File “”, line 1, in   
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/cat.py”, line 959, in get\_entities\_multi\_texts  
for doc in tqdm(docs, total=len(texts_)):  
File “/home/icat/.venv/play/lib/python3.8/site-packages/tqdm/notebook.py”, line 257, in **iter**  
for obj in super(tqdm\_notebook, self). **iter** ():  
File “/home/icat/.venv/play/lib/python3.8/site-packages/tqdm/std.py”, line 1180, in **iter**  
for obj in iterable:  
File “/home/icat/.venv/play/lib/python3.8/site-packages/spacy/language.py”, line 1520, in pipe  
for doc in docs:  
File “/home/icat/.venv/play/lib/python3.8/site-packages/spacy/language.py”, line 1556, in \_multiprocessing\_pipe  
proc.start()  
File “/opt/conda/lib/python3.8/multiprocessing/process.py”, line 121, in start  
self.\_popen = self.\_Popen(self)  
File “/opt/conda/lib/python3.8/multiprocessing/context.py”, line 224, in \_Popen  
return \_default\_context.get\_context().Process.\_Popen(process\_obj)  
File “/opt/conda/lib/python3.8/multiprocessing/context.py”, line 277, in \_Popen  
return Popen(process\_obj)  
File “/opt/conda/lib/python3.8/multiprocessing/popen\_fork.py”, line 19, in **init**  
self.\_launch(process\_obj)  
File “/opt/conda/lib/python3.8/multiprocessing/popen\_fork.py”, line 75, in \_launch  
code = process\_obj.\_bootstrap(parent\_sentinel=child\_r)  
File “/opt/conda/lib/python3.8/multiprocessing/process.py”, line 315, in \_bootstrap  
self.run()  
File “/opt/conda/lib/python3.8/multiprocessing/process.py”, line 108, in run  
self.\_target(\*self.\_args, \*\*self.\_kwargs)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/spacy/language.py”, line 2111, in \_apply\_pipes  
byte\_docs = [(doc.to\_bytes(), None) for doc in docs]  
File “/home/icat/.venv/play/lib/python3.8/site-packages/spacy/language.py”, line 2111, in   
byte\_docs = [(doc.to\_bytes(), None) for doc in docs]  
File “/home/icat/.venv/play/lib/python3.8/site-packages/spacy/util.py”, line 1526, in \_pipe  
for doc in docs:  
File “/home/icat/.venv/play/lib/python3.8/site-packages/spacy/util.py”, line 1516, in \_pipe  
yield from proc.pipe(docs, \*\*kwargs)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 338, in pipe  
yield from self.\_set\_meta\_anns(stream, batch\_size\_chars, config, id2category\_value)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 348, in \_set\_meta\_anns  
for docs in self.batch\_generator(stream, batch\_size\_chars):  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 308, in batch\_generator  
for doc in stream:  
File “/home/icat/.venv/play/lib/python3.8/site-packages/spacy/util.py”, line 1516, in \_pipe  
yield from proc.pipe(docs, \*\*kwargs)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 338, in pipe  
yield from self.\_set\_meta\_anns(stream, batch\_size\_chars, config, id2category\_value)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 348, in \_set\_meta\_anns  
for docs in self.batch\_generator(stream, batch\_size\_chars):  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 308, in batch\_generator  
for doc in stream:  
File “/home/icat/.venv/play/lib/python3.8/site-packages/spacy/util.py”, line 1516, in \_pipe  
yield from proc.pipe(docs, \*\*kwargs)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 338, in pipe  
yield from self.\_set\_meta\_anns(stream, batch\_size\_chars, config, id2category\_value)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/meta\_cat.py”, line 401, in \_set\_meta\_anns  
self.get\_error\_handler()(self.name, self, docs, e)  
File “/home/icat/.venv/play/lib/python3.8/site-packages/medcat/cat.py”, line 1424, in \_pipe\_error\_handler  
CAT.log.warning(e, exc\_info=True, stack\_info=True)
