DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize > Struct Template Reference

DevicePool3dFwd_NDHWC_NDHWC&lt; InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize &gt; Struct Template Reference#

Composable Kernel: ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize > Struct Template Reference
ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize > Struct Template Reference

#include <device_pool3d_fwd_ndhwc_ndhwc.hpp>

Inheritance diagram for ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >:
ck::tensor_operation::device::DevicePoolFwd< 5, 3, InDataType, OutDataType, IndexDataType, tensor_layout::convolution::NDHWC, tensor_layout::convolution::NDHWC, ReduceOpId, OutputIndex > ck::tensor_operation::device::BaseOperator

Classes

struct  Argument
struct  Invoker

Public Types

using ReduceOperation = typename reduce_binary_operator<ReduceOpId>::opType
using InElementwiseOperation
using AccElementwiseOperation
using ABGridDescs
using AGridDesc_M_K = remove_cvref_t<decltype(ABGridDescs{}[I0])>
using BGridDesc_M = remove_cvref_t<decltype(ABGridDescs{}[I1])>

Public Member Functions

bool IsSupportedArgument (const BaseArgument *p_arg) override
virtual std::unique_ptr< BaseArgumentMakeArgumentPointer (const void *p_in_dev, void *p_out_dev, void *p_out_indices_dev, std::vector< ck::index_t > input_ncdhw_lengths, std::vector< ck::index_t > window_zyx_lengths, std::vector< ck::index_t > output_ncdhw_lengths, std::vector< ck::index_t > input_ncdhw_stride, std::vector< ck::index_t > output_ncdhw_stride, std::vector< ck::index_t > indices_ncdhw_stride, std::vector< ck::index_t > window_zyx_strides, std::vector< ck::index_t > window_zyx_dilations, std::vector< ck::index_t > input_left_dhw_pads, std::vector< ck::index_t > input_right_dhw_pads, std::vector< ck::index_t > pooling_dims) override
std::unique_ptr< BaseInvokerMakeInvokerPointer () override
std::string GetTypeString () const override
Public Member Functions inherited from ck::tensor_operation::device::BaseOperator
 BaseOperator ()=default
 BaseOperator (const BaseOperator &)=default
BaseOperatoroperator= (const BaseOperator &)=default
virtual std::string GetInstanceString () const
virtual std::string GetTypeIdName () const
virtual std::optional< std::string > GetObjectName () const
virtual std::optional< std::string > GetTemplateInfo () const
virtual std::string GetTypeIdHashCode () const
virtual size_t GetWorkSpaceSize (const BaseArgument *) const
virtual void SetWorkSpacePointer (BaseArgument *p_arg, void *p_workspace, const StreamConfig &=StreamConfig{}) const
virtual ~BaseOperator ()

Static Public Member Functions

static auto MakeABGridDescriptor_A_M_K_B_M (std::vector< ck::index_t > input_ncdhw_lengths, std::vector< ck::index_t > output_ncdhw_lengths, std::vector< ck::index_t > input_ncdhw_stride, std::vector< ck::index_t > output_ncdhw_stride, std::vector< ck::index_t > window_spatial_zyx_lengths, std::vector< ck::index_t > window_zyx_strides, std::vector< ck::index_t > window_zyx_dilations, std::vector< ck::index_t > input_left_dhw_pads, std::vector< ck::index_t > input_right_dhw_pads)

Static Public Attributes

static constexpr auto I0 = Number<0>{}
static constexpr auto I1 = Number<1>{}
static constexpr auto I2 = Number<2>{}
static constexpr auto I3 = Number<3>{}
static constexpr auto I4 = Number<4>{}
static constexpr auto I5 = Number<5>{}
static constexpr index_t InOutRank = 5
static constexpr index_t WindowRank = 3
static constexpr ck::index_t M_BlockTileSize = MThreadClusterSize * MThreadSliceSize
static constexpr ck::index_t K_BlockTileSize = KThreadClusterSize * KThreadSliceSize

Member Typedef Documentation

◆ ABGridDescs

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
using ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::ABGridDescs
Initial value:
decltype(MakeABGridDescriptor_A_M_K_B_M({}, {}, {}, {}, {}, {}, {}, {}, {}))
static auto MakeABGridDescriptor_A_M_K_B_M(std::vector< ck::index_t > input_ncdhw_lengths, std::vector< ck::index_t > output_ncdhw_lengths, std::vector< ck::index_t > input_ncdhw_stride, std::vector< ck::index_t > output_ncdhw_stride, std::vector< ck::index_t > window_spatial_zyx_lengths, std::vector< ck::index_t > window_zyx_strides, std::vector< ck::index_t > window_zyx_dilations, std::vector< ck::index_t > input_left_dhw_pads, std::vector< ck::index_t > input_right_dhw_pads)
Definition device_pool3d_fwd_ndhwc_ndhwc.hpp:66

