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:
+21
-39
@@ -1,42 +1,21 @@
|
||||
var searchData=
|
||||
[
|
||||
['identity',['Identity',['../structcutlass_1_1Identity.html',1,'cutlass']]],
|
||||
['identityblockswizzle',['IdentityBlockSwizzle',['../structcutlass_1_1gemm_1_1IdentityBlockSwizzle.html',1,'cutlass::gemm']]],
|
||||
['identitytensormapfunc',['IdentityTensorMapFunc',['../structcutlass_1_1IdentityTensorMapFunc.html',1,'cutlass']]],
|
||||
['identitytensormapfunc_3c_20rank_5f_20_3e',['IdentityTensorMapFunc< Rank_ >',['../structcutlass_1_1IdentityTensorMapFunc.html',1,'cutlass']]],
|
||||
['igemmconfig',['IgemmConfig',['../structcutlass_1_1gemm_1_1IgemmConfig.html',1,'cutlass::gemm']]],
|
||||
['igemmconfig_3c_20outputtile_5f_2c_20int8_5ft_2c_20threadgemmshape_5f_20_3e',['IgemmConfig< OutputTile_, int8_t, ThreadGemmShape_ >',['../structcutlass_1_1gemm_1_1IgemmConfig_3_01OutputTile___00_01int8__t_00_01ThreadGemmShape___01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmepilogue',['IgemmEpilogue',['../structcutlass_1_1gemm_1_1IgemmEpilogue.html',1,'cutlass::gemm']]],
|
||||
['igemmepilogue_3c_20gemmepiloguetraits_5f_2c_20true_20_3e',['IgemmEpilogue< GemmEpilogueTraits_, true >',['../structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmepiloguescalar',['IgemmEpilogueScalar',['../structcutlass_1_1gemm_1_1IgemmEpilogueScalar.html',1,'cutlass::gemm']]],
|
||||
['igemmepiloguescalar_3c_20int_20_3e',['IgemmEpilogueScalar< int >',['../structcutlass_1_1gemm_1_1IgemmEpilogueScalar_3_01int_01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmepiloguetraits',['IgemmEpilogueTraits',['../structcutlass_1_1gemm_1_1IgemmEpilogueTraits.html',1,'cutlass::gemm']]],
|
||||
['igemmepiloguetraitshelper',['IgemmEpilogueTraitsHelper',['../structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html',1,'cutlass::gemm']]],
|
||||
['igemmfloattoint8converter',['IgemmFloatToInt8Converter',['../structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html',1,'cutlass::gemm']]],
|
||||
['igemmglobaliteratorab',['IgemmGlobalIteratorAb',['../structcutlass_1_1gemm_1_1IgemmGlobalIteratorAb.html',1,'cutlass::gemm']]],
|
||||
['igemmgloballoadtransformer',['IgemmGlobalLoadTransformer',['../structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer.html',1,'cutlass::gemm']]],
|
||||
['igemmgloballoadtransformer_3c_20fragment_3c_20int8_5ft_2c_20kelements_5f_20_3e_2c_20float_20_3e',['IgemmGlobalLoadTransformer< Fragment< int8_t, kElements_ >, float >',['../structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer_3_01Fragment_3_01int8__t_00_01kElements___01_4_00_01float_01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmglobalstoretransformer',['IgemmGlobalStoreTransformer',['../structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer.html',1,'cutlass::gemm']]],
|
||||
['igemmglobalstoretransformer_3c_20float_2c_20fragment_3c_20int8_5ft_2c_20kelements_5f_20_3e_20_3e',['IgemmGlobalStoreTransformer< float, Fragment< int8_t, kElements_ > >',['../structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer_3_01float_00_01Fragment_3_01int8__t_00_01kElements___01_4_01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmglobaltiletraits',['IgemmGlobalTileTraits',['../structcutlass_1_1gemm_1_1IgemmGlobalTileTraits.html',1,'cutlass::gemm']]],
|
||||
['igemmint8tofloatconverter',['IgemmInt8ToFloatConverter',['../structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html',1,'cutlass::gemm']]],
|
||||
['igemmsharedstoretransformer',['IgemmSharedStoreTransformer',['../structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer.html',1,'cutlass::gemm']]],
|
||||
['igemmswizzle',['IgemmSwizzle',['../structcutlass_1_1gemm_1_1IgemmSwizzle.html',1,'cutlass::gemm']]],
|
||||
['igemmtiletraitshelpera',['IgemmTileTraitsHelperA',['../structcutlass_1_1gemm_1_1IgemmTileTraitsHelperA.html',1,'cutlass::gemm']]],
|
||||
['igemmtiletraitshelpera_3c_20matrixlayout_3a_3akcolumnmajor_2c_20gemmconfig_5f_2c_20index_5f_20_3e',['IgemmTileTraitsHelperA< MatrixLayout::kColumnMajor, GemmConfig_, Index_ >',['../structcutlass_1_1gemm_1_1IgemmTileTraitsHelperA_3_01MatrixLayout_1_1kColumnMajor_00_01GemmConfig___00_01Index___01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmtiletraitshelpera_3c_20matrixlayout_3a_3akrowmajor_2c_20gemmconfig_5f_2c_20index_5f_20_3e',['IgemmTileTraitsHelperA< MatrixLayout::kRowMajor, GemmConfig_, Index_ >',['../structcutlass_1_1gemm_1_1IgemmTileTraitsHelperA_3_01MatrixLayout_1_1kRowMajor_00_01GemmConfig___00_01Index___01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmtiletraitshelperb',['IgemmTileTraitsHelperB',['../structcutlass_1_1gemm_1_1IgemmTileTraitsHelperB.html',1,'cutlass::gemm']]],
|
||||
['igemmtiletraitshelperb_3c_20matrixlayout_3a_3akcolumnmajor_2c_20gemmconfig_5f_2c_20index_5f_20_3e',['IgemmTileTraitsHelperB< MatrixLayout::kColumnMajor, GemmConfig_, Index_ >',['../structcutlass_1_1gemm_1_1IgemmTileTraitsHelperB_3_01MatrixLayout_1_1kColumnMajor_00_01GemmConfig___00_01Index___01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmtiletraitshelperb_3c_20matrixlayout_3a_3akrowmajor_2c_20gemmconfig_5f_2c_20index_5f_20_3e',['IgemmTileTraitsHelperB< MatrixLayout::kRowMajor, GemmConfig_, Index_ >',['../structcutlass_1_1gemm_1_1IgemmTileTraitsHelperB_3_01MatrixLayout_1_1kRowMajor_00_01GemmConfig___00_01Index___01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmtraits',['IgemmTraits',['../structcutlass_1_1gemm_1_1IgemmTraits.html',1,'cutlass::gemm']]],
|
||||
['igemmtraitshelper',['IgemmTraitsHelper',['../structcutlass_1_1gemm_1_1IgemmTraitsHelper.html',1,'cutlass::gemm']]],
|
||||
['igemmtransformera',['IgemmTransformerA',['../structcutlass_1_1gemm_1_1IgemmTransformerA.html',1,'cutlass::gemm']]],
|
||||
['igemmtransformera_3c_20matrixlayout_3a_3akcolumnmajor_2c_20iterator_5f_20_3e',['IgemmTransformerA< MatrixLayout::kColumnMajor, Iterator_ >',['../structcutlass_1_1gemm_1_1IgemmTransformerA_3_01MatrixLayout_1_1kColumnMajor_00_01Iterator___01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmtransformera_3c_20matrixlayout_3a_3akrowmajor_2c_20iterator_5f_20_3e',['IgemmTransformerA< MatrixLayout::kRowMajor, Iterator_ >',['../structcutlass_1_1gemm_1_1IgemmTransformerA_3_01MatrixLayout_1_1kRowMajor_00_01Iterator___01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmtransformerb',['IgemmTransformerB',['../structcutlass_1_1gemm_1_1IgemmTransformerB.html',1,'cutlass::gemm']]],
|
||||
['igemmtransformerb_3c_20matrixlayout_3a_3akcolumnmajor_2c_20iterator_5f_20_3e',['IgemmTransformerB< MatrixLayout::kColumnMajor, Iterator_ >',['../structcutlass_1_1gemm_1_1IgemmTransformerB_3_01MatrixLayout_1_1kColumnMajor_00_01Iterator___01_4.html',1,'cutlass::gemm']]],
|
||||
['igemmtransformerb_3c_20matrixlayout_3a_3akrowmajor_2c_20iterator_5f_20_3e',['IgemmTransformerB< MatrixLayout::kRowMajor, Iterator_ >',['../structcutlass_1_1gemm_1_1IgemmTransformerB_3_01MatrixLayout_1_1kRowMajor_00_01Iterator___01_4.html',1,'cutlass::gemm']]],
|
||||
['int4_5ft',['int4_t',['../structcutlass_1_1int4__t.html',1,'cutlass']]],
|
||||
['identitytensorlayout',['IdentityTensorLayout',['../classcutlass_1_1IdentityTensorLayout.html',1,'cutlass']]],
|
||||
['integer_5fsubbyte',['integer_subbyte',['../structcutlass_1_1integer__subbyte.html',1,'cutlass']]],
|
||||
['integer_5ftype',['integer_type',['../structcutlass_1_1TypeTraits_3_01complex_3_01double_01_4_01_4_1_1integer__type.html',1,'cutlass::TypeTraits< complex< double > >']]],
|
||||
['integertype',['IntegerType',['../structcutlass_1_1IntegerType.html',1,'cutlass']]],
|
||||
['integertype_3c_201_2c_20false_20_3e',['IntegerType< 1, false >',['../structcutlass_1_1IntegerType_3_011_00_01false_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_201_2c_20true_20_3e',['IntegerType< 1, true >',['../structcutlass_1_1IntegerType_3_011_00_01true_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_2016_2c_20false_20_3e',['IntegerType< 16, false >',['../structcutlass_1_1IntegerType_3_0116_00_01false_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_2016_2c_20true_20_3e',['IntegerType< 16, true >',['../structcutlass_1_1IntegerType_3_0116_00_01true_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_2032_2c_20false_20_3e',['IntegerType< 32, false >',['../structcutlass_1_1IntegerType_3_0132_00_01false_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_2032_2c_20true_20_3e',['IntegerType< 32, true >',['../structcutlass_1_1IntegerType_3_0132_00_01true_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_204_2c_20false_20_3e',['IntegerType< 4, false >',['../structcutlass_1_1IntegerType_3_014_00_01false_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_204_2c_20true_20_3e',['IntegerType< 4, true >',['../structcutlass_1_1IntegerType_3_014_00_01true_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_2064_2c_20false_20_3e',['IntegerType< 64, false >',['../structcutlass_1_1IntegerType_3_0164_00_01false_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_2064_2c_20true_20_3e',['IntegerType< 64, true >',['../structcutlass_1_1IntegerType_3_0164_00_01true_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_208_2c_20false_20_3e',['IntegerType< 8, false >',['../structcutlass_1_1IntegerType_3_018_00_01false_01_4.html',1,'cutlass']]],
|
||||
['integertype_3c_208_2c_20true_20_3e',['IntegerType< 8, true >',['../structcutlass_1_1IntegerType_3_018_00_01true_01_4.html',1,'cutlass']]],
|
||||
['integral_5fconstant',['integral_constant',['../structcutlass_1_1platform_1_1integral__constant.html',1,'cutlass::platform']]],
|
||||
['integral_5fconstant_3c_20bool_2c_20v_20_3e',['integral_constant< bool, V >',['../structcutlass_1_1platform_1_1integral__constant.html',1,'cutlass::platform']]],
|
||||
['integral_5fconstant_3c_20bool_2c_28is_5farithmetic_3c_20t_20_3e_3a_3avalue_7c_7cis_5fvoid_3c_20t_20_3e_3a_3avalue_7c_7cis_5fsame_3c_20nullptr_5ft_2c_20remove_5fcv_3c_20t_20_3e_3a_3atype_20_3e_3a_3avalue_29_3e',['integral_constant< bool,(is_arithmetic< T >::value||is_void< T >::value||is_same< nullptr_t, remove_cv< T >::type >::value)>',['../structcutlass_1_1platform_1_1integral__constant.html',1,'cutlass::platform']]],
|
||||
@@ -44,7 +23,9 @@ var searchData=
|
||||
['integral_5fconstant_3c_20bool_2c_28is_5ffundamental_3c_20t_20_3e_3a_3avalue_7c_7cis_5fpointer_3c_20t_20_3e_3a_3avalue_29_3e',['integral_constant< bool,(is_fundamental< T >::value||is_pointer< T >::value)>',['../structcutlass_1_1platform_1_1integral__constant.html',1,'cutlass::platform']]],
|
||||
['integral_5fconstant_3c_20bool_2c_28is_5fintegral_3c_20t_20_3e_3a_3avalue_7c_7cis_5ffloating_5fpoint_3c_20t_20_3e_3a_3avalue_29_3e',['integral_constant< bool,(is_integral< T >::value||is_floating_point< T >::value)>',['../structcutlass_1_1platform_1_1integral__constant.html',1,'cutlass::platform']]],
|
||||
['integral_5fconstant_3c_20bool_2c_28is_5fsame_3c_20float_2c_20remove_5fcv_3c_20t_20_3e_3a_3atype_20_3e_3a_3avalue_7c_7cis_5fsame_3c_20double_2c_20remove_5fcv_3c_20t_20_3e_3a_3atype_20_3e_3a_3avalue_29_3e',['integral_constant< bool,(is_same< float, remove_cv< T >::type >::value||is_same< double, remove_cv< T >::type >::value)>',['../structcutlass_1_1platform_1_1integral__constant.html',1,'cutlass::platform']]],
|
||||
['integral_5fconstant_3c_20bool_2c_28n_20_26_28n_20_2d_201_29_29_3d_3d0_20_3e',['integral_constant< bool,(N &(N - 1))==0 >',['../structcutlass_1_1platform_1_1integral__constant.html',1,'cutlass::platform']]],
|
||||
['interleavedepilogue',['InterleavedEpilogue',['../classcutlass_1_1epilogue_1_1threadblock_1_1InterleavedEpilogue.html',1,'cutlass::epilogue::threadblock']]],
|
||||
['interleavedoutputtilethreadmap',['InterleavedOutputTileThreadMap',['../structcutlass_1_1epilogue_1_1threadblock_1_1InterleavedOutputTileThreadMap.html',1,'cutlass::epilogue::threadblock']]],
|
||||
['interleavedpredicatedtileiterator',['InterleavedPredicatedTileIterator',['../classcutlass_1_1epilogue_1_1threadblock_1_1InterleavedPredicatedTileIterator.html',1,'cutlass::epilogue::threadblock']]],
|
||||
['is_5farithmetic',['is_arithmetic',['../structcutlass_1_1platform_1_1is__arithmetic.html',1,'cutlass::platform']]],
|
||||
['is_5fbase_5fof',['is_base_of',['../structcutlass_1_1platform_1_1is__base__of.html',1,'cutlass::platform']]],
|
||||
['is_5fbase_5fof_5fhelper',['is_base_of_helper',['../structcutlass_1_1platform_1_1is__base__of__helper.html',1,'cutlass::platform']]],
|
||||
@@ -77,6 +58,7 @@ var searchData=
|
||||
['is_5fvoid',['is_void',['../structcutlass_1_1platform_1_1is__void.html',1,'cutlass::platform']]],
|
||||
['is_5fvolatile',['is_volatile',['../structcutlass_1_1platform_1_1is__volatile.html',1,'cutlass::platform']]],
|
||||
['is_5fvolatile_3c_20volatile_20t_20_3e',['is_volatile< volatile T >',['../structcutlass_1_1platform_1_1is__volatile_3_01volatile_01T_01_4.html',1,'cutlass::platform']]],
|
||||
['iterator',['iterator',['../classcutlass_1_1Array_3_01T_00_01N_00_01true_01_4_1_1iterator.html',1,'cutlass::Array< T, N, true >']]],
|
||||
['iterator',['Iterator',['../classcutlass_1_1PredicateVector_1_1Iterator.html',1,'cutlass::PredicateVector']]],
|
||||
['iteratoradvance',['IteratorAdvance',['../structcutlass_1_1IteratorAdvance.html',1,'cutlass']]]
|
||||
['iterator',['iterator',['../classcutlass_1_1Array_3_01T_00_01N_00_01false_01_4_1_1iterator.html',1,'cutlass::Array< T, N, false >']]]
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user