CUTLASS
CUDA Templates for Linear Algebra Subroutines and Solvers
Public Types | Public Member Functions | List of all members
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: