tensor_descriptor.hpp Source File#
tensor_description/tensor_descriptor.hpp
Go to the documentation of this file.
284 __host__ __device__ constexpr const auto& GetIndexDiff() const { return GetVisibleIndexDiff(); }
531 set_container_subset(idx_hidden, TensorDesc::GetVisibleDimensionIds(), idx_hidden_pick_visible);
Definition ck.hpp:268
__host__ __device__ constexpr auto container_concat(const X &x, const Ys &... ys)
Definition utility/container_helper.hpp:320
__host__ __device__ constexpr auto make_tensor_coordinate_step(const TensorDesc &, const VisibleIndex &idx_diff_visible, UpdateLowerIndexHack)
Definition tensor_description/tensor_descriptor.hpp:444
__host__ __device__ constexpr void move_tensor_coordinate(const TensorDesc &tensor_desc, TensorCoord &coord, const TensorCoordStep &coord_step)
Definition tensor_description/tensor_descriptor.hpp:508
decltype(make_tensor_coordinate_step( TensorDesc{}, MultiIndex< remove_cvref_t< TensorDesc >::GetNumOfDimension()>{})) TensorCoordinateStep_t
Definition tensor_description/tensor_descriptor.hpp:612
__host__ __device__ constexpr bool coordinate_has_valid_offset_assuming_visible_index_is_valid(const TensorDesc &tensor_desc, const TensorCoord &coord)
Definition tensor_description/tensor_descriptor.hpp:560
__host__ __device__ constexpr auto transform_sequences(F f, Sequence< Xs... >)
Definition utility/sequence.hpp:774
__host__ __device__ constexpr auto transform_tuples(F f, const X &x)
Definition tuple_helper.hpp:98
__host__ __device__ constexpr auto generate_sequence_v2(F &&f, Number< N >)
Definition sequence_helper.hpp:25
decltype(make_tensor_coordinate( TensorDesc{}, MultiIndex< remove_cvref_t< TensorDesc >::GetNumOfDimension()>{})) TensorCoordinate_t
Definition tensor_description/tensor_descriptor.hpp:608
__host__ __device__ constexpr auto get_container_subset(const Array< T, N > &arr, Sequence< Is... >)
Definition utility/container_helper.hpp:346
__host__ __device__ constexpr auto make_zero_multi_index()
Definition array_multi_index.hpp:21
__host__ __device__ constexpr auto container_reduce(const Container &x, Reduce reduce, Init init, Number< IBegin >=Number< 0 >{}, Number< IEnd >=Number< Container::Size()>{}, Number< IStep >=Number< 1 >{})
Definition utility/container_helper.hpp:111
__host__ __device__ constexpr auto generate_tuple(F &&f, Number< N >)
Definition tuple_helper.hpp:21
typename remove_reference< T >::type remove_reference_t
Definition type.hpp:292
__host__ __device__ constexpr auto make_tuple(Xs &&... xs)
Definition utility/tuple.hpp:211
__host__ __device__ constexpr auto generate_sequence(F, Number< N >)
Definition sequence_helper.hpp:18
__host__ __device__ constexpr auto transform_tensor_descriptor(const OldTensorDescriptor &old_tensor_desc, const NewTransforms &new_transforms, NewLowerDimensionOldVisibleIdss, NewUpperDimensionNewVisibleIdss)
Definition tensor_description/tensor_descriptor.hpp:319
__host__ __device__ constexpr bool coordinate_has_valid_offset(const TensorDesc &tensor_desc, const TensorCoord &coord)
Definition tensor_description/tensor_descriptor.hpp:587
__host__ __device__ constexpr void set_container_subset(Array< T, N > &y, Sequence< Is... > picks, const Array< T, sizeof...(Is)> &x)
Definition utility/container_helper.hpp:363
__host__ __device__ constexpr auto merge_sequences(Seqs...)
Definition utility/sequence.hpp:768
__host__ __device__ constexpr auto make_tensor_coordinate(const TensorDesc &tensor_desc, const VisibleIndex &idx_visible)
Definition tensor_description/tensor_descriptor.hpp:407
__host__ __device__ constexpr auto inclusive_scan_sequence(Seq, Reduce, Number< Init >)
Definition utility/sequence.hpp:812
Definition utility/sequence.hpp:43
Definition tensor_description/tensor_descriptor.hpp:236
__host__ __device__ auto & GetHiddenIndex()
Definition tensor_description/tensor_descriptor.hpp:258
__host__ __device__ constexpr TensorCoordinate()=default
__host__ __device__ constexpr const auto & GetHiddenIndex() const
Definition tensor_description/tensor_descriptor.hpp:256
__host__ __device__ constexpr auto GetIndex() const
Definition tensor_description/tensor_descriptor.hpp:251
__host__ __device__ constexpr index_t GetOffset() const
Definition tensor_description/tensor_descriptor.hpp:253
__host__ __device__ constexpr auto GetVisibleIndex() const
Definition tensor_description/tensor_descriptor.hpp:260
MultiIndex< NDimHidden > HiddenIndex
Definition tensor_description/tensor_descriptor.hpp:240
__host__ __device__ constexpr TensorCoordinate(const HiddenIndex &idx_hidden)
Definition tensor_description/tensor_descriptor.hpp:246
MultiIndex< ndim_visible_ > VisibleIndex
Definition tensor_description/tensor_descriptor.hpp:241
HiddenIndex idx_hidden_
Definition tensor_description/tensor_descriptor.hpp:266
static constexpr index_t ndim_visible_
Definition tensor_description/tensor_descriptor.hpp:238
Definition tensor_description/tensor_descriptor.hpp:271
MultiIndex< NDimVisible > VisibleIndex
Definition tensor_description/tensor_descriptor.hpp:273
__host__ __device__ constexpr const auto & GetVisibleIndexDiff() const
Definition tensor_description/tensor_descriptor.hpp:287
MultiIndex< NTransform > do_transforms_
Definition tensor_description/tensor_descriptor.hpp:293
static constexpr UpdateLowerIndexHack update_lower_index_hack_
Definition tensor_description/tensor_descriptor.hpp:296
VisibleIndex idx_diff_visible_
Definition tensor_description/tensor_descriptor.hpp:292
__host__ __device__ constexpr TensorCoordinateStep(const VisibleIndex &idx_diff_visible, const MultiIndex< NTransform > &do_transforms)
Definition tensor_description/tensor_descriptor.hpp:278
__host__ __device__ constexpr TensorCoordinateStep()=default
__host__ __device__ constexpr const auto & GetIndexDiff() const
Definition tensor_description/tensor_descriptor.hpp:284
Definition tensor_description/tensor_descriptor.hpp:28
__host__ static __device__ constexpr auto InitializeElementSize(const Transforms &transforms)
Definition tensor_description/tensor_descriptor.hpp:54
__host__ __device__ constexpr auto GetLengths() const
Definition tensor_description/tensor_descriptor.hpp:163
remove_cv_t< decltype(InitializeElementSize(Transforms{}))> ElementSize
Definition tensor_description/tensor_descriptor.hpp:114
static constexpr index_t ndim_hidden_
Definition tensor_description/tensor_descriptor.hpp:107
static constexpr index_t ndim_visible_
Definition tensor_description/tensor_descriptor.hpp:106
__host__ __device__ constexpr TensorDescriptor()
Definition tensor_description/tensor_descriptor.hpp:120
ElementSize element_size_
Definition tensor_description/tensor_descriptor.hpp:230
TensorCoordinate< ndim_hidden_, VisibleDimensionIds > Coordinate
Definition tensor_description/tensor_descriptor.hpp:111
__host__ __device__ void Print() const
Definition tensor_description/tensor_descriptor.hpp:211
__host__ static __device__ constexpr index_t GetNumOfHiddenDimension()
Definition tensor_description/tensor_descriptor.hpp:37
__host__ static __device__ constexpr auto GetUpperDimensionIdss()
Definition tensor_description/tensor_descriptor.hpp:189
MultiIndex< ndim_hidden_ > HiddenIndex
Definition tensor_description/tensor_descriptor.hpp:110
ElementSpaceSize element_space_size_
Definition tensor_description/tensor_descriptor.hpp:231
MultiIndex< ndim_visible_ > VisibleIndex
Definition tensor_description/tensor_descriptor.hpp:109
__host__ static __device__ constexpr bool IsKnownAtCompileTime()
Definition tensor_description/tensor_descriptor.hpp:199
__host__ static __device__ constexpr index_t GetNumOfDimension()
Definition tensor_description/tensor_descriptor.hpp:141
__host__ static __device__ constexpr index_t GetNumOfVisibleDimension()
Definition tensor_description/tensor_descriptor.hpp:32
__host__ __device__ constexpr auto GetElementSpaceSize() const
Definition tensor_description/tensor_descriptor.hpp:171
__host__ static __device__ constexpr auto GetVisibleDimensionIds()
Definition tensor_description/tensor_descriptor.hpp:194
static constexpr index_t ntransform_
Definition tensor_description/tensor_descriptor.hpp:105
__host__ __device__ constexpr auto GetLength(Number< IDim >) const
Definition tensor_description/tensor_descriptor.hpp:147
__host__ __device__ constexpr index_t CalculateOffset(const Idx &idx) const
Definition tensor_description/tensor_descriptor.hpp:174
__host__ static __device__ constexpr auto GetLowerDimensionIdss()
Definition tensor_description/tensor_descriptor.hpp:184
__host__ static __device__ constexpr auto GetTransformAndItsUpperDimension(Number< IDim >)
Definition tensor_description/tensor_descriptor.hpp:79
__host__ static __device__ constexpr index_t GetNumOfTransform()
Definition tensor_description/tensor_descriptor.hpp:30
__host__ __device__ constexpr const auto & GetTransforms() const
Definition tensor_description/tensor_descriptor.hpp:182
__host__ __device__ constexpr auto GetElementSize() const
Definition tensor_description/tensor_descriptor.hpp:169
Transforms transforms_
Definition tensor_description/tensor_descriptor.hpp:229
__host__ __device__ constexpr TensorDescriptor(const Transforms &transforms, ElementSpaceSize element_space_size)
Definition tensor_description/tensor_descriptor.hpp:126
Definition utility/sequence.hpp:256
Definition is_known_at_compile_time.hpp:14
Definition utility/sequence.hpp:618
Definition tensor_description/tensor_descriptor.hpp:305
__host__ __device__ constexpr auto operator()(I) const
Definition tensor_description/tensor_descriptor.hpp:307
Definition utility/math.hpp:211
Definition utility/math.hpp:217
Definition utility/math.hpp:34
Definition utility/math.hpp:23
Definition utility/sequence.hpp:543
Definition functional2.hpp:33
typename sequence_gen< NSize, F >::type type
Definition utility/sequence.hpp:295