[Rtk-users] SimpleRTK : help for defining a correct json file for CudaBackProjectionImageFilter
Yannick Boursier
boursier at cppm.in2p3.fr
Fri Dec 22 17:57:03 EST 2017
Really thanks a lot Simon. You're kind of Santa Claus :)
I will re-compile this night, we will see the results next week !
Best,
Yannick
Le 22/12/2017 à 23:54, Simon Rit a écrit :
> It depends on how you define normal... It hasn't been wrapped so it's
> expected but we should have wrapped it when creating the json file.
> You need to add
> },
> {
> "name" : "StepSize",
> "type" : "double",
> "default" : "1."
> after the line containing custom_itk_cast in the members section,
> i.e., before the curly bracket closing the Geometry section (which,
> after pasting, will close the StepSize section). Don't forget the note
> on the wiki about json files:
>
> *Note that you might need to rebuild the solution in order for CMake
> to take the changes into account.* Another solution is to manually
> delete the file SimpleRTK-prefix/src/SimpleRTK-stamp/SimpleRTK-configure.
>
> This wrapping is a bit annoying so we do it when we need to access one
> class or member. We will soon move to a new python wrapping which will
> hopefully be easier (this is the purpose of the RTK-ExternalModule
> branch on the repository). We'll keep you posted!
> Simon
>
> On Fri, Dec 22, 2017 at 11:42 PM, Yannick Boursier
> <boursier at cppm.in2p3.fr <mailto:boursier at cppm.in2p3.fr>> wrote:
>
> Ok thanks for this important precision.
>
> Just a remark, I don't have access to the SetStepSize() function
> through SimpleRTK. Is it normal ? Does it come from the .json file
> or the template ?
>
> Thanks in advance.
> Yannick
>
>
> Le 22/12/2017 à 23:34, Simon Rit a écrit :
>> No it doesn't, it's voxel based. The adjoint which uses the step
>> size is CudaRayCastBackProjectionImageFilter
>> <http://www.openrtk.org/Doxygen/classrtk_1_1CudaRayCastBackProjectionImageFilter.html>
>> but it's very slow and we never use it in practice because it's
>> not practical. When we want to use adjoint operators, we mainly
>> use the CPU version, with double precision when adjointness is
>> very important.
>> Simon
>>
>> On Fri, Dec 22, 2017 at 11:31 PM, Yannick Boursier
>> <boursier at cppm.in2p3.fr <mailto:boursier at cppm.in2p3.fr>> wrote:
>>
>> Hi Simon,
>>
>> Thank you a lot for your answer, I will try to put the step
>> size to the voxel size then (if I understand well). It seems
>> that the implementation of the CudaBackProjectionImageFilter
>> doesn't use any stepsize. I'll let you know.
>>
>> Merry Christmas to you,
>> Yannick
>>
>>
>> Le 22/12/2017 à 22:55, Simon Rit a écrit :
>>> Hi Yannick,
>>> I would just try to change the step size
>>> <http://www.openrtk.org/Doxygen/classrtk_1_1CudaForwardProjectionImageFilter.html#a93671bae5219bada43b9a00b6046dbed>.
>>> Indeed, the CPU version is the Joseph projector and it
>>> adapts automatically the step size to each ray for bilinear
>>> interpolation in each slice. The GPU version is a fixed step
>>> size combined with a trilinear interpolation.
>>> Merry Christmas to you,
>>> Simon
>>>
>>> On Fri, Dec 22, 2017 at 9:17 PM, Yannick Boursier
>>> <boursier at cppm.in2p3.fr <mailto:boursier at cppm.in2p3.fr>> wrote:
>>>
>>> Hi Cyril,
>>>
>>> Sorry for my late answer. First thank you because your
>>> last trick (removing <InpuImageType>) worked, I
>>> correctly compiled and installed everything.
>>>
>>> I am late because I thought that I did something wrong
>>> since when I tested the code by simply projecting then
>>> backprojecting a simple volume, the results between the
>>> CPU-codes and GPU-codes were different and the GPU
>>> result cas clearly wrong.
>>>
>>> I understood this morning the problem and put it in
>>> evidence : the CudaForwardProjectionImageFilter seems to
>>> be not adapted to the case when the size of voxels and
>>> pixels are not equal to 1 whereas the
>>> CudaBackProjectionImageFilter is OK for that !!
>>>
>>> I will try to debug it and let you know.
>>>
>>> I wish to all of you a Merry Christmas and relaxing
>>> holidays.
>>>
>>> Best ,
>>>
>>> Yannick
>>>
>>>
>>> Le 18/12/2017 à 16:52, Cyril Mory a écrit :
>>>>
>>>> Hi again Yannick,
>>>>
>>>> Simply removing the <InputImageType> on line 9 of your
>>>> .json file made it compile. I didn't test it yet. Let
>>>> us know if that works for you.
>>>>
>>>> Cyril
>>>>
>>>>
>>>> On 18/12/2017 16:31, Cyril Mory wrote:
>>>>>
>>>>> Hi Yannick,
>>>>>
>>>>> You seem to be in a hurry, so I'll start with an
>>>>> incomplete answer: the
>>>>> CudaForwardProjectionImageFilter is templated over its
>>>>> input and output image type, but the
>>>>> CudaBackProjectionImageFilter isn't (compare
>>>>> rtkCudaForwardProjectionImageFilter.h and
>>>>> rtkCudaBackProjectionImageFilter.h, there is not
>>>>> "template <>" before the class definition in
>>>>> ...Back..., while it is there in ...Forward...).
>>>>>
>>>>> I'm trying to modify your .json file accordingly,
>>>>> recompile and test, but I never use SimpleRTK myself,
>>>>> so you might find the solution before I do. If so,
>>>>> please report back on this mailing list.
>>>>>
>>>>> Cyril
>>>>>
>>>>>
>>>>> On 18/12/2017 16:07, Yannick BOURSIER wrote:
>>>>>> Hello all,
>>>>>>
>>>>>> I really need in "relative" emergency to execute the kernel CudaBackProjectionImageFilter using the Python Wrapper provided by SimpleRTK.
>>>>>> Unfortunately, this is not implemented in cuda (CudaForwardProjectionImageFilter is but not the BackProjection).
>>>>>>
>>>>>> I tried to define a json file (in attachement) on the base of CudaForwardProjectionImageFilter (since all the h, hxx, cxx, files I looked at seemed to be the same for these two kernels) but it does not compile (cmake instruction OK but not the make instruction) with the following error :
>>>>>>
>>>>>> /data/boursier/Compile/rtk-bin-extended/SimpleRTK-build/Code/BasicFilters/src/srtkCudaBackProjectionImageFilter.cxx: In member function ‘rtk::simple::Image rtk::simple::CudaBackProjectionImageFilter::ExecuteInternal(const rtk::simple::Image&, const rtk::simple::Image&)’:
>>>>>> /data/boursier/Compile/rtk-bin-extended/SimpleRTK-build/Code/BasicFilters/src/srtkCudaBackProjectionImageFilter.cxx:132:16: error: ‘rtk::CudaBackProjectionImageFilter’ is not a template
>>>>>> typedef rtk::CudaBackProjectionImageFilter<InputImageType> FilterType;
>>>>>>
>>>>>> I would very much appreciate some help please because at this point, I have no idea about the problem...
>>>>>> Thanks in advance,
>>>>>> Best regards,
>>>>>> Yannick Boursier
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Rtk-users mailing list
>>>>>> Rtk-users at public.kitware.com
>>>>>> <mailto:Rtk-users at public.kitware.com>
>>>>>> https://public.kitware.com/mailman/listinfo/rtk-users
>>>>>> <https://public.kitware.com/mailman/listinfo/rtk-users>
>>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> Rtk-users mailing list
>>> Rtk-users at public.kitware.com
>>> <mailto:Rtk-users at public.kitware.com>
>>> https://public.kitware.com/mailman/listinfo/rtk-users
>>> <https://public.kitware.com/mailman/listinfo/rtk-users>
>>>
>>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/rtk-users/attachments/20171222/2eb26ed6/attachment-0001.html>
More information about the Rtk-users
mailing list