LBANN  0.103.0
LivermoreBigArtificialNeuralNetworkToolkit
tensor_dims_utils.hpp File Reference
#include "lbann/utils/exception.hpp"
#include <algorithm>
#include <utility>
#include <vector>
Include dependency graph for tensor_dims_utils.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  lbann::NamedVector< T, Tag >
 

Namespaces

 lbann
 

Typedefs

template<typename IndexT >
using lbann::RowMajorDims = NamedVector< IndexT, struct RowMajorDimsTag >
 
template<typename IndexT >
using lbann::ColMajorDims = NamedVector< IndexT, struct ColMajorDimsTag >
 
template<typename IndexT >
using lbann::RowMajorStrides = NamedVector< IndexT, struct RowMajorStridesTag >
 
template<typename IndexT >
using lbann::ColMajorStrides = NamedVector< IndexT, struct ColMajorStridesTag >
 
using lbann::RowMajorPerm = NamedVector< int, struct RowMajorPermTag >
 
using lbann::ColMajorPerm = NamedVector< int, struct ColMajorPermTag >
 

Functions

template<typename IndexT >
void lbann::convert (RowMajorDims< IndexT > const &src, ColMajorDims< IndexT > &tgt)
 
template<typename IndexT >
void lbann::convert (ColMajorDims< IndexT > const &src, RowMajorDims< IndexT > &tgt)
 
template<typename IndexT >
void lbann::convert (RowMajorStrides< IndexT > const &src, ColMajorStrides< IndexT > &tgt)
 
template<typename IndexT >
void lbann::convert (ColMajorStrides< IndexT > const &src, RowMajorStrides< IndexT > &tgt)
 
void lbann::switch_perm_majorness (std::vector< int > const &in, std::vector< int > &out)
 
void lbann::convert (RowMajorPerm const &src, ColMajorPerm &tgt)
 
void lbann::convert (ColMajorPerm const &src, RowMajorPerm &tgt)
 
template<typename OutT , typename InT >
auto lbann::vec_convert (std::vector< InT > const &in)
 Copy the input vector to a new type. More...
 
Factory functions with type deduction
template<typename IndexT >
auto lbann::RowMajor (std::vector< IndexT > &&ds)
 
template<typename IndexT >
auto lbann::RowMajor (std::vector< IndexT > const &ds)
 
template<typename IndexT >
auto lbann::RowMajor (ColMajorDims< IndexT > const &dims)
 
template<typename IndexT >
auto lbann::RowMajor (RowMajorDims< IndexT > const &dims)
 
template<typename IndexT >
auto lbann::RowMajor (RowMajorDims< IndexT > &&dims)
 
template<typename IndexT >
auto lbann::ColMajor (std::vector< IndexT > &&ds)
 
template<typename IndexT >
auto lbann::ColMajor (std::vector< IndexT > const &ds)
 
template<typename IndexT >
auto lbann::ColMajor (RowMajorDims< IndexT > const &dims)
 
template<typename IndexT >
auto lbann::ColMajor (ColMajorDims< IndexT > const &dims)
 
template<typename IndexT >
auto lbann::ColMajor (ColMajorDims< IndexT > &&dims)
 
Computing (packed) stride information.
template<typename StrideT , typename DimT >
auto lbann::get_strides_as (ColMajorDims< DimT > const &dims)
 Compute packed strides of the given dimensions. More...
 
template<typename DimT >
auto lbann::get_strides (ColMajorDims< DimT > const &dims)
 Compute packed strides of the given dimensions. More...
 
Permutation helper functions
template<typename T >
bool lbann::check_perm_impl (std::vector< T > perm)
 Checks that the permutation is valid. More...
 
template<typename T >
auto lbann::invert_perm_impl (std::vector< T > const &perm)
 Returns the inverse of the given permutation. More...
 
template<typename IndexT , typename PermT >
auto lbann::permute_impl (std::vector< IndexT > const &in, std::vector< PermT > const &perm)
 
Public interface for permutation arrays
bool lbann::is_valid (RowMajorPerm const &perm)
 
bool lbann::is_valid (ColMajorPerm const &perm)
 
RowMajorPerm lbann::invert (RowMajorPerm const &in)
 
ColMajorPerm lbann::invert (ColMajorPerm const &in)
 
Permuting dimensions
template<typename IndexT >
auto lbann::permute_dims (RowMajorDims< IndexT > const &in, RowMajorPerm const &perm)
 
template<typename IndexT >
auto lbann::permute_dims (ColMajorDims< IndexT > const &in, ColMajorPerm const &perm)