CUTLASS 2.0 (#62)

CUTLASS 2.0

Substantially refactored for

- Better performance, particularly for native Turing Tensor Cores
- Robust and durable templates spanning the design space
- Encapsulated functionality embodying modern C++11 programming techniques
- Optimized containers and data types for efficient, generic, portable device code

Updates to:
- Quick start guide
- Documentation
- Utilities
- CUTLASS Profiler

Native Turing Tensor Cores
- Efficient GEMM kernels targeting Turing Tensor Cores
- Mixed-precision floating point, 8-bit integer, 4-bit integer, and binarized operands

Coverage of existing CUTLASS functionality:
- GEMM kernels targeting CUDA and Tensor Cores in NVIDIA GPUs
- Volta Tensor Cores through native mma.sync and through WMMA API
- Optimizations such as parallel reductions, threadblock rasterization, and intra-threadblock reductions
- Batched GEMM operations
- Complex-valued GEMMs

Note: this commit and all that follow require a host compiler supporting C++11 or greater.
This commit is contained in:
Andrew Kerr
2019-11-19 16:55:34 -08:00
committed by GitHub
parent b5cab177a9
commit fb335f6a5f
5434 changed files with 599799 additions and 250176 deletions
+5 -15
View File
@@ -1,18 +1,8 @@
var searchData=
[
['pad',['pad',['../structcutlass_1_1platform_1_1alignment__of_1_1pad.html',1,'cutlass::platform::alignment_of']]],
['pair',['Pair',['../structcutlass_1_1platform_1_1Pair.html',1,'cutlass::platform']]],
['params',['Params',['../structcutlass_1_1gemm_1_1SharedLoadStream_1_1Params.html',1,'cutlass::gemm::SharedLoadStream< Iterator_, Transformer_ >::Params'],['../classcutlass_1_1gemm_1_1LinearScalingDevicePtr_1_1Params.html',1,'cutlass::gemm::LinearScalingDevicePtr< Scalar_, FragmentMultiplyAdd_ >::Params'],['../structcutlass_1_1gemm_1_1WmmaGemmGlobalIteratorCd_1_1Params.html',1,'cutlass::gemm::WmmaGemmGlobalIteratorCd< TileTraits_, Index_ >::Params'],['../structcutlass_1_1gemm_1_1SharedStreamPair_1_1Params.html',1,'cutlass::gemm::SharedStreamPair< StreamA_, StreamB_ >::Params'],['../structcutlass_1_1gemm_1_1GlobalLoadStream_1_1Params.html',1,'cutlass::gemm::GlobalLoadStream< Operand, LoadIterator_, StoreIterator_, Transformer_ >::Params'],['../structcutlass_1_1ZipTileIterator_1_1Params.html',1,'cutlass::ZipTileIterator< First_, Second_ >::Params'],['../structcutlass_1_1gemm_1_1GlobalLoadStreamPair_1_1Params.html',1,'cutlass::gemm::GlobalLoadStreamPair< StreamA_, StreamB_, kResidueInProlog_ >::Params'],['../structcutlass_1_1gemm_1_1GemmTraits_1_1Params.html',1,'cutlass::gemm::GemmTraits< GemmConfig_, GlobalLoadStreamA_, GlobalLoadStreamB_, SharedLoadStreamA_, SharedLoadStreamB_, Epilogue_, BlockSwizzle_, Index_, ClearAccumulators_ >::Params'],['../structcutlass_1_1gemm_1_1LinearScaling_1_1Params.html',1,'cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::Params'],['../structcutlass_1_1gemm_1_1SplitkPIGemmTraits_1_1Params.html',1,'cutlass::gemm::SplitkPIGemmTraits< GemmTraits_, ReductionTraits_ >::Params'],['../structcutlass_1_1reduction_1_1BatchedReductionTraits_1_1Params.html',1,'cutlass::reduction::BatchedReductionTraits< ScalarA_, ScalarC_, ScalarD_, ScalarAlphaBeta_, ScalarAccum_, ReductionSize_, OutputTile_, SubTile_, ThreadShape_, Index_, BlockSwizzle_, maxInReg_, maxOutReg_, Functor_ >::Params'],['../structcutlass_1_1gemm_1_1GemmGlobalIteratorAb_1_1Params.html',1,'cutlass::gemm::GemmGlobalIteratorAb< TileTraits_, Index_ >::Params'],['../structcutlass_1_1gemm_1_1GemmGlobalIteratorCd_1_1Params.html',1,'cutlass::gemm::GemmGlobalIteratorCd< TileTraits_, Index_ >::Params'],['../structcutlass_1_1gemm_1_1GemmEpilogueTraits_1_1Params.html',1,'cutlass::gemm::GemmEpilogueTraits< OutputTile_, Accumulators_, GlobalLoadIteratorC_, GlobalTransformerC_, GlobalTransformerD_, GlobalStoreIteratorD_, SharedStoreIteratorD_, SharedStoreTransformerD_, SharedLoadStreamD_, Iterations_, Delta_, Functor_, Index_ >::Params'],['../structcutlass_1_1TileIteratorBase_1_1Params.html',1,'cutlass::TileIteratorBase< Traits_, Scalar_, Advance_, MemorySpace, Index_, FragmentElement_, FragmentElementType_, Skew_ >::Params'],['../structcutlass_1_1TileLoadIterator_1_1Params.html',1,'cutlass::TileLoadIterator< Traits_, Scalar_, Advance_, MemorySpace, Index_, FragmentElement_, FragmentElementType_, Skew_ >::Params'],['../structcutlass_1_1TileStoreIterator_1_1Params.html',1,'cutlass::TileStoreIterator< Traits_, Scalar_, Advance_, MemorySpace, Index_, FragmentElement_, FragmentElementType_, Skew_ >::Params'],['../structcutlass_1_1TileLoadStream_1_1Params.html',1,'cutlass::TileLoadStream< Iterator_, Transformer_ >::Params'],['../structcutlass_1_1TileStoreStream_1_1Params.html',1,'cutlass::TileStoreStream< Iterator_, Transformer_ >::Params']]],
['plus',['plus',['../structcutlass_1_1platform_1_1plus.html',1,'cutlass::platform']]],
['predicatedtileloadstream',['PredicatedTileLoadStream',['../structcutlass_1_1PredicatedTileLoadStream.html',1,'cutlass']]],
['predicatedtilestorestream',['PredicatedTileStoreStream',['../structcutlass_1_1PredicatedTileStoreStream.html',1,'cutlass']]],
['predicatetileadapter',['PredicateTileAdapter',['../structcutlass_1_1PredicateTileAdapter.html',1,'cutlass']]],
['predicatevector',['PredicateVector',['../structcutlass_1_1PredicateVector.html',1,'cutlass::PredicateVector< kPredicates_, kPredicatesPerByte_, kPredicateStart_ >'],['../structcutlass_1_1TileStoreStream_1_1PredicateVector.html',1,'cutlass::TileStoreStream< Iterator_, Transformer_ >::PredicateVector'],['../structcutlass_1_1TileLoadStream_1_1PredicateVector.html',1,'cutlass::TileLoadStream< Iterator_, Transformer_ >::PredicateVector']]],
['predicatevector_3c_20base_3a_3aiterations_3a_3akw_20_3e',['PredicateVector< Base::Iterations::kW >',['../structcutlass_1_1PredicateVector.html',1,'cutlass']]],
['predicatevector_3c_20shapecount_3c_20typename_20base_3a_3aiterations_20_3e_3a_3akcount_20_3e',['PredicateVector< ShapeCount< typename Base::Iterations >::kCount >',['../structcutlass_1_1PredicateVector.html',1,'cutlass']]],
['projectoperand',['ProjectOperand',['../structcutlass_1_1gemm_1_1ProjectOperand.html',1,'cutlass::gemm']]],
['projectoperand_3c_20gemmoperand_3a_3aka_2c_20kstrided_20_3e',['ProjectOperand< GemmOperand::kA, Kstrided >',['../structcutlass_1_1gemm_1_1ProjectOperand_3_01GemmOperand_1_1kA_00_01Kstrided_01_4.html',1,'cutlass::gemm']]],
['projectoperand_3c_20gemmoperand_3a_3akb_2c_20kstrided_20_3e',['ProjectOperand< GemmOperand::kB, Kstrided >',['../structcutlass_1_1gemm_1_1ProjectOperand_3_01GemmOperand_1_1kB_00_01Kstrided_01_4.html',1,'cutlass::gemm']]],
['projectoperand_3c_20gemmoperand_3a_3akc_2c_20true_20_3e',['ProjectOperand< GemmOperand::kC, true >',['../structcutlass_1_1gemm_1_1ProjectOperand_3_01GemmOperand_1_1kC_00_01true_01_4.html',1,'cutlass::gemm']]],
['projectoperand_3c_20gemmoperand_3a_3akd_2c_20true_20_3e',['ProjectOperand< GemmOperand::kD, true >',['../structcutlass_1_1gemm_1_1ProjectOperand_3_01GemmOperand_1_1kD_00_01true_01_4.html',1,'cutlass::gemm']]]
['operation',['Operation',['../classcutlass_1_1library_1_1Operation.html',1,'cutlass::library']]],
['operationdescription',['OperationDescription',['../structcutlass_1_1library_1_1OperationDescription.html',1,'cutlass::library']]],
['outputtileoptimalthreadmap',['OutputTileOptimalThreadMap',['../structcutlass_1_1epilogue_1_1threadblock_1_1OutputTileOptimalThreadMap.html',1,'cutlass::epilogue::threadblock']]],
['outputtileshape',['OutputTileShape',['../structcutlass_1_1epilogue_1_1threadblock_1_1OutputTileShape.html',1,'cutlass::epilogue::threadblock']]],
['outputtilethreadmap',['OutputTileThreadMap',['../structcutlass_1_1epilogue_1_1threadblock_1_1OutputTileThreadMap.html',1,'cutlass::epilogue::threadblock']]]
];