32 template <
typename TensorDataType,
typename EvalDataType>
35 static std::unique_ptr<El::AbstractMatrix<EvalDataType>>
36 get(El::AbstractMatrix<TensorDataType>
const& x)
38 switch (x.GetDevice()) {
41 static_cast<El::Matrix<TensorDataType, El::Device::CPU> const&
>(x));
45 static_cast<El::Matrix<TensorDataType, El::Device::GPU> const&
>(x));
51 template <El::Device D>
52 static std::unique_ptr<El::Matrix<EvalDataType, D>>
53 get(El::Matrix<TensorDataType, D>
const& x)
55 auto ret = std::make_unique<El::Matrix<EvalDataType, D>>();
62 template <
typename DataType>
65 static std::unique_ptr<El::AbstractMatrix<DataType>>
66 get(El::AbstractMatrix<DataType>
const& x)
68 switch (x.GetDevice()) {
70 return get(
static_cast<El::Matrix<DataType, El::Device::CPU> const&
>(x));
73 return get(
static_cast<El::Matrix<DataType, El::Device::GPU> const&
>(x));
79 template <El::Device D>
80 static std::unique_ptr<El::Matrix<DataType, D>>
81 get(El::Matrix<DataType, D>
const& x)
83 auto ret = std::make_unique<El::Matrix<DataType, D>>();
84 El::LockedView(*ret, x);