listmode reconstruction speed-up: Distribute sensitivity calculation and caching#1030
Conversation
This is the first speed-up step
* parallel LM recon * todo: corrections
|
Now, LM reconstruction is shorter by several hours. |
*. The flag long_axial_fov will set the additive sinogram to either FromMemory or FromStream
|
Seriously, I don't know what its problem is. Both, in my laptop and PC it works fine. |
Accidentally I brought over some TOF code
|
From this point, we can store the cache on the disk, with a very minimal footprint and restore it on the next reconstruction. |
KrisThielemans
left a comment
There was a problem hiding this comment.
quick review, not complete
|
oops. probably some of these review-comments are outdated (as i hadn't pressed the button 1-2 days ago) |
|
No worries. But I would like to stress once more how much care you should have when you merge the TOF branch. If I fall into such trouble with a few mistaken lines .. chaos will follow. (let the record show that I write this on a Friday evening). |
…nAndListModeDataWithProjMatrixByBin.cxx Co-authored-by: Kris Thielemans <[email protected]>
|
OK, I finished with your first round of comments. |
robbietuk
left a comment
There was a problem hiding this comment.
Hopefully some of these comments can improve the code. I havent check the methodology thoroughly
Co-authored-by: robbietuk <[email protected]>
Co-authored-by: robbietuk <[email protected]>
*. Fixed openmp LM guard in InputStream *. New function for caching in objective function *. Clean ups
|
Hi Robbie, thank you for your comments and suggestions. I don't know if you want me to resolve the threads (as Kris) so I leave it you, if you are happy with the response. |
robbietuk
left a comment
There was a problem hiding this comment.
I have no major suggestions but I have not run it yet.
KrisThielemans
left a comment
There was a problem hiding this comment.
some house-keeping, but this almost done I believe.
2 questions:
- should we rename
long_axial_fovvariable toreduce_memory_usageor something? It's not so obvious what it means cache_sizeseems to overlap with other ways to stop. we have thenum_events_to_use. Do we really need another variable?
Co-authored-by: Kris Thielemans <[email protected]>
Co-authored-by: Kris Thielemans <[email protected]>
…nAndListModeDataWithProjMatrixByBin.cxx Co-authored-by: Kris Thielemans <[email protected]>
…nAndListModeDataWithProjMatrixByBin.cxx Co-authored-by: Kris Thielemans <[email protected]>
I made this distinction, because at some point in the future multiple cache files will be supported. |
…nAndListModeDataWithProjMatrixByBin.cxx Co-authored-by: Kris Thielemans <[email protected]>
* Housekeeping comments. * Helper structure ```BinWithCorr```. With this we can read the Additive projdata in parallel, as each bin is "bundled" with its respective correction. * Parallel reading of the additive factors. Too slow otherwise. * Can load multiple additive segments at each loop. Similar to LmToProjdata's segments in memory. - But I hardcode it to 1 for now. * Can skip balanced subsets, if you know that they are balanced. * Sensible information printing on sensitivity calculation.
|
At this point, I finished with all nonTOF features. Unless, github finds something wrong. @KrisThielemans I would like your input especially for the |
|
Looking good. I like the |
|
So, we are done here (until I find any bugs :P) |
NikEfth
left a comment
There was a problem hiding this comment.
I think we are good
This is the first speed-up step