Hi Simon, thank you for your swift reply and suggestions!
In fact I'm already using your snippet <https://github.com/SimonRit/RTK/blob/master/examples/FirstReconstruction/FirstCudaReconstruction.py#L64-L70> for cpu->gpu transfer. My main issue is using the existing cpu image when transfering back to cpu, which I have not been able to do. I can use the itk.ImageDuplicator for getting the data into RAM but I haven't found a way to point the itk.ImageDuplicator's *output* to an exisiting Image. It always creates a new Image and allocates new memory AFAIK. Once I can do that the next optimization step would be to also use an exisiting CudaImage (with according buffer) when transfering cpu->gpu, *contrary to your snippet.* For that I have found no way at all so far. To clarify, I do not want to perform my own CUDA computations. Using RTK's CUDA forward/backprojectors is the main feature I want to use from RTK. With *explicit* I mean doing the transfer myself instead of relying on RTK's implicit methods implied in the source code <https://github.com/SimonRit/RTK/blob/master/utilities/ITKCudaCommon/include/itkCudaImage.h#L32> . Best Clemens Am Mo., 8. Juli 2019 um 16:20 Uhr schrieb Simon Rit < [email protected]>: > Hi, > Conversion from Image to CudaImage is not optimal. The way I'm doing it > now is shown in an example in these few lines > <https://github.com/SimonRit/RTK/blob/master/examples/FirstReconstruction/FirstCudaReconstruction.py#L64-L70>. > I am aware of the problem and discussed it on the ITK forum > <https://discourse.itk.org/t/shadowed-functions-in-gpuimage-or-cudaimage/1614> > but I don't have a better solution yet. > I'm not sure what you mean by explicitely transferring data from/to GPU > but I guess you can always work with itk::Image and do your own CUDA > computations in the GenerateData of the ImageFilter if you don't like the > CudaImage mechanism. > I hope this helps, > Simon > > On Mon, Jul 8, 2019 at 10:06 PM C S <[email protected]> wrote: > >> Dear RTK users, >> >> I'm looking for a way to use exisiting ITK Images (either on GPU or in >> RAM) when transfering data from/to GPU. That is, not only re-using the >> Image object, but writing into the memory where its buffer is. >> >> Why: As I'm using the Python bindings, I guess this ties in with ITK >> wrapping the CudaImage type. In >> https://github.com/SimonRit/RTK/blob/master/utilities/ITKCudaCommon/include/itkCudaImage.h#L32 >> I >> read that the memory management is done implicitly and the CudaImage can be >> used with CPU filters. However when using the bindings, >> only rtk.BackProjectionImageFilter can be used with CudaImages. The other >> filters complain about not being wrapped for that type. >> >> That is why I want to explicitely transfer the data from/to GPU, but >> preferably using the exisiting Images and buffers. I can't rely on RTK >> managing GPU memory implicitly. >> >> >> Thank you very much for your help! >> Clemens >> >> >> _______________________________________________ >> Rtk-users mailing list >> [email protected] >> https://public.kitware.com/mailman/listinfo/rtk-users >> >
_______________________________________________ Rtk-users mailing list [email protected] https://public.kitware.com/mailman/listinfo/rtk-users