◆ AccElementwiseOperation

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
using ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::AccElementwiseOperation
Initial value:
tensor_operation::element_wise::PassThrough AccElementwiseOperation
Definition reduction_operator_mapping.hpp:93

◆ AGridDesc_M_K

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
using ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::AGridDesc_M_K = remove_cvref_t<decltype(ABGridDescs{}[I0])>

◆ BGridDesc_M

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
using ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::BGridDesc_M = remove_cvref_t<decltype(ABGridDescs{}[I1])>

◆ InElementwiseOperation

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
using ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::InElementwiseOperation
Initial value:
tensor_operation::element_wise::PassThrough InElementwiseOperation
Definition reduction_operator_mapping.hpp:92

◆ ReduceOperation

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
using ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::ReduceOperation = typename reduce_binary_operator<ReduceOpId>::opType

Member Function Documentation

◆ GetTypeString()

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
std::string ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::GetTypeString ( ) const
inlineoverridevirtual

◆ IsSupportedArgument()

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
bool ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::IsSupportedArgument ( const BaseArgument * p_arg)
inlineoverridevirtual

◆ MakeABGridDescriptor_A_M_K_B_M()

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
auto ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::MakeABGridDescriptor_A_M_K_B_M ( std::vector< ck::index_t > input_ncdhw_lengths,
std::vector< ck::index_t > output_ncdhw_lengths,
std::vector< ck::index_t > input_ncdhw_stride,
std::vector< ck::index_t > output_ncdhw_stride,
std::vector< ck::index_t > window_spatial_zyx_lengths,
std::vector< ck::index_t > window_zyx_strides,
std::vector< ck::index_t > window_zyx_dilations,
std::vector< ck::index_t > input_left_dhw_pads,
std::vector< ck::index_t > input_right_dhw_pads )
inlinestatic

◆ MakeArgumentPointer()

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
virtual std::unique_ptr< BaseArgument > ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::MakeArgumentPointer ( const void * p_in_dev,
void * p_out_dev,
void * p_out_indices_dev,
std::vector< ck::index_t > input_ncdhw_lengths,
std::vector< ck::index_t > window_zyx_lengths,
std::vector< ck::index_t > output_ncdhw_lengths,
std::vector< ck::index_t > input_ncdhw_stride,
std::vector< ck::index_t > output_ncdhw_stride,
std::vector< ck::index_t > indices_ncdhw_stride,
std::vector< ck::index_t > window_zyx_strides,
std::vector< ck::index_t > window_zyx_dilations,
std::vector< ck::index_t > input_left_dhw_pads,
std::vector< ck::index_t > input_right_dhw_pads,
std::vector< ck::index_t > pooling_dims )
inlineoverridevirtual

◆ MakeInvokerPointer()

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
std::unique_ptr< BaseInvoker > ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::MakeInvokerPointer ( )
inlineoverridevirtual

Member Data Documentation

◆ I0

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
auto ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::I0 = Number<0>{}
staticconstexpr

◆ I1

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
auto ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::I1 = Number<1>{}
staticconstexpr

◆ I2

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
auto ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::I2 = Number<2>{}
staticconstexpr

◆ I3

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
auto ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::I3 = Number<3>{}
staticconstexpr

◆ I4

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
auto ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::I4 = Number<4>{}
staticconstexpr

◆ I5

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
auto ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::I5 = Number<5>{}
staticconstexpr

◆ InOutRank

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
index_t ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::InOutRank = 5
staticconstexpr

◆ K_BlockTileSize

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
ck::index_t ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::K_BlockTileSize = KThreadClusterSize * KThreadSliceSize
staticconstexpr

◆ M_BlockTileSize

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
ck::index_t ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::M_BlockTileSize = MThreadClusterSize * MThreadSliceSize
staticconstexpr

◆ WindowRank

template<typename InDataType, typename OutDataType, typename IndexDataType, typename ComputeDataType, ck::ReduceTensorOp ReduceOpId, bool OutputIndex, ck::index_t BlockSize, ck::index_t MThreadClusterSize, ck::index_t KThreadClusterSize, ck::index_t MThreadSliceSize, ck::index_t KThreadSliceSize, ck::index_t InSrcOutDstVectorSize>
index_t ck::tensor_operation::device::DevicePool3dFwd_NDHWC_NDHWC< InDataType, OutDataType, IndexDataType, ComputeDataType, ReduceOpId, OutputIndex, BlockSize, MThreadClusterSize, KThreadClusterSize, MThreadSliceSize, KThreadSliceSize, InSrcOutDstVectorSize >::WindowRank = 3
staticconstexpr

The documentation for this struct was generated from the following file: