# CUTLASS: cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ > Struct Template Reference

cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ > Struct Template Reference

`#include <default_mma_core_sm75.h>`

## Public Types

using | Shape = Shape_
using | WarpShape = WarpShape_
using | InstructionShape = InstructionShape_
using | ElementA = ElementA_
using | LayoutA = layout::RowMajor
using | ElementB = ElementB_
using | LayoutB = layout::RowMajor
using | ElementC = ElementC_
using | LayoutC = LayoutC_
using | OperatorClass = arch::OpClassTensorOp
using | WarpCount = GemmShape< Shape::kM/WarpShape::kM, Shape::kN/WarpShape::kN, Shape::kK/WarpShape::kK >
| Number of warps present. More...
using | Operator = Operator_
| Default Operator. More...
using | SmemLayoutA = layout::RowMajorTensorOpMultiplicandCrosswise< sizeof_bits< ElementA >::value, Shape::kK >
using | SmemLayoutB = layout::RowMajorTensorOpMultiplicandCongruous< sizeof_bits< ElementB >::value, int(128/sizeof(ElementB))>
using | IteratorThreadMapA = transform::PitchLinearWarpRakedThreadMap< layout::PitchLinearShape< Shape::kK, Shape::kM >, kThreads, layout::PitchLinearShape< kWarpThreadArrangementContiguousA, kWarpThreadArrangementStridedA >, kAccessSizeInBits/sizeof_bits< ElementA >::value >
| ThreadMap of iterator A. More...
using | SmemIteratorA = transform::threadblock::RegularTileIterator< MatrixShape< Shape::kM, Shape::kK >, ElementA, SmemLayoutA, 0, IteratorThreadMapA >
| Shared memory iterator to A operand. More...
using | IteratorThreadMapB = transform::PitchLinearWarpRakedThreadMap< layout::PitchLinearShape< Shape::kN, Shape::kK >, kThreads, layout::PitchLinearShape< 8, 4 >, kAccessSizeInBits/sizeof_bits< ElementB >::value >
| ThreadMap of iterator B. More...
using | SmemIteratorB = transform::threadblock::RegularTileIterator< MatrixShape< Shape::kK, Shape::kN >, ElementB, SmemLayoutB, 0, IteratorThreadMapB >
| Shared memory iterator to B operand. More...
using | MmaTensorOp = typename cutlass::gemm::warp::DefaultMmaTensorOp< WarpShape, InstructionShape, ElementA, SmemLayoutA, ElementB, SmemLayoutB, ElementC, LayoutC, Operator, WarpCount::kK >::Type
using | MmaPolicy = MmaPolicy< MmaTensorOp, MatrixShape< 0, 0 >, MatrixShape< 0, 0 >, WarpCount::kK >
| Policy used to define MmaPipelined. More...

## Static Public Attributes

static int const | kWarpSize = warp::WarpSize<arch::OpClassTensorOp>::value
| Number of threads per warp. More...
static int const | kThreads = WarpCount::kCount * kWarpSize
| Number of threads total. More...
static int const | kAccessSizeInBits = 128
| Size of a threadblock-scoped access. More...
static int const | kWarpThreadArrangementContiguousA
static int const | kWarpThreadArrangementStridedA

## Detailed Description

### template<typename Shape_, typename WarpShape_, typename InstructionShape_, typename ElementA_, typename ElementB_, typename ElementC_, typename LayoutC_, typename Operator_>
struct cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >

Partial specialization:

A: row-major B: row-major Operator: tensor op class

This uses the default warp-level operator given tile sizes

## Member Typedef Documentation

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::ElementA = ElementA_

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::ElementB = ElementB_

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::ElementC = ElementC_

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::InstructionShape = InstructionShape_

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::IteratorThreadMapA = transform::PitchLinearWarpRakedThreadMap< layout::PitchLinearShape<Shape::kK, Shape::kM>, kThreads, layout::PitchLinearShape<kWarpThreadArrangementContiguousA, kWarpThreadArrangementStridedA>, kAccessSizeInBits / sizeof_bits<ElementA>::value>

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::IteratorThreadMapB = transform::PitchLinearWarpRakedThreadMap< layout::PitchLinearShape<Shape::kN, Shape::kK>, kThreads, layout::PitchLinearShape<8, 4>, kAccessSizeInBits / sizeof_bits<ElementB>::value >

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::LayoutA = layout::RowMajor

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::LayoutB = layout::RowMajor

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::LayoutC = LayoutC_

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::MmaPolicy = MmaPolicy< MmaTensorOp, MatrixShape<0, 0>, MatrixShape<0, 0>, WarpCount::kK >

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::MmaTensorOp = typename cutlass::gemm::warp::DefaultMmaTensorOp< WarpShape, InstructionShape, ElementA, SmemLayoutA, ElementB, SmemLayoutB, ElementC, LayoutC, Operator, WarpCount::kK>::Type

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::Operator = Operator_

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::OperatorClass = arch::OpClassTensorOp

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::Shape = Shape_

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::SmemIteratorA = transform::threadblock::RegularTileIterator< MatrixShape<Shape::kM, Shape::kK>, ElementA, SmemLayoutA, 0, IteratorThreadMapA >

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::SmemIteratorB = transform::threadblock::RegularTileIterator< MatrixShape<Shape::kK, Shape::kN>, ElementB, SmemLayoutB, 0, IteratorThreadMapB >

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::SmemLayoutA = layout::RowMajorTensorOpMultiplicandCrosswise< sizeof_bits<ElementA>::value, Shape::kK>

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::SmemLayoutB = layout::RowMajorTensorOpMultiplicandCongruous< sizeof_bits<ElementB>::value, int(128 / sizeof(ElementB))>

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::WarpCount = GemmShape< Shape::kM / WarpShape::kM, Shape::kN / WarpShape::kN, Shape::kK / WarpShape::kK >

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::WarpShape = WarpShape_

## Member Data Documentation

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

int const cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::kAccessSizeInBits = 128

static

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

int const cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::kThreads = WarpCount::kCount * kWarpSize

static

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

int const cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::kWarpSize = warp::WarpSize<arch::OpClassTensorOp>::value

static

template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

int const cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::kWarpThreadArrangementContiguousA

static

Initial value:
=
Shape::kK / (kAccessSizeInBits / sizeof_bits<ElementA>::value)
template<typename Shape_ , typename WarpShape_ , typename InstructionShape_ , typename ElementA_ , typename ElementB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

int const cutlass::gemm::threadblock::DefaultMmaCore< Shape_, WarpShape_, InstructionShape_, ElementA_, layout::RowMajor, ElementB_, layout::RowMajor, ElementC_, LayoutC_, arch::OpClassTensorOp, 2, Operator_ >::kWarpThreadArrangementStridedA

static

Initial value:
=
kWarpSize / kWarpThreadArrangementContiguousA

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

- default_mma_core_sm75.h