Partial specialization for complex*complex+complex => complex using real-valued TensorOps.  
|  | 
| 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 | 
|  | 
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 >::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_ | 
      
 
 
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 | 
 
 
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 | 
 
 
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 |