IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseGpuProcessingAlgorithm.h
1 // BaseGpuProcessingAlgorithm.h:
3 // --------------------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_BASEGPUPROCESSINGALGORITHM_H__
16 #define __IPSDKBASEPROCESSING_BASEGPUPROCESSINGALGORITHM_H__
17 
19 #include <IPSDKBaseProcessing/Algorithm/Function/InstructionSetsIdentifier.h>
21 #include <IPSDKBaseProcessing/Processor/Instances/BaseSyncProcessor.h>
22 #include <vector>
23 
24 namespace ipsdk {
25 namespace processor {
26 
27 class DataTypeIdentifierColl;
28 class CudaFunctionSelector;
29 class CudaFunctionIdentifier;
30 
33 
35 {
36  // declare serial class
38 
39 // predefined public types
40 public:
43 
46 
49 
51  typedef BoolResult (BaseGpuProcessingAlgorithm::*FunctionType)();
52 
53 protected:
56 
57 public:
59  virtual ~BaseGpuProcessingAlgorithm() = 0;
60 
61 // methods
62 public:
63 
64 protected:
66  virtual const FunctionSelector& getFunctionSelector() const = 0;
67 
70  virtual void getDataTypeIdColl(DataTypeIdColl& dataTypeIdColl) const = 0;
71 
73  typedef std::vector<DataParserPtr> DataParserColl;
74 
78 
82 
83 private:
85  core::ExecResult execPreProcess();
86 
88  core::ExecResult execPostProcess();
89 
92  core::ExecResult mainProcess();
93 
95  BoolResult processMainData(const CudaFunctionIdentifier& functionId);
96 
97 // attributes
98 protected:
101 
102 };
103 
106 
107 } // end of namespace processor
108 } // end of namespace ipsdk
109 
110 #endif // __IPSDKBASEPROCESSING_BASEPROCESSINGALGORITHM_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
virtual core::ExecResult postProcess()
method called after processing
Definition: BaseGpuProcessingAlgorithm.h:81
DataTypeIdentifierColl DataTypeIdColl
data type identifier collection used by processing algorithm
Definition: BaseGpuProcessingAlgorithm.h:42
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
ipsdk::ipUInt64 _deviceIdx
GPU device index.
Definition: BaseGpuProcessingAlgorithm.h:100
std::vector< DataParserPtr > DataParserColl
collection of data parser
Definition: BaseGpuProcessingAlgorithm.h:73
virtual core::ExecResult preProcess()
method called before processing
Definition: BaseGpuProcessingAlgorithm.h:77
Base class for gpu processing algorithm.
Definition: BaseGpuProcessingAlgorithm.h:34
ProcessingResult< eExecutionResult > ExecResult
type used to retrieve an execution result
Definition: ProcessingTypes.h:65
Base class for synchronous processors.
Definition: BaseSyncProcessor.h:26
Class allowing to identify a processing function.
Definition: CudaFunctionIdentifier.h:34
Execution is successful.
Definition: ProcessingTypes.h:53
Definition of import/export macro for library.
ProcessingResult< bool > BoolResult
typedef for boolean results associated to a string description
Definition: ProcessingResultTypes.h:29
CudaFunctionSelector FunctionSelector
algorithm function selector type used by processing algorithm
Definition: BaseGpuProcessingAlgorithm.h:48
Predefined types for data parser management.
Class used for data type collection function identification.
Definition: DataTypeIdentifierColl.h:34
CudaFunctionIdentifier FunctionId
function identifier used by processing algorithm
Definition: BaseGpuProcessingAlgorithm.h:45
Definition: CudaFunctionSelector.h:28