# CUTLASS: cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ > Struct Template Reference

cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ > Struct Template Reference

Gemplate that handles all packed matrix layouts.

`#include <mma_sm50.h>`

## Public Types

using | Shape = Shape_
| Size of the Gemm problem - concept: gemm::GemmShape<> More...
using | ElementA = ElementA_
| Data type of operand A. More...
using | LayoutA = LayoutA_
| Layout of A matrix (concept: layout::MapFunc) More...
using | ElementB = ElementB_
| Data type of operand B. More...
using | LayoutB = LayoutB_
| Layout of B matrix (concept: layout::MapFunc) More...
using | ElementC = ElementC_
| Element type of operand C. More...
using | LayoutC = LayoutC_
| Layout of C matrix (concept: layout::MapFunc) More...
using | Operator = Operator_
| Underlying mathematical operator. More...
using | FragmentA = Array< ElementA, Shape::kMK >
| A operand storage. More...
using | FragmentB = Array< ElementB, Shape::kKN >
| B operand storage. More...
using | FragmentC = Array< ElementC, Shape::kMN >
| C operand storage. More...
using | MmaOp = arch::Mma< gemm::GemmShape< 1, 1, 1 >, 1, ElementA, LayoutA, ElementB, LayoutB, ElementC, LayoutC, Operator >
| Instruction. More...

## Public Member Functions

CUTLASS_HOST_DEVICE void | operator() (FragmentC &D, FragmentA const &A, FragmentB const &B, FragmentC const &C)
| Computes a matrix product D = A * B + C. More...

## Member Typedef Documentation

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::ElementA = ElementA_

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::ElementB = ElementB_

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::ElementC = ElementC_

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::FragmentA = Array<ElementA, Shape::kMK>

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::FragmentB = Array<ElementB, Shape::kKN>

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::FragmentC = Array<ElementC, Shape::kMN>

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::LayoutA = LayoutA_

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::LayoutB = LayoutB_

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::LayoutC = LayoutC_

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::MmaOp = arch::Mma< gemm::GemmShape<1,1,1>, 1, ElementA, LayoutA, ElementB, LayoutB, ElementC, LayoutC, Operator>

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::Operator = Operator_

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

using cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::Shape = Shape_

## Member Function Documentation

template<typename Shape_ , typename ElementA_ , typename LayoutA_ , typename ElementB_ , typename LayoutB_ , typename ElementC_ , typename LayoutC_ , typename Operator_ >

CUTLASS_HOST_DEVICE void cutlass::gemm::thread::MmaGeneric< Shape_, ElementA_, LayoutA_, ElementB_, LayoutB_, ElementC_, LayoutC_, Operator_ >::operator() | ( | FragmentC & | D,
|  | FragmentA const & | A,
|  | FragmentB const & | B,
|  | FragmentC const & | C
| ) |  |

inline

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

- gemm/thread/mma_sm50.h