Dense shape of an array.
Since all tiles are present in dense arrays, this shape has no data and and all checks return their logical result. The hope is that the compiler will optimize branches that use these checks.
Definition at line 53 of file dense_shape.h.
|
| DenseShape ()=default |
|
| DenseShape (const DenseShape &)=default |
|
| DenseShape (DenseShape &&)=default |
|
DenseShape & | operator= (const DenseShape &)=default |
|
DenseShape & | operator= (DenseShape &&)=default |
|
| ~DenseShape ()=default |
|
template<typename Real > |
| DenseShape (Real &&, const TiledRange &) |
|
DenseShape | mask (const DenseShape &) const |
|
template<typename PairRange , typename = std::enable_if_t<detail::is_gpair_range_v<PairRange>>> |
DenseShape | update_block (const PairRange &bounds, const DenseShape &other) const |
|
template<typename PairRange , typename = std::enable_if_t<detail::is_gpair_range_v<PairRange>>> |
DenseShape | block (const PairRange &bounds) const |
|
template<typename PairRange , typename Scalar , typename = std::enable_if_t<detail::is_gpair_range_v<PairRange> && detail::is_numeric_v<Scalar>>> |
DenseShape | block (const PairRange &bounds, const Scalar) const |
|
template<typename PairRange , typename = std::enable_if_t<detail::is_gpair_range_v<PairRange>>> |
DenseShape | block (const PairRange &bounds, const Permutation &) const |
|
template<typename PairRange , typename Scalar , typename = std::enable_if_t<detail::is_gpair_range_v<PairRange> && detail::is_numeric_v<Scalar>>> |
DenseShape | block (const PairRange &bounds, const Scalar, const Permutation &) const |
|
template<typename Archive > |
void | serialize (const Archive &ar) const |
|
|
static void | collective_init (World &) |
| Collective initialization of a shape. More...
|
|
static constexpr bool | validate (const Range &) |
| Validate shape range. More...
|
|
template<typename Index > |
static constexpr bool | is_zero (const Index &) |
| Check that a tile is zero. More...
|
|
static constexpr bool | is_dense () |
| Check density. More...
|
|
static constexpr float | sparsity () |
| Sparsity fraction. More...
|
|
static value_type | threshold () |
| Threshold accessor. More...
|
|
static void | threshold (const value_type thresh) |
| Set threshold to thresh . More...
|
|
static constexpr bool | empty () |
| Check if the shape is empty (uninitialized) More...
|
|
template<typename Index1 , typename Index2 , typename = std::enable_if_t<detail::is_integral_range_v<Index1> && detail::is_integral_range_v<Index2>>> |
static DenseShape | update_block (const Index1 &, const Index2 &, const DenseShape &) |
|
template<typename Index1 , typename Index2 , typename = std::enable_if_t<std::is_integral_v<Index1> && std::is_integral_v<Index2>>> |
static DenseShape | update_block (const std::initializer_list< Index1 > &, const std::initializer_list< Index2 > &, const DenseShape &) |
|
template<typename Index , typename = std::enable_if_t<std::is_integral_v<Index>>> |
static DenseShape | update_block (const std::initializer_list< std::initializer_list< Index >> &, const DenseShape &) |
|
template<typename Index1 , typename Index2 , typename = std::enable_if_t<detail::is_integral_range_v<Index1> && detail::is_integral_range_v<Index2>>> |
static DenseShape | block (const Index1 &, const Index2 &) |
|
template<typename Index1 , typename Index2 , typename = std::enable_if_t<std::is_integral_v<Index1> && std::is_integral_v<Index2>>> |
static DenseShape | block (const std::initializer_list< Index1 > &, const std::initializer_list< Index2 > &) |
|
template<typename Index , typename = std::enable_if_t<std::is_integral_v<Index>>> |
static DenseShape | block (const std::initializer_list< std::initializer_list< Index >> &) |
|
template<typename Index1 , typename Index2 , typename Scalar , typename = std::enable_if_t<detail::is_integral_range_v<Index1> && detail::is_integral_range_v<Index2> && detail::is_numeric_v<Scalar>>> |
static DenseShape | block (const Index1 &, const Index2 &, const Scalar) |
|
template<typename Index1 , typename Index2 , typename Scalar , typename = std::enable_if_t<std::is_integral_v<Index1> && std::is_integral_v<Index2> && detail::is_numeric_v<Scalar>>> |
static DenseShape | block (const std::initializer_list< Index1 > &, const std::initializer_list< Index2 > &, const Scalar) |
|
template<typename Index , typename Scalar , typename = std::enable_if_t<std::is_integral_v<Index> && detail::is_numeric_v<Scalar>>> |
static DenseShape | block (const std::initializer_list< std::initializer_list< Index >> &, const Scalar) |
|
template<typename Index1 , typename Index2 , typename = std::enable_if_t<detail::is_integral_range_v<Index1> && detail::is_integral_range_v<Index2>>> |
static DenseShape | block (const Index1 &, const Index2 &, const Permutation &) |
|
template<typename Index1 , typename Index2 , typename = std::enable_if_t<std::is_integral_v<Index1> && std::is_integral_v<Index2>>> |
static DenseShape | block (const std::initializer_list< Index1 > &, const std::initializer_list< Index2 > &, const Permutation &) |
|
template<typename Index , typename = std::enable_if_t<std::is_integral_v<Index>>> |
static DenseShape | block (const std::initializer_list< std::initializer_list< Index >> &, const Permutation &) |
|
template<typename Index1 , typename Index2 , typename Scalar , typename = std::enable_if_t<detail::is_integral_range_v<Index1> && detail::is_integral_range_v<Index2> && detail::is_numeric_v<Scalar>>> |
static DenseShape | block (const Index1 &, const Index2 &, const Scalar, const Permutation &) |
|
template<typename Index1 , typename Index2 , typename Scalar , typename = std::enable_if_t<std::is_integral_v<Index1> && std::is_integral_v<Index2> && detail::is_numeric_v<Scalar>>> |
static DenseShape | block (const std::initializer_list< Index1 > &, const std::initializer_list< Index2 > &, const Scalar, const Permutation &) |
|
template<typename Index , typename Scalar , typename = std::enable_if_t<std::is_integral_v<Index> && detail::is_numeric_v<Scalar>>> |
static DenseShape | block (const std::initializer_list< std::initializer_list< Index >> &, const Scalar, const Permutation &) |
|
static DenseShape | perm (const Permutation &) |
|
template<typename Scalar > |
static DenseShape | scale (const Scalar) |
|
template<typename Scalar > |
static DenseShape | scale (const Scalar, const Permutation &) |
|
static DenseShape | add (const DenseShape &) |
|
static DenseShape | add (const DenseShape &, const Permutation &) |
|
template<typename Scalar > |
static DenseShape | add (const DenseShape &, const Scalar) |
|
template<typename Scalar > |
static DenseShape | add (const DenseShape &, const Scalar, const Permutation &) |
|
template<typename Scalar > |
static DenseShape | add (const Scalar) |
|
template<typename Scalar > |
static DenseShape | add (const Scalar, const Permutation &) |
|
static DenseShape | subt (const DenseShape &) |
|
static DenseShape | subt (const DenseShape &, const Permutation &) |
|
template<typename Scalar > |
static DenseShape | subt (const DenseShape &, const Scalar) |
|
template<typename Scalar > |
static DenseShape | subt (const DenseShape &, const Scalar, const Permutation &) |
|
template<typename Scalar > |
static DenseShape | subt (const Scalar) |
|
template<typename Scalar > |
static DenseShape | subt (const Scalar, const Permutation &) |
|
static DenseShape | mult (const DenseShape &) |
|
static DenseShape | mult (const DenseShape &, const Permutation &) |
|
template<typename Scalar > |
static DenseShape | mult (const DenseShape &, const Scalar) |
|
template<typename Scalar > |
static DenseShape | mult (const DenseShape &, const Scalar, const Permutation &) |
|
template<typename Scalar > |
static DenseShape | gemm (const DenseShape &, const Scalar, const math::GemmHelper &) |
|
template<typename Scalar > |
static DenseShape | gemm (const DenseShape &, const Scalar, const math::GemmHelper &, const Permutation &) |
|