Structure to compute the matrix product targeting CUDA cores and SIMT math instructions.  
#include <mma_pipelined.h>
|  | 
| CUTLASS_DEVICE | MmaPipelined (typename Base::SharedStorage &shared_storage, int thread_idx, int warp_idx, int lane_idx) | 
|  | Construct from tensor references.  More... 
 | 
|  | 
| CUTLASS_DEVICE void | operator() (int gemm_k_iterations, FragmentC &accum, IteratorA iterator_A, IteratorB iterator_B, FragmentC const &src_accum, TransformA transform_A=TransformA(), TransformB transform_B=TransformB()) | 
|  | Perform a threadblock-scoped matrix multiply-accumulate.  More... 
 | 
|  | 
| CUTLASS_DEVICE | MmaBase (SharedStorage &shared_storage, int thread_idx, int warp_idx, int lane_idx) | 
|  | Construct from tensor references.  More... 
 | 
|  | 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::Base =  MmaBase<Shape_, Policy_, 2> | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::ElementC =  ElementC_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::FragmentA =  typename IteratorA::Fragment | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::FragmentB =  typename IteratorB::Fragment | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::FragmentC =  typename Policy::Operator::FragmentC | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::IteratorA =  IteratorA_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::IteratorB =  IteratorB_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::LayoutC =  LayoutC_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::Operator =  typename Policy::Operator | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::Policy =  Policy_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::Shape =  Shape_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::SmemIteratorA =  SmemIteratorA_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::SmemIteratorB =  SmemIteratorB_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::TransformA =  TransformA_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
      
        
          | using cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::TransformB =  TransformB_ | 
      
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
  
  | 
        
          | CUTLASS_DEVICE cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::MmaPipelined | ( | typename Base::SharedStorage & | shared_storage, |  
          |  |  | int | thread_idx, |  
          |  |  | int | warp_idx, |  
          |  |  | int | lane_idx |  
          |  | ) |  |  |  | inline | 
 
- Parameters
- 
  
    | shared_storage | Shared storage needed for internal use by threadblock-scoped GEMM |  | thread_idx | ID within the threadblock |  | warp_idx | ID of warp |  | lane_idx | ID of each thread within a warp |  
 
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
  
  | 
        
          | CUTLASS_DEVICE void cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::operator() | ( | int | gemm_k_iterations, |  
          |  |  | FragmentC & | accum, |  
          |  |  | IteratorA | iterator_A, |  
          |  |  | IteratorB | iterator_B, |  
          |  |  | FragmentC const & | src_accum, |  
          |  |  | TransformA | transform_A = TransformA(), |  
          |  |  | TransformB | transform_B = TransformB() |  
          |  | ) |  |  |  | inline | 
 
< transformation applied to B fragment 
- Parameters
- 
  
    | gemm_k_iterations | number of iterations of the mainloop |  | accum | destination accumulator tile |  | iterator_A | iterator over A operand in global memory |  | iterator_B | iterator over B operand in global memory |  | src_accum | source accumulator tile |  | transform_A | transformation applied to A fragment |  
 
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
  
  | 
        
          | SmemIteratorA cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::smem_iterator_A_ |  | protected | 
 
 
template<typename Shape_ , typename IteratorA_ , typename SmemIteratorA_ , typename IteratorB_ , typename SmemIteratorB_ , typename ElementC_ , typename LayoutC_ , typename Policy_ , typename TransformA_  = NumericArrayConverter<    typename SmemIteratorA_::Element,     typename IteratorA_::Element,     IteratorA_::Fragment::kElements>, typename TransformB_  = NumericArrayConverter<    typename SmemIteratorB_::Element,     typename IteratorB_::Element,     IteratorB_::Fragment::kElements>, typename Enable  = bool> 
  
  | 
        
          | SmemIteratorB cutlass::gemm::threadblock::MmaPipelined< Shape_, IteratorA_, SmemIteratorA_, IteratorB_, SmemIteratorB_, ElementC_, LayoutC_, Policy_, TransformA_, TransformB_, Enable >::smem_iterator_B_ |  | protected | 
 
 
The documentation for this class was generated from the following file: