-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parallelization for PET reconstruction of multiple frames leads to error #1283
Comments
Note: The error happens inside the setup of the scatter estimator. |
Sorry for the delay. I'm not familiar with Python multi-processing unfortunately. I don't know what it does with variables that go to a C/C++ interface. You'd hope that everything runs in subprocesses and is therefore independent (I don't think subprocesses can communicate), but I don't really know. As far as I know, neither SIRF nor STIR uses global variables (ok, STIR uses them for its "registries" for projectors/file formats etc, but that's irrelevant here). Possibly @evgueni-ovtchinnikov can comment. On the other hand, when STIR is compiled with OPENMP=ON (default when using the SuperBuild), a lot of operations will be multi-threaded already. I'd hope that this is now the majority, but possibly not. There's a danger that creating subprocesses AND multi-threading becomes less efficient. It might be good to do some monitoring (without the I think using |
Thank you for the reply. I understand. In general: Is there a standard API which I should use for dynamic reconstruction apart from the obvious |
If you have multiple machines, then you can run individual frames in parallel "by hand" of course.
not yet, unfortunately. |
Hello,
I am currently setting up a reconstruction for an fPET application, where I need to reconstruct a series of individual frames from listmode data of a Biograph mMR system.
I am using a docker container built on top of the latest version of
ghcr.io/synerbi/sirf
and for a single frame the reconstruction works just fine. To speed up the processing and utilize the machine properly, I tried to parallelize the reconstruction of individual frames using pythonsmultiprocessing
module. You can find my script here.However, it looks like the software is accessing some shared state in the background because only one of the frames works and I get the following error in the setup of the
ScatterEstimator
:Whilst the only difference is the
Time frame start - end (duration), all in secs:
field of the output, so I assume that this is saved in some shared place, which all the processes are accessing.Could anybody give me a hint how to set this up or would this be considered a bug?
Thank you for your help.
The text was updated successfully, but these errors were encountered: