15 #if defined(_HAS_CUDA_) 22 #if defined(_HAS_CUDA_) 23 struct cudnn_softmax_settings_t {
25 cudnnSoftmaxAlgorithm_t alg;
26 cudnnSoftmaxMode_t mode;
27 cudnnTensorDescriptor_t xdesc;
28 cudnnTensorDescriptor_t ydesc;
31 struct cudnn_softmax_grad_settings_t {
33 cudnnSoftmaxAlgorithm_t alg;
34 cudnnSoftmaxMode_t mode;
35 cudnnTensorDescriptor_t ydesc;
36 cudnnTensorDescriptor_t dydesc;
37 cudnnTensorDescriptor_t dxdesc;
42 void softmax(Tensor<T> *x, Tensor<T> *out);
45 void softmax_grad(Tensor<T> *softmax, Tensor<T> *grad, Tensor<T> *out);
47 #if defined(_HAS_CUDA_) 49 void softmax_device(Tensor<T> *x, Tensor<T> *out, cudnn_softmax_settings_t settings);
52 void softmax_grad_device(Tensor<T> *y, Tensor<T> *grad, Tensor<T> *out, cudnn_softmax_grad_settings_t settings);