To avoid copying data to/from GPU all the time, CUDA managed pointers might come to the rescue. This would become more attractive once supported by parallelproj (WIP by @gschramm ). A possible strategy would then be
- change these to CUDA managed pointers to avoid them being copied every time.
|
std::vector<float> xstart; |
|
std::vector<float> xend; |
- somehow add optional argument to
Array etc to allocate with CUDA managed pointer (could probably be done by templating the allocator/destructor)
- make images by default CUDA-managed
- add CUDA numerical operations (either as member or global)
- replace some iterator-based loops for numerical operations of images with numerical operations
- investigate what happens with projection data.
To avoid copying data to/from GPU all the time, CUDA managed pointers might come to the rescue. This would become more attractive once supported by parallelproj (WIP by @gschramm ). A possible strategy would then be
STIR/src/include/stir/recon_buildblock/Parallelproj_projector/ParallelprojHelper.h
Lines 50 to 51 in b67c9f4
Arrayetc to allocate with CUDA managed pointer (could probably be done by templating the allocator/destructor)