ITK  5.4.0
Insight Toolkit
itkGPUDenseFiniteDifferenceImageFilter.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef itkGPUDenseFiniteDifferenceImageFilter_h
19#define itkGPUDenseFiniteDifferenceImageFilter_h
20
23
24namespace itk
25{
27class ITKGPUFiniteDifference_EXPORT itkGPUKernelMacro(GPUDenseFiniteDifferenceImageFilterKernel);
28
52template <typename TInputImage,
53 typename TOutputImage,
55class ITK_TEMPLATE_EXPORT GPUDenseFiniteDifferenceImageFilter
56 : public GPUFiniteDifferenceImageFilter<TInputImage, TOutputImage, TParentImageFilter>
57{
58public:
59 ITK_DISALLOW_COPY_AND_MOVE(GPUDenseFiniteDifferenceImageFilter);
60
64 using CPUSuperclass = TParentImageFilter;
67
69 itkOverrideGetNameOfClassMacro(GPUDenseFiniteDifferenceImageFilter);
70
75
78 static constexpr unsigned int ImageDimension = GPUSuperclass::ImageDimension;
79
83
86
89
90#ifdef ITK_USE_CONCEPT_CHECKING
91 // Begin concept checking
93 itkConceptMacro(OutputAdditiveOperatorsCheck, (Concept::AdditiveOperators<PixelType>));
95 // End concept checking
96#endif
97
99 itkGetOpenCLSourceFromKernelMacro(GPUDenseFiniteDifferenceImageFilterKernel);
100
101protected:
104 void
105 PrintSelf(std::ostream & os, Indent indent) const override;
106
109 void
110 ApplyUpdate(const TimeStepType & dt) override;
111
112 void
113 GPUApplyUpdate(const TimeStepType & dt) override;
114
119
123 void
125
130 {
131 return CPUSuperclass::GetUpdateBuffer();
132 }
133
136 void
138
139 /* GPU kernel handle for GPUApplyUpdate */
140 int m_ApplyUpdateGPUKernelHandle{};
141};
142} // end namespace itk
143
144#ifndef ITK_MANUAL_INSTANTIATION
145# include "itkGPUDenseFiniteDifferenceImageFilter.hxx"
146#endif
147
148#endif
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
void GPUApplyUpdate(const TimeStepType &dt) override
void PrintSelf(std::ostream &os, Indent indent) const override
void ApplyUpdate(const TimeStepType &dt) override
~GPUDenseFiniteDifferenceImageFilter() override=default
itkGetOpenCLSourceFromKernelMacro(GPUDenseFiniteDifferenceImageFilterKernel)
TimeStepType GPUCalculateChange() override
Base class for GPU Finite Difference Image Filters.
typename GPUFiniteDifferenceFunction< TOutputImage >::DifferenceFunctionType FiniteDifferenceFunctionType
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
Base class for all process objects that output image data.
TOutputImage OutputImageType
Control indentation during Print() invocation.
Definition: itkIndent.h:50
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
class ITKGPUFiniteDifference_EXPORT itkGPUKernelMacro(GPUDenseFiniteDifferenceImageFilterKernel)