3#if _MSC_VER >= 1900 && defined(_M_X64)
5#include "BackendBase.h"
14 class CCuda_ComputationalGraphSoftmax_Cudnn;
18 class FL_EXPORT CTensor;
21 class FL_EXPORT CBackendSoftmax :
public CBackendBase<T>
25 CBackendSoftmax(
const CBackendSoftmax<T>& bl);
26 virtual ~CBackendSoftmax();
28 virtual const CResult SoftmaxCPU(
const CTensor<T>* pTsrInput, CTensor<T>* pTsrResult, int64_t i64Axis);
29 virtual const CResult SoftmaxCuda(
const CTensor<T>* pTsrInput, CTensor<T>* pTsrResult, int64_t i64Axis);
31 virtual const CResult SoftmaxBackwardCPU(
const CTensor<T>* pTsrDy,
const CTensor<T>* pTsrY, CTensor<T>* pTsrDx, int64_t i64Axis,
bool bAddGradients =
false);
32 virtual const CResult SoftmaxBackwardCuda(
const CTensor<T>* pTsrDy,
const CTensor<T>* pTsrY, CTensor<T>* pTsrDx, int64_t i64Axis,
bool bAddGradients =
false);
34 DeclareGetClassType();
35 SupportToDuplicateObjectWithoutCreateNewObject(CBackendSoftmax<T>, *
this);
39 CCuda_ComputationalGraphSoftmax_Cudnn<T>* m_cudnn;