Skip to content

Commit

Permalink
Setup wrapping infrastructure for Cuda classes
Browse files Browse the repository at this point in the history
  • Loading branch information
LucasGandel committed Nov 6, 2017
1 parent f2d2616 commit 154abe2
Show file tree
Hide file tree
Showing 19 changed files with 232 additions and 59 deletions.
3 changes: 2 additions & 1 deletion include/rtkBoellaardScatterCorrectionImageFilter.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@

#include "rtkBoellaardScatterCorrectionImageFilter.h"

#include <itkImageRegionIteratorWithIndex.h>
#include <itkImageRegionConstIterator.h>
#include <itkImageRegionIterator.h>

namespace rtk
{
Expand Down
4 changes: 2 additions & 2 deletions utilities/ITKCudaCommon/include/itkCudaImageDataManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

namespace itk
{
template < class TPixel, unsigned int NDimension > class CudaImage;
//template < class TPixel, unsigned int NDimension > class CudaImage;

/**
* \class CudaImageDataManager
Expand All @@ -44,7 +44,7 @@ class ITK_EXPORT CudaImageDataManager : public CudaDataManager
{
// allow CudaKernelManager to access Cuda buffer pointer
friend class CudaKernelManager;
friend class CudaImage< typename ImageType::PixelType, ImageType::ImageDimension >;
//friend class CudaImage< typename ImageType::PixelType, ImageType::ImageDimension >;

public:
typedef CudaImageDataManager Self;
Expand Down
5 changes: 5 additions & 0 deletions wrapping/itkCudaDataManager.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
if(RTK_USE_CUDA)

itk_wrap_simple_class("itk::CudaDataManager" POINTER)

endif()
14 changes: 14 additions & 0 deletions wrapping/itkCudaImage.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
if(RTK_USE_CUDA)

#-----------------------------------------------------------------------------
# itk::CudaImage : CI
#-----------------------------------------------------------------------------
itk_wrap_class("itk::CudaImage" POINTER_WITH_CONST_POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("${ITKM_${t}}${d}" "${ITKT_${t}}, ${d}")
endforeach()
endforeach()
itk_end_wrap_class()

endif()
13 changes: 13 additions & 0 deletions wrapping/itkCudaImageDataManager.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
if(RTK_USE_CUDA)

itk_wrap_include(itkCudaImage.h)

itk_wrap_class("itk::CudaImageDataManager" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>")
endforeach()
endforeach()
itk_end_wrap_class()

endif()
35 changes: 35 additions & 0 deletions wrapping/itkCudaImageToImageFilter.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
if(RTK_USE_CUDA)

#-- itk::ImageSource templates --
itk_wrap_class("itk::ImageSource" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}"
"itk::CudaImage<${ITKT_${t}}, ${d}>")
endforeach()
endforeach()
itk_end_wrap_class()

#-- itk::ImageToImageFilter templates --
itk_wrap_class("itk::ImageToImageFilter" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}CI${ITKM_${t}}${d}"
"itk::CudaImage<${ITKT_${t}}, ${d}>, itk::CudaImage<${ITKT_${t}}, ${d}>")
endforeach()
endforeach()
itk_end_wrap_class()

#-----------------------------------------------------------------------------
# itk::CudaImageToImageFilter
#-----------------------------------------------------------------------------
itk_wrap_class("itk::CudaImageToImageFilter" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}CI${ITKM_${t}}${d}"
"itk::CudaImage<${ITKT_${t}}, ${d}>, itk::CudaImage<${ITKT_${t}}, ${d}>")
endforeach()
endforeach()
itk_end_wrap_class()

endif()
34 changes: 34 additions & 0 deletions wrapping/itkCudaInPlaceImageFilter.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
if(RTK_USE_CUDA)

#-- itk::InPlaceImageFilter templates --
itk_wrap_class("itk::InPlaceImageFilter" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>")
endforeach()
endforeach()
itk_end_wrap_class()

#-- itk::CudaImageToImageFilter templates --
itk_wrap_class("itk::CudaImageToImageFilter" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}CI${ITKM_${t}}${d}IPIFCI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>, itk::CudaImage<${ITKT_${t}}, ${d}>, itk::InPlaceImageFilter< itk::CudaImage<${ITKT_${t}}, ${d}> >")
endforeach()
endforeach()
itk_end_wrap_class()

#-----------------------------------------------------------------------------
# itk::CudaImageToImageFilter
#-----------------------------------------------------------------------------
itk_wrap_class("itk::CudaInPlaceImageFilter" POINTER)
#itk_wrap_image_filter_combinations("${WRAP_ITK_REAL}" "${WRAP_ITK_REAL}")
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}CI${ITKM_${t}}${d}"
"itk::CudaImage<${ITKT_${t}}, ${d}>, itk::CudaImage<${ITKT_${t}}, ${d}>")
endforeach()
endforeach()
itk_end_wrap_class()

endif()
12 changes: 12 additions & 0 deletions wrapping/rtkADMMTotalVariationConeBeamReconstructionFilter.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#-----------------------------------------------------------------------------
# rtk::ADMMTotalVariationConeBeamReconstructionFilter
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::ADMMTotalVariationConeBeamReconstructionFilter" POINTER)

if(RTK_USE_CUDA)
itk_wrap_template("CIF3" "itk::CudaImage<${ITKT_F}, 3>")
else()
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1 3+)
endif()

itk_end_wrap_class()
12 changes: 12 additions & 0 deletions wrapping/rtkADMMWaveletsConeBeamReconstructionFilter.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#-----------------------------------------------------------------------------
# rtk::ADMMWaveletsConeBeamReconstructionFilter
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::ADMMWaveletsConeBeamReconstructionFilter" POINTER)

if(RTK_USE_CUDA)
itk_wrap_template("CIF3" "itk::CudaImage<${ITKT_F}, 3>")
else()
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1 3+)
endif()

itk_end_wrap_class()
18 changes: 18 additions & 0 deletions wrapping/rtkAmsterdamShroudImageFilter.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
itk_wrap_class("itk::ImageSource" POINTER)
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("ID2" "itk::Image<${ITKT_D}, 2>")
endforeach()
itk_end_wrap_class()

itk_wrap_class("itk::ImageToImageFilter" POINTER)
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("I${ITKM_${t}}3ID2" "itk::Image<${ITKT_${t}}, 3>, itk::Image<${ITKT_D}, 2>")
endforeach()
itk_end_wrap_class()

#-----------------------------------------------------------------------------
# rtk::AmsterdamShroudImageFilter
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::AmsterdamShroudImageFilter" POINTER)
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1 3+)
itk_end_wrap_class()
6 changes: 6 additions & 0 deletions wrapping/rtkBoellaardScatterCorrectionImageFilter.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#-----------------------------------------------------------------------------
# rtk::BoellaardScatterCorrectionImageFilter
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::BoellaardScatterCorrectionImageFilter" POINTER)
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1 3+)
itk_end_wrap_class()
12 changes: 12 additions & 0 deletions wrapping/rtkConjugateGradientConeBeamReconstructionFilter.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#-----------------------------------------------------------------------------
# rtk::ConjugateGradientConeBeamReconstructionFilter
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::ConjugateGradientConeBeamReconstructionFilter" POINTER)

if(RTK_USE_CUDA)
itk_wrap_template("CIF3" "itk::CudaImage<${ITKT_F}, 3>")
else()
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1 3+)
endif()

itk_end_wrap_class()
23 changes: 18 additions & 5 deletions wrapping/rtkConstantImageSource.wrap
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
itk_wrap_include(itkCudaImage.h)
if(RTK_USE_CUDA)
itk_wrap_include(itkCudaImage.h)
endif()

#-----------------------------------------------------------------------------
# rtk::ConstantImageSource
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::ConstantImageSource" POINTER)
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1)

foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>")
if(RTK_USE_CUDA)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>")
endforeach()
endforeach()
endforeach()
endif()

itk_end_wrap_class()

if(RTK_USE_CUDA)
#-----------------------------------------------------------------------------
# Templates to be used with rtk::CudaConstantImageSource
#-----------------------------------------------------------------------------
itk_wrap_class("itk::CudaImageToImageFilter" POINTER)
itk_wrap_template("CIF3CIF3CteISrcCIF3" "itk::CudaImage<${ITKT_F}, 3>, itk::CudaImage<${ITKT_F}, 3>, rtk::ConstantImageSource< itk::CudaImage<${ITKT_F}, 3> >")
itk_end_wrap_class()
endif()
17 changes: 3 additions & 14 deletions wrapping/rtkCudaConstantVolumeSource.wrap
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
#-----------------------------------------------------------------------------
#Add unexisting itk::CudaImageToImageFilter templates
#-----------------------------------------------------------------------------
itk_wrap_class("itk::CudaImageToImageFilter" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}CI${ITKM_${t}}${d}CteISrcCI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>, itk::CudaImage<${ITKT_${t}}, ${d}>, rtk::ConstantImageSource< itk::CudaImage<${ITKT_${t}}, ${d}> >")
endforeach()
endforeach()
itk_end_wrap_class()
if(RTK_USE_CUDA)

#-----------------------------------------------------------------------------
# rtk::CudaConstantVolumeSource
#-----------------------------------------------------------------------------
itk_wrap_simple_class("rtk::CudaConstantVolumeSource" POINTER)
itk_wrap_simple_class("rtk::CudaConstantVolumeSource" POINTER)

endif()
27 changes: 3 additions & 24 deletions wrapping/rtkCudaDisplacedDetectorImageFilter.wrap
Original file line number Diff line number Diff line change
@@ -1,26 +1,5 @@
if(RTK_USE_CUDA)

#-----------------------------------------------------------------------------
#Add unexisting itk::CudaImageToImageFilter templates
#-----------------------------------------------------------------------------
itk_wrap_class("itk::CudaImageToImageFilter" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}CI${ITKM_${t}}${d}DiDIFCI${ITKM_${t}}${d}"
"itk::CudaImage<${ITKT_${t}}, ${d}>, itk::CudaImage<${ITKT_${t}}, ${d}>, rtk::DisplacedDetectorImageFilter< itk::CudaImage<${ITKT_${t}}, ${d}> >")
endforeach()
endforeach()
itk_end_wrap_class()

itk_wrap_class("itk::CudaInPlaceImageFilter" POINTER)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}CI${ITKM_${t}}${d}DDIFCI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>, itk::CudaImage<${ITKT_${t}}, ${d}>, rtk::DisplacedDetectorImageFilter< itk::CudaImage<${ITKT_${t}}, ${d}> >")
endforeach()
endforeach()
itk_end_wrap_class()

#-----------------------------------------------------------------------------
# rtk::CudaConstantVolumeSource
#-----------------------------------------------------------------------------
itk_wrap_simple_class("rtk::CudaDisplacedDetectorImageFilter" POINTER)
itk_wrap_simple_class("rtk::CudaDisplacedDetectorImageFilter" POINTER)

endif()
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
# rtk::DisplacedDetectorForOffsetFieldOfViewImageFilter
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::DisplacedDetectorForOffsetFieldOfViewImageFilter" POINTER)
#WARNING: Only wrapping one image template because TInputImage == TOutputImage
#Only wrapping one image template because TInputImage == TOutputImage
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1)
itk_end_wrap_class()
27 changes: 22 additions & 5 deletions wrapping/rtkDisplacedDetectorImageFilter.wrap
Original file line number Diff line number Diff line change
@@ -1,15 +1,32 @@
itk_wrap_include(itkCudaImage.h)
if(RTK_USE_CUDA)
itk_wrap_include(itkCudaImage.h)
endif()

#-----------------------------------------------------------------------------
# rtk::DisplacedDetectorImageFilter
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::DisplacedDetectorImageFilter" POINTER)
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1)

foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>")
if(RTK_USE_CUDA)
foreach(d ${ITK_WRAP_IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("CI${ITKM_${t}}${d}" "itk::CudaImage<${ITKT_${t}}, ${d}>")
endforeach()
endforeach()
endforeach()
endif()

itk_end_wrap_class()

if(RTK_USE_CUDA)
#-----------------------------------------------------------------------------
# Templates to be used with rtk::CudaDisplacedDetectorImageFilter
#-----------------------------------------------------------------------------
itk_wrap_class("itk::CudaImageToImageFilter" POINTER)
itk_wrap_template("CIF3CIF3DDCIF3" "itk::CudaImage<${ITKT_F}, 3>, itk::CudaImage<${ITKT_F}, 3>, rtk::DisplacedDetectorImageFilter< itk::CudaImage<${ITKT_F}, 3> >")
itk_end_wrap_class()

itk_wrap_class("itk::CudaInPlaceImageFilter" POINTER)
itk_wrap_template("CIF3CIF3DDCIF3" "itk::CudaImage<${ITKT_F}, 3>, itk::CudaImage<${ITKT_F}, 3>, rtk::DisplacedDetectorImageFilter< itk::CudaImage<${ITKT_F}, 3> >")
itk_end_wrap_class()
endif()
15 changes: 8 additions & 7 deletions wrapping/rtkFFTConvolutionImageFilter.wrap
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
itk_wrap_class("rtk::FFTConvolutionImageFilter" POINTER)
set(IMAGE_DIMS 3) #Only wrap for 3D images because of rtkFDKConeBeamReconstructionFilter dimension restriction
foreach(d ${IMAGE_DIMS})
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("I${ITKM_${t}}${d}I${ITKM_${t}}${d}${ITKM_D}" "itk::Image<${ITKT_${t}}, ${d}>, itk::Image<${ITKT_${t}}, ${d}>, ${ITKT_D}")
endforeach()
endforeach()
itk_wrap_include( rtkFFTConvolutionImageFilter.h )
itk_wrap_include( itkImage.h )

itk_wrap_named_class("rtk::FFTConvolutionImageFilter" rtkFFTConvolutionImageFilter POINTER)
foreach(t ${WRAP_ITK_REAL})
itk_wrap_template("I${ITKM_${t}}3I${ITKM_${t}}3${ITKM_D}"
"itk::Image<${ITKT_${t}}, 3>, itk::Image<${ITKT_${t}}, 3>, ${ITKT_D}")
endforeach()
itk_end_wrap_class()
12 changes: 12 additions & 0 deletions wrapping/rtkIterativeConeBeamReconstructionFilter.wrap
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#-----------------------------------------------------------------------------
# rtk::IterativeConeBeamReconstructionFilter
#-----------------------------------------------------------------------------
itk_wrap_class("rtk::IterativeConeBeamReconstructionFilter" POINTER)

if(RTK_USE_CUDA)
itk_wrap_template("CIF3" "itk::CudaImage<${ITKT_F}, 3>")
else()
itk_wrap_image_filter("${WRAP_ITK_REAL}" 1 3+)
endif()

itk_end_wrap_class()

0 comments on commit 154abe2

Please sign in to comment.