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
+31 -19
View File
@@ -1,29 +1,41 @@
var searchData=
[
['clearaccumulators',['ClearAccumulators',['../structcutlass_1_1gemm_1_1ClearAccumulators.html',1,'cutlass::gemm']]],
['columnmajor',['ColumnMajor',['../structcutlass_1_1MatrixLayout_1_1ColumnMajor.html',1,'cutlass::MatrixLayout']]],
['columnmajorblocklinear',['ColumnMajorBlockLinear',['../structcutlass_1_1MatrixLayout_1_1ColumnMajorBlockLinear.html',1,'cutlass::MatrixLayout']]],
['columnmajorblockswizzle',['ColumnMajorBlockSwizzle',['../structcutlass_1_1gemm_1_1ColumnMajorBlockSwizzle.html',1,'cutlass::gemm']]],
['columnmajorinterleaved',['ColumnMajorInterleaved',['../structcutlass_1_1MatrixLayout_1_1ColumnMajorInterleaved.html',1,'cutlass::MatrixLayout']]],
['complex',['complex',['../classcutlass_1_1platform_1_1complex.html',1,'cutlass::platform']]],
['computeoffsetfromshape',['ComputeOffsetFromShape',['../structcutlass_1_1ComputeOffsetFromShape.html',1,'cutlass']]],
['computeoffsetfromstrides',['ComputeOffsetFromStrides',['../structcutlass_1_1ComputeOffsetFromStrides.html',1,'cutlass']]],
['computethreadoffsetfromstrides',['ComputeThreadOffsetFromStrides',['../structcutlass_1_1ComputeThreadOffsetFromStrides.html',1,'cutlass']]],
['computethreadoffsetfromstrides_3c_20shape_3c_201_2c_20t_5fh_5f_2c_20t_5fw_5f_2c_201_20_3e_2c_20shape_3c_201_2c_20s_5fh_5f_2c_20s_5fw_5f_2c_201_20_3e_20_3e',['ComputeThreadOffsetFromStrides< Shape< 1, T_h_, T_w_, 1 >, Shape< 1, S_h_, S_w_, 1 > >',['../structcutlass_1_1ComputeThreadOffsetFromStrides_3_01Shape_3_011_00_01T__h___00_01T__w___00_011_0e75281d7e02fa191f5d498e10e25dc1b.html',1,'cutlass']]],
['computethreadoffsetfromstrides_3c_20shape_3c_201_2c_20t_5fh_5f_2c_20t_5fw_5f_2c_20t_5fc_5f_20_3e_2c_20shape_3c_201_2c_20s_5fh_5f_2c_20s_5fw_5f_2c_20s_5fc_5f_20_3e_20_3e',['ComputeThreadOffsetFromStrides< Shape< 1, T_h_, T_w_, T_c_ >, Shape< 1, S_h_, S_w_, S_c_ > >',['../structcutlass_1_1ComputeThreadOffsetFromStrides_3_01Shape_3_011_00_01T__h___00_01T__w___00_01T__dd54c41f6edb97d3c208cb7c6fe4ab9b.html',1,'cutlass']]],
['cast',['Cast',['../structcutlass_1_1reference_1_1detail_1_1Cast.html',1,'cutlass::reference::detail']]],
['cast_3c_20float_2c_20int8_5ft_20_3e',['Cast< float, int8_t >',['../structcutlass_1_1reference_1_1detail_1_1Cast_3_01float_00_01int8__t_01_4.html',1,'cutlass::reference::detail']]],
['cast_3c_20float_2c_20uint8_5ft_20_3e',['Cast< float, uint8_t >',['../structcutlass_1_1reference_1_1detail_1_1Cast_3_01float_00_01uint8__t_01_4.html',1,'cutlass::reference::detail']]],
['columnmajor',['ColumnMajor',['../classcutlass_1_1layout_1_1ColumnMajor.html',1,'cutlass::layout']]],
['columnmajorblocklinear',['ColumnMajorBlockLinear',['../structcutlass_1_1layout_1_1ColumnMajorBlockLinear.html',1,'cutlass::layout']]],
['columnmajorinterleaved',['ColumnMajorInterleaved',['../structcutlass_1_1layout_1_1ColumnMajorInterleaved.html',1,'cutlass::layout']]],
['columnmajorinterleaved_3c_204_20_3e',['ColumnMajorInterleaved< 4 >',['../structcutlass_1_1layout_1_1ColumnMajorInterleaved.html',1,'cutlass::layout']]],
['columnmajortensoropmultiplicandcongruous',['ColumnMajorTensorOpMultiplicandCongruous',['../structcutlass_1_1layout_1_1ColumnMajorTensorOpMultiplicandCongruous.html',1,'cutlass::layout']]],
['columnmajortensoropmultiplicandcrosswise',['ColumnMajorTensorOpMultiplicandCrosswise',['../structcutlass_1_1layout_1_1ColumnMajorTensorOpMultiplicandCrosswise.html',1,'cutlass::layout']]],
['columnmajorvoltatensoropmultiplicandbcongruous',['ColumnMajorVoltaTensorOpMultiplicandBCongruous',['../structcutlass_1_1layout_1_1ColumnMajorVoltaTensorOpMultiplicandBCongruous.html',1,'cutlass::layout']]],
['columnmajorvoltatensoropmultiplicandcongruous',['ColumnMajorVoltaTensorOpMultiplicandCongruous',['../structcutlass_1_1layout_1_1ColumnMajorVoltaTensorOpMultiplicandCongruous.html',1,'cutlass::layout']]],
['columnmajorvoltatensoropmultiplicandcrosswise',['ColumnMajorVoltaTensorOpMultiplicandCrosswise',['../structcutlass_1_1layout_1_1ColumnMajorVoltaTensorOpMultiplicandCrosswise.html',1,'cutlass::layout']]],
['commandline',['CommandLine',['../structcutlass_1_1CommandLine.html',1,'cutlass']]],
['compactedthreadmap',['CompactedThreadMap',['../structcutlass_1_1epilogue_1_1threadblock_1_1OutputTileOptimalThreadMap_1_1CompactedThreadMap.html',1,'cutlass::epilogue::threadblock::OutputTileOptimalThreadMap']]],
['complex',['complex',['../classcutlass_1_1complex.html',1,'cutlass']]],
['conditional',['conditional',['../structcutlass_1_1platform_1_1conditional.html',1,'cutlass::platform']]],
['conditional_3c_20_28_28ksizebits_2532_29_21_3d0_29_2c_20typename_20platform_3a_3aconditional_3c_20_28_28ksizebits_2516_29_21_3d0_29_2c_20uint8_5ft_2c_20uint16_5ft_20_3e_3a_3atype_2c_20uint32_5ft_20_3e',['conditional< ((kSizeBits%32)!=0), typename platform::conditional< ((kSizeBits%16)!=0), uint8_t, uint16_t >::type, uint32_t >',['../structcutlass_1_1platform_1_1conditional.html',1,'cutlass::platform']]],
['conditional_3c_20false_2c_20t_2c_20f_20_3e',['conditional< false, T, F >',['../structcutlass_1_1platform_1_1conditional_3_01false_00_01T_00_01F_01_4.html',1,'cutlass::platform']]],
['constiterator',['ConstIterator',['../classcutlass_1_1PredicateVector_1_1ConstIterator.html',1,'cutlass::PredicateVector< kPredicates_, kPredicatesPerByte_, kPredicateStart_ >::ConstIterator'],['../classcutlass_1_1TensorRefBatchStrided_1_1ConstIterator.html',1,'cutlass::TensorRefBatchStrided< Storage_, Rank_, MapFunc_, StorageRank_, Index_, LongIndex_ >::ConstIterator'],['../classcutlass_1_1TensorRefArray_1_1ConstIterator.html',1,'cutlass::TensorRefArray< Storage_, Rank_, MapFunc_, StorageRank_, Index_, LongIndex_ >::ConstIterator']]],
['constpredicatetileadapter',['ConstPredicateTileAdapter',['../structcutlass_1_1ConstPredicateTileAdapter.html',1,'cutlass']]],
['contiguouslayout',['ContiguousLayout',['../structcutlass_1_1MatrixLayout_1_1ContiguousLayout.html',1,'cutlass::MatrixLayout']]],
['convert',['Convert',['../structcutlass_1_1Convert.html',1,'cutlass']]],
['convert_3c_20fragment_3c_20inputscalar_5f_2c_20kscalars_5f_20_3e_2c_20fragment_3c_20outputscalar_5f_2c_20kscalars_5f_20_3e_20_3e',['Convert< Fragment< InputScalar_, kScalars_ >, Fragment< OutputScalar_, kScalars_ > >',['../structcutlass_1_1Convert_3_01Fragment_3_01InputScalar___00_01kScalars___01_4_00_01Fragment_3_01Ofca5985d18bcb54bc1f49355f3cee121.html',1,'cutlass']]],
['const_5fiterator',['const_iterator',['../classcutlass_1_1Array_3_01T_00_01N_00_01true_01_4_1_1const__iterator.html',1,'cutlass::Array< T, N, true >']]],
['const_5fiterator',['const_iterator',['../classcutlass_1_1Array_3_01T_00_01N_00_01false_01_4_1_1const__iterator.html',1,'cutlass::Array< T, N, false >']]],
['const_5freference',['const_reference',['../classcutlass_1_1Array_3_01T_00_01N_00_01false_01_4_1_1const__reference.html',1,'cutlass::Array< T, N, false >']]],
['const_5freverse_5fiterator',['const_reverse_iterator',['../classcutlass_1_1Array_3_01T_00_01N_00_01false_01_4_1_1const__reverse__iterator.html',1,'cutlass::Array< T, N, false >']]],
['const_5freverse_5fiterator',['const_reverse_iterator',['../classcutlass_1_1Array_3_01T_00_01N_00_01true_01_4_1_1const__reverse__iterator.html',1,'cutlass::Array< T, N, true >']]],
['constiterator',['ConstIterator',['../classcutlass_1_1PredicateVector_1_1ConstIterator.html',1,'cutlass::PredicateVector']]],
['constsubbytereference',['ConstSubbyteReference',['../classcutlass_1_1ConstSubbyteReference.html',1,'cutlass']]],
['contiguousmatrix',['ContiguousMatrix',['../structcutlass_1_1layout_1_1ContiguousMatrix.html',1,'cutlass::layout']]],
['convert',['Convert',['../classcutlass_1_1epilogue_1_1thread_1_1Convert.html',1,'cutlass::epilogue::thread']]],
['coord',['Coord',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_202_2c_20int_20_3e',['Coord< 2, int >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_203_20_3e',['Coord< 3 >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_203_2c_20int_20_3e',['Coord< 3, int >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_204_20_3e',['Coord< 4 >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_204_2c_20index_5f_20_3e',['Coord< 4, Index_ >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_204_2c_20int_20_3e',['Coord< 4, int >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_20kstoragerank_20_2d_201_20_3e',['Coord< kStorageRank - 1 >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['copy',['Copy',['../structcutlass_1_1Copy.html',1,'cutlass']]]
['coord_3c_20kstriderank_20_3e',['Coord< kStrideRank >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_20kstriderank_2c_20index_20_3e',['Coord< kStrideRank, Index >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_20kstriderank_2c_20index_2c_20longindex_20_3e',['Coord< kStrideRank, Index, LongIndex >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['coord_3c_20layout_3a_3akrank_20_3e',['Coord< Layout::kRank >',['../structcutlass_1_1Coord.html',1,'cutlass']]],
['cuda_5fexception',['cuda_exception',['../classcutlass_1_1cuda__exception.html',1,'cutlass']]]
];