FLImaging 6.5.8.1
AlgorithmBase.h
1#pragma once
2
12namespace FLImaging
13{
15 namespace Foundation
16 {
26 {
31
36
43
44
59
62 };
63
71 class FL_EXPORT CAlgorithmBase : public Base::CFLBase
72 {
73 public:
74
83
94
105
111
123 virtual const CResult Assign(const CAlgorithmBase& pufb);
124
136 virtual const CResult Assign(const CAlgorithmBase* pPufb);
137
147 virtual const CAlgorithmBase& operator=(const CAlgorithmBase& pufb);
148
158 virtual const CResult Clear();
159
171 virtual const CResult Execute();
172
185
193 virtual int32_t GetOptimalThreadCount() const;
194
202 virtual int64_t GetRequiredGPUMemory() const;
203
204
205 SupportToDuplicateAbstractObject(CAlgorithmBase);
206 DeclareGetClassType();
207
208 protected:
209
210 virtual const CResult InitializeProcessingUnit(bool bCheckCudaMemoryAvailable = false);
211 virtual bool IsOptimalProcessingUnitEnabled() const;
212
213 FLImaging::Foundation::EProcessingUnitFeatures m_eRequiredProcessingUnitFeatures;
214 int32_t m_i32RequiredThreadCount;
215 };
216 }
217}
Top-level base class of FLImaging.
Definition FLBase.h:36
FLImaging module execution result object.
Definition ResultsDef.h:1514
Processing unit base class required by algorithm.
Definition AlgorithmBase.h:72
virtual int64_t GetRequiredGPUMemory() const
virtual int32_t GetOptimalThreadCount() const
virtual FLImaging::Foundation::EProcessingUnitFeatures GetOptimalProcessingUnit() const
virtual const CResult Assign(const CAlgorithmBase *pPufb)
CAlgorithmBase(const CAlgorithmBase *pPufb)
Copy constructor (pointer)
virtual const CResult Execute()
virtual const CResult Assign(const CAlgorithmBase &pufb)
virtual const CAlgorithmBase & operator=(const CAlgorithmBase &pufb)
CAlgorithmBase(const CAlgorithmBase &pufb)
Copy constructor (reference)
CAlgorithmBase()
Default constructor.
EProcessingUnitFeatures
Processing Unit Features.
Definition AlgorithmBase.h:26
@ EProcessingUnitFeatures_Cuda
Definition AlgorithmBase.h:61
@ EProcessingUnitFeatures_Feature_Cuda
Definition AlgorithmBase.h:30
@ EProcessingUnitFeatures_Feature_AVX2
Definition AlgorithmBase.h:42
@ EProcessingUnitFeatures_CPU_Multi_AVX2
Definition AlgorithmBase.h:58
@ EProcessingUnitFeatures_None
Definition AlgorithmBase.h:46
@ EProcessingUnitFeatures_CPU_Multi_SSE4
Definition AlgorithmBase.h:56
@ EProcessingUnitFeatures_Feature_SerialProcessing
Definition AlgorithmBase.h:33
@ EProcessingUnitFeatures_Feature_SSE4
Definition AlgorithmBase.h:40
@ EProcessingUnitFeatures_Feature_CPU
Definition AlgorithmBase.h:28
@ EProcessingUnitFeatures_CPU_Multi_Naive
Definition AlgorithmBase.h:54
@ EProcessingUnitFeatures_CPU_SSE4
Definition AlgorithmBase.h:50
@ EProcessingUnitFeatures_Feature_Naive
Definition AlgorithmBase.h:38
@ EProcessingUnitFeatures_CPU_Naive
Definition AlgorithmBase.h:48
@ EProcessingUnitFeatures_CPU_AVX2
Definition AlgorithmBase.h:52
@ EProcessingUnitFeatures_Feature_ParallelProcessing
Definition AlgorithmBase.h:35