22 #ifndef __LAYER_FORWARD_CONTAINER_BASE_H__
23 #define __LAYER_FORWARD_CONTAINER_BASE_H__
25 #include "algorithms/algorithm.h"
26 #include "data_management/data/tensor.h"
27 #include "services/daal_defines.h"
28 #include "algorithms/neural_networks/layers/layer_forward_types.h"
37 namespace neural_networks
60 class DAAL_EXPORT LayerContainerIfaceImpl :
public AnalysisContainerIface<batch>
63 LayerContainerIfaceImpl(daal::services::Environment::env *daalEnv = 0) : AnalysisContainerIface<batch>(daalEnv) {}
68 virtual services::Status setupCompute()
70 return services::Status();
73 virtual services::Status resetCompute()
75 return services::Status();
81 virtual services::Status allocateInput();
86 virtual services::Status initializeInput();
89 virtual services::Status completeInput();
106 template<ComputeMode mode,
107 typename sse2Container
108 DAAL_KERNEL_SSSE3_ONLY(
typename ssse3Container)
109 DAAL_KERNEL_SSE42_ONLY(typename sse42Container)
110 DAAL_KERNEL_AVX_ONLY(typename avxContainer)
111 DAAL_KERNEL_AVX2_ONLY(typename avx2Container)
112 DAAL_KERNEL_AVX512_mic_ONLY(typename avx512_micContainer)
113 DAAL_KERNEL_AVX512_ONLY(typename avx512Container)
115 class DAAL_EXPORT AlgorithmDispatchLayerContainer : public LayerContainerIfaceImpl
119 AlgorithmDispatchLayerContainer(daal::services::Environment::env *daalEnv);
120 virtual ~AlgorithmDispatchLayerContainer() {
delete _cntr; }
122 virtual services::Status compute() DAAL_C11_OVERRIDE
124 _cntr->setArguments(this->_in, this->_res, this->_par);
125 return _cntr->compute();
128 virtual services::Status setupCompute() DAAL_C11_OVERRIDE
130 _cntr->setArguments(this->_in, this->_res, this->_par);
131 return _cntr->setupCompute();
134 virtual services::Status resetCompute() DAAL_C11_OVERRIDE
136 return _cntr->resetCompute();
139 virtual services::Status allocateInput() DAAL_C11_OVERRIDE
141 _cntr->setArguments(this->_in, this->_res, this->_par);
142 return _cntr->allocateInput();
145 virtual services::Status initializeInput() DAAL_C11_OVERRIDE
147 _cntr->setArguments(this->_in, this->_res, this->_par);
148 return _cntr->initializeInput();
151 LayerContainerIfaceImpl *_cntr;
154 #define __DAAL_ALGORITHM_LAYER_CONTAINER(ContainerTemplate, ...) \
155 layers::forward::AlgorithmDispatchLayerContainer<batch, \
156 ContainerTemplate<__VA_ARGS__, sse2> \
157 DAAL_KERNEL_SSSE3_CONTAINER(ContainerTemplate, __VA_ARGS__) \
158 DAAL_KERNEL_SSE42_CONTAINER(ContainerTemplate, __VA_ARGS__) \
159 DAAL_KERNEL_AVX_CONTAINER(ContainerTemplate, __VA_ARGS__) \
160 DAAL_KERNEL_AVX2_CONTAINER(ContainerTemplate, __VA_ARGS__) \
161 DAAL_KERNEL_AVX512_mic_CONTAINER(ContainerTemplate, __VA_ARGS__) \
162 DAAL_KERNEL_AVX512_CONTAINER(ContainerTemplate, __VA_ARGS__)>
168 using interface1::AlgorithmDispatchLayerContainer;
169 using interface1::LayerContainerIfaceImpl;
daal
Definition: algorithm_base_common.h:31
daal::algorithms::AnalysisContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the analy...
Definition: analysis.h:53
daal::algorithms::neural_networks::layers::forward::interface1::AlgorithmDispatchLayerContainer::allocateInput
virtual services::Status allocateInput() DAAL_C11_OVERRIDE
Definition: layer_forward_container_base.h:139
daal::algorithms::neural_networks::layers::forward::interface1::AlgorithmDispatchLayerContainer::setupCompute
virtual services::Status setupCompute() DAAL_C11_OVERRIDE
Definition: layer_forward_container_base.h:128
daal::algorithms::neural_networks::layers::forward::interface1::AlgorithmDispatchLayerContainer
Implements a container to dispatch forward layers to cpu-specific implementations.
Definition: layer_forward_container_base.h:115
daal::algorithms::neural_networks::layers::forward::interface1::LayerContainerIfaceImpl::setupCompute
virtual services::Status setupCompute()
Definition: layer_forward_container_base.h:68
daal::algorithms::neural_networks::layers::forward::interface1::AlgorithmDispatchLayerContainer::initializeInput
virtual services::Status initializeInput() DAAL_C11_OVERRIDE
Definition: layer_forward_container_base.h:145
daal::algorithms::neural_networks::layers::forward::interface1::LayerContainerIfaceImpl
Provides methods of base container for forward layers. This class is associated with the daal::algori...
Definition: layer_forward_container_base.h:60
daal::ComputeMode
ComputeMode
Definition: daal_defines.h:104