| CUTLASS CUDA Templates for Linear Algebra Subroutines and Solvers

- Main Page
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | Static Public Attributes | List of all members
cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable > Class Template Reference

Partial specialization for complex*complex+complex => complex using real-valued TensorOps.

`#include <mma_complex_tensor_op.h>`

## Public Types
using | Shape = Shape_
| Shape of warp-level matrix operation (concept: GemmShape) More...
using | ElementA = complex< RealElementA >
| Data type of multiplicand A. More...
using | LayoutA = LayoutA_
| Layout of multiplicand A. More...
using | ElementB = complex< RealElementB >
| Data type of multiplicand B. More...
using | LayoutB = LayoutB_
| Layout of multiplicand B. More...
using | ElementC = complex< RealElementC >
| Data type of accumulator matrix C. More...
using | LayoutC = LayoutC_
| Layout of accumulator matrix C. More...
using | Policy = Policy_
| Shape of the warp in units of thread (concept: MmaLanePolicySimt) More...
using | OperatorClass = arch::OpClassTensorOp
| Indicates class of matrix operator. More...
using | IteratorA = MmaTensorOpMultiplicandTileIterator< MatrixShape< Shape::kM, Shape::kK >, Operand::kA, ElementA, LayoutA, MatrixShape< Policy::Operator::Shape::kM, Policy::Operator::Shape::kK >, Policy::OpDelta::kRow, 32, 1 >
| Iterates over the A operand in memory. More...
using | FragmentA = typename IteratorA::Fragment
| Storage for A tile. More...
using | IteratorB = MmaTensorOpMultiplicandTileIterator< MatrixShape< Shape::kK, Shape::kN >, Operand::kB, ElementB, LayoutB, MatrixShape< Policy::Operator::Shape::kK, Policy::Operator::Shape::kN >, Policy::OpDelta::kColumn, 32, 1 >
| Iterates over the B operand in memory. More...
using | FragmentB = typename IteratorB::Fragment
| Storage for B tile. More...
using | MmaIterations = MatrixShape< Shape::kM/Policy::Operator::Shape::kM, Shape::kN/Policy::Operator::Shape::kN >
| Number of mma operations performed. More...
using | IteratorC = MmaTensorOpAccumulatorTileIterator< MatrixShape< Shape::kM, Shape::kN >, ElementC, LayoutC, typename Policy::Operator::Shape, typename Policy::OpDelta >
| Iterates over the C operand in memory. More...
using | FragmentC = typename IteratorC::Fragment

## Public Member Functions
CUTLASS_DEVICE | MmaComplexTensorOp ()
| Ctor. More...
CUTLASS_DEVICE void | operator() (FragmentC &D, FragmentA const &A, FragmentB const &B, FragmentC const &C) const
| Performs a warp-level matrix multiply-accumulate operation. More...

## Static Public Attributes
static ComplexTransform const | kTransformA = TransformA
| Complex transform on A operand. More...
static ComplexTransform const | kTransformB = TransformB
| Complex transform on B operand. More...
static int const | kThreadCount = 32
| Number of threads participating in warp-level matrix product. More...

## Member Typedef Documentation

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::ElementA = complex<RealElementA>

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::ElementB = complex<RealElementB>

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::ElementC = complex<RealElementC>

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::FragmentA = typename IteratorA::Fragment

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::FragmentB = typename IteratorB::Fragment

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::FragmentC = typename IteratorC::Fragment

Storage for C tile, the accumulator. Note, regardless of multiplicand type, this storage arrangement is to be considered 'planar complex' in the sense that all real-valued parts are stored consecutively followed by all imaginary parts. This matches the structure of Tensor Cores which are always real-valued matrix multiplies.

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::IteratorA = MmaTensorOpMultiplicandTileIterator< MatrixShape<Shape::kM, Shape::kK>, Operand::kA, ElementA, LayoutA, MatrixShape<Policy::Operator::Shape::kM, Policy::Operator::Shape::kK>, Policy::OpDelta::kRow, 32, 1 >

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::IteratorB = MmaTensorOpMultiplicandTileIterator< MatrixShape<Shape::kK, Shape::kN>, Operand::kB, ElementB, LayoutB, MatrixShape<Policy::Operator::Shape::kK, Policy::Operator::Shape::kN>, Policy::OpDelta::kColumn, 32, 1 >

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::IteratorC = MmaTensorOpAccumulatorTileIterator< MatrixShape<Shape::kM, Shape::kN>, ElementC, LayoutC, typename Policy::Operator::Shape, typename Policy::OpDelta>

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::LayoutA = LayoutA_

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::LayoutB = LayoutB_

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::LayoutC = LayoutC_

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::MmaIterations = MatrixShape< Shape::kM / Policy::Operator::Shape::kM, Shape::kN / Policy::Operator::Shape::kN >

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::OperatorClass = arch::OpClassTensorOp

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::Policy = Policy_

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

using cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::Shape = Shape_

## Constructor & Destructor Documentation

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

CUTLASS_DEVICE cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::MmaComplexTensorOp | ( |  | ) |
| inline

## Member Function Documentation

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

CUTLASS_DEVICE void cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::operator() | ( | FragmentC & | D,
|  | FragmentA const & | A,
|  | FragmentB const & | B,
|  | FragmentC const & | C
| ) |  | const
| inline

## Member Data Documentation

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

int const cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::kThreadCount = 32
| static

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

ComplexTransform const cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::kTransformA = TransformA
| static

template<typename Shape_ , typename RealElementA , typename LayoutA_ , typename RealElementB , typename LayoutB_ , typename RealElementC , typename LayoutC_ , typename Policy_ , ComplexTransform TransformA, ComplexTransform TransformB, typename Enable >

ComplexTransform const cutlass::gemm::warp::MmaComplexTensorOp< Shape_, complex< RealElementA >, LayoutA_, complex< RealElementB >, LayoutB_, complex< RealElementC >, LayoutC_, Policy_, TransformA, TransformB, Enable >::kTransformB = TransformB
| static

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

- mma_complex_tensor_op.h