27 #ifndef LBANN_UTILS_DNN_LIB_OPENMP_HPP 28 #define LBANN_UTILS_DNN_LIB_OPENMP_HPP 34 #include <h2/meta/Core.hpp> 35 #include <h2/meta/TypeList.hpp> 45 static constexpr
auto device = El::Device::CPU;
67 static constexpr
auto device = backend_type::device;
118 template <
typename DimT>
127 template <
typename... IntTs>
130 #if !(defined LBANN_HAS_CUDNN) 134 std::vector<int>
const& )
136 #endif // !LBANN_HAS_CUDNN 140 template <
typename DataT,
typename ScalarT>
143 El::Matrix<DataT, device>
const& x,
144 ScalarT
const& beta_in,
146 El::Matrix<DataT, device>& y,
147 El::SyncInfo<device>
const& si,
151 template <
typename DataT,
typename ScalarT>
154 El::Matrix<DataT, device>
const& x,
155 ScalarT
const& beta_in,
157 El::Matrix<DataT, device>& y,
158 El::SyncInfo<device>
const& si,
164 template <
typename DataT,
typename ScalarT>
167 El::Matrix<DataT, device>
const& y,
169 El::Matrix<DataT, device>
const& dy,
170 ScalarT
const& beta_in,
172 El::Matrix<DataT, device>& dx,
173 El::SyncInfo<device>
const& si,
177 template <
typename DataT,
typename ScalarT>
180 El::Matrix<DataT, device>
const& y,
182 El::Matrix<DataT, device>
const& dy,
183 ScalarT
const& beta_in,
185 El::Matrix<DataT, device>& dx,
186 El::SyncInfo<device>
const& si,
196 #endif // LBANN_UTILS_DNN_LIB_OPENMP_HPP DNN library backend for hand-rolled, OMP-based implementations.
static void softmax_forward(ScalarT const &alpha_in, TensorDescriptor const &xDesc, El::Matrix< DataT, device > const &x, ScalarT const &beta_in, TensorDescriptor const &yDesc, El::Matrix< DataT, device > &y, El::SyncInfo< device > const &si, softmax_mode mode, softmax_alg alg=softmax_alg::ACCURATE)
dnnTensorDescriptor_t release() noexcept
Return DNN library object and release ownership.
void reset(dnnTensorDescriptor_t)
Take ownership of DNN library object.
softmax_alg
Internal LBANN names for supported softmax algorithms.
static void logsoftmax_forward(ScalarT const &alpha_in, TensorDescriptor const &xDesc, El::Matrix< DataT, device > const &x, ScalarT const &beta_in, TensorDescriptor const &yDesc, El::Matrix< DataT, device > &y, El::SyncInfo< device > const &si, softmax_mode mode)
static void softmax_backward(ScalarT const &alpha_in, TensorDescriptor const &yDesc, El::Matrix< DataT, device > const &y, TensorDescriptor const &dyDesc, El::Matrix< DataT, device > const &dy, ScalarT const &beta_in, TensorDescriptor const &dxDesc, El::Matrix< DataT, device > &dx, El::SyncInfo< device > const &si, softmax_mode mode, softmax_alg alg=softmax_alg::ACCURATE)
static void logsoftmax_backward(ScalarT const &alpha_in, TensorDescriptor const &yDesc, El::Matrix< DataT, device > const &y, TensorDescriptor const &dyDesc, El::Matrix< DataT, device > const &dy, ScalarT const &beta_in, TensorDescriptor const &dxDesc, El::Matrix< DataT, device > &dx, El::SyncInfo< device > const &si, softmax_mode mode, softmax_alg alg=softmax_alg::ACCURATE)
void create() noexcept
Create DNN library object.
softmax_mode
Which tensor dimensions to apply softmax over.
static constexpr auto device