18 #ifndef TMVA_DNN_CNN_DESCRIPTORS 
   19 #define TMVA_DNN_CNN_DESCRIPTORS 
   29    virtual ~TDescriptors() {}
 
   33 template <
typename Layer_t>
 
   34 struct TDNNGenDescriptors : 
public TMVA::DNN::TDescriptors {
 
   35    using HelperDescriptor_t = 
typename Layer_t::HelperDescriptor_t;
 
   37    HelperDescriptor_t HelperDescriptor;
 
   47 template <
typename Layer_t>
 
   48 struct TCNNDescriptors : 
public TMVA::DNN::TDescriptors {
 
   49    using LayerDescriptor_t = 
typename Layer_t::LayerDescriptor_t; 
 
   50    using HelperDescriptor_t = 
typename Layer_t::HelperDescriptor_t; 
 
   51    using WeightsDescriptor_t = 
typename Layer_t::WeightsDescriptor_t; 
 
   53    LayerDescriptor_t LayerDescriptor;
 
   54    HelperDescriptor_t HelperDescriptor;
 
   55    WeightsDescriptor_t WeightsDescriptor;
 
   58 template <
typename Layer_t>
 
   59 struct TCNNWorkspace : 
public TMVA::DNN::TWorkspace {
 
   60    using AlgorithmForward_t = 
typename Layer_t::AlgorithmForward_t;   
 
   61    using AlgorithmBackward_t = 
typename Layer_t::AlgorithmBackward_t; 
 
   62    using AlgorithmHelper_t = 
typename Layer_t::AlgorithmHelper_t;     
 
   64    using ReduceTensorDescriptor_t = 
typename Layer_t::ReduceTensorDescriptor_t;
 
   66    using AlgorithmDataType_t = 
typename Layer_t::AlgorithmDataType_t;
 
   68    AlgorithmForward_t AlgorithmForward;
 
   69    AlgorithmBackward_t AlgorithmBackward;
 
   70    AlgorithmHelper_t HelperAlgorithm;
 
   72    AlgorithmDataType_t DataType;
 
   74    size_t *ForwardWorkspace;
 
   75    size_t *BackwardWorkspace;
 
   76    size_t *HelperWorkspace;
 
   78    void *fReductionWorkspace = 
nullptr;
 
   80    size_t ForwardWorkspaceSize;
 
   81    size_t BackwardWorkspaceSize;
 
   82    size_t HelperWorkspaceSize;
 
   83    size_t fReductionWorkspaceSize = 0;
 
   85    ReduceTensorDescriptor_t fReduceTensorDesc;