# A config to generate a fast kernel for BERT model GEMMs # update parameters to produce best kernel(S) # to keep number of kernel produced minimum # 1) add new sections if certain paramters are more conducive to certain problem sizes # 2) create separate sections for replacement kernel(s) # 3) create separate sections for problem sizes belongs to specific model parameter sizes GlobalParameters: MinimumRequiredVersion: 4.14.0 PrintLevel: 1 ForceRedoBenchmarkProblems: True ForceRedoLibraryLogic: True ForceRedoLibraryClient: True CMakeBuildType: Release EnqueuesPerSync: 1 SyncsPerBenchmark: 1 LibraryPrintDebug: False NumElementsToValidate: 1 ValidationMaxToPrint: 4 ValidationPrintValids: False ShortNames: False MergeFiles: True Platform: 0 Device: 0 KernelTime: True PinClocks: False SleepPercent: 0 PrintSolutionRejectionReason: True DataInitTypeA: 3 DataInitTypeB: 3 DataInitTypeBeta: 0 DataInitTypeAlpha: 1 PrintTensorA: 0 PrintTensorB: 0 PrintTensorD: 0 BenchmarkProblems: ######################################## # TN - # max_sequenth_lenth = 128 ######################################## - - # ProblemType OperationType: GEMM DataType: s TransposeA: True TransposeB: False UseBeta: True Batched: True ######################################## # TN - standard 2Blocks/Inst ######################################## - # BenchmarkProblemSizeGroup - Standard InitialSolutionParameters: BenchmarkCommonParameters: - KernelLanguage: ["Assembly"] - EdgeType: ["ShiftPtr"] - PrefetchLocalRead: [True] - PrefetchGlobalRead: [True] ForkParameters: - MatrixInstruction: - [32, 32, 1, 2] #- [32, 32, 2, 1] - ThreadTile: - [ 2, 32 ] - [ 1, 64 ] - WorkGroup: - [ 64, 4, 1 ] - [ 32, 8, 1 ] - WorkGroupMapping: [1] #- DirectToLds: [0] - TransposeLDS: [1] - LdsBlockSizePerPad: [128] - LdsPadA: [4] - LdsPadB: [4] - GlobalSplitU: [1] - DepthU: [ 16 ] - VectorWidth: [1] - GlobalReadVectorWidth: [4] - InnerUnroll: [1] - ScheduleIterAlg: [1] - OptNoLoadLoop: [0] BenchmarkForkParameters: JoinParameters: BenchmarkJoinParameters: BenchmarkFinalParameters: - ProblemSizes: - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,4096,1,4096,1056,1056,4128,4160 ] - Exact: [ 4096,4096,1,1024,4128,4128,1088,1056 ] - Exact: [ 1024,2048,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,3072,1,3072,1056,1056,3136,3104 ] - Exact: [ 3072,3072,1,1024,3104,3104,1088,1056 ] - Exact: [ 1024,2048,1,3072,1056,1056,3136,3104 ] - Exact: [ 3072,2048,1,1024,3104,3104,1088,1056 ] - Exact: [ 1024,512,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,512,1,3072,1056,1056,3136,3104 ] - Exact: [ 512,512,1,64,544,544,128,96 ] - Exact: [ 64,512,1,512,92,96,576,544 ] - Exact: [ 3072,512,1,1024,3104,3104,1088,1056 ] - Exact: [ 30528,4096,1,1024,30554,30554,1088,1056 ] - Exact: [ 30528,2048,1,1024,30554,30554,1088,1056 ] ######################################## # TN - standard 1Blocks/Inst ######################################## - # BenchmarkProblemSizeGroup - Standard InitialSolutionParameters: BenchmarkCommonParameters: - KernelLanguage: ["Assembly"] - EdgeType: ["ShiftPtr"] - PrefetchLocalRead: [True] - PrefetchGlobalRead: [True] ForkParameters: - MatrixInstruction: - [32, 32, 2, 1] - ThreadTile: - [ 2, 32 ] - [ 1, 64 ] - WorkGroup: - [ 64, 4, 1 ] - [ 32, 8, 1 ] - WorkGroupMapping: [1] #- DirectToLds: [0] - TransposeLDS: [1] - LdsBlockSizePerPad: [128] - LdsPadA: [4] - LdsPadB: [4] - GlobalSplitU: [1] - DepthU: [ 16 ] - VectorWidth: [1] - GlobalReadVectorWidth: [4] - InnerUnroll: [1] - ScheduleIterAlg: [1] - OptNoLoadLoop: [0] BenchmarkForkParameters: JoinParameters: BenchmarkJoinParameters: BenchmarkFinalParameters: - ProblemSizes: - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,4096,1,4096,1056,1056,4128,4160 ] - Exact: [ 4096,4096,1,1024,4128,4128,1088,1056 ] - Exact: [ 1024,2048,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,3072,1,3072,1056,1056,3136,3104 ] - Exact: [ 3072,3072,1,1024,3104,3104,1088,1056 ] - Exact: [ 1024,2048,1,3072,1056,1056,3136,3104 ] - Exact: [ 3072,2048,1,1024,3104,3104,1088,1056 ] - Exact: [ 1024,512,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,512,1,3072,1056,1056,3136,3104 ] - Exact: [ 512,512,1,64,544,544,128,96 ] - Exact: [ 64,512,1,512,92,96,576,544 ] - Exact: [ 3072,512,1,1024,3104,3104,1088,1056 ] - Exact: [ 30528,4096,1,1024,30554,30554,1088,1056 ] - Exact: [ 30528,2048,1,1024,30554,30554,1088,1056 ] ######################################## # NN - ######################################## - - # ProblemType OperationType: GEMM DataType: s TransposeA: False TransposeB: False UseBeta: True Batched: True ######################################## # NN - standard 2Blocks/Inst ######################################## - # BenchmarkProblemSizeGroup - Standard InitialSolutionParameters: BenchmarkCommonParameters: - KernelLanguage: ["Assembly"] - EdgeType: ["ShiftPtr"] - PrefetchLocalRead: [True] - PrefetchGlobalRead: [True] ForkParameters: - MatrixInstruction: - [32, 32, 1, 2] - ThreadTile: - [ 2, 32 ] - [ 1, 64 ] - WorkGroup: - [ 64, 4, 1 ] - [ 32, 8, 1 ] - WorkGroupMapping: [1] #- DirectToLds: [0] - TransposeLDS: [0] - GlobalSplitU: [1] - DepthU: [ 16 ] - VectorWidth: [1] - GlobalReadVectorWidth: [4] - InnerUnroll: [2] - ScheduleIterAlg: [1] - OptNoLoadLoop: [0] BenchmarkForkParameters: JoinParameters: BenchmarkJoinParameters: BenchmarkFinalParameters: - ProblemSizes: - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,4096,1,4096,1056,1056,4128,4160 ] - Exact: [ 4096,4096,1,1024,4128,4128,1088,1056 ] - Exact: [ 1024,2048,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,3072,1,3072,1056,1056,3136,3104 ] - Exact: [ 3072,3072,1,1024,3104,3104,1088,1056 ] - Exact: [ 1024,2048,1,3072,1056,1056,3136,3104 ] - Exact: [ 3072,2048,1,1024,3104,3104,1088,1056 ] - Exact: [ 1024,512,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,512,1,3072,1056,1056,3136,3104 ] - Exact: [ 512,512,1,64,544,544,128,96 ] - Exact: [ 64,512,1,512,92,96,576,544 ] - Exact: [ 3072,512,1,1024,3104,3104,1088,1056 ] - Exact: [ 30528,4096,1,1024,30554,30554,1088,1056 ] - Exact: [ 30528,2048,1,1024,30554,30554,1088,1056 ] ######################################## # NN - standard 1Blocks/Inst ######################################## - # BenchmarkProblemSizeGroup - Standard InitialSolutionParameters: BenchmarkCommonParameters: - KernelLanguage: ["Assembly"] - EdgeType: ["ShiftPtr"] - PrefetchLocalRead: [True] - PrefetchGlobalRead: [True] ForkParameters: - MatrixInstruction: - [32, 32, 2, 1] - ThreadTile: - [ 2, 32 ] - [ 1, 64 ] - WorkGroup: - [ 64, 4, 1 ] - [ 32, 8, 1 ] - WorkGroupMapping: [1] #- DirectToLds: [0] - TransposeLDS: [1] - LdsBlockSizePerPad: [128] - LdsPadA: [4] - LdsPadB: [4] - GlobalSplitU: [1] - DepthU: [ 16 ] - VectorWidth: [1] - GlobalReadVectorWidth: [4] - InnerUnroll: [2] - ScheduleIterAlg: [1] - OptNoLoadLoop: [0] BenchmarkForkParameters: JoinParameters: BenchmarkJoinParameters: BenchmarkFinalParameters: - ProblemSizes: - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,4096,1,4096,1056,1056,4128,4160 ] - Exact: [ 4096,4096,1,1024,4128,4128,1088,1056 ] - Exact: [ 1024,2048,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,3072,1,3072,1056,1056,3136,3104 ] - Exact: [ 3072,3072,1,1024,3104,3104,1088,1056 ] - Exact: [ 1024,2048,1,3072,1056,1056,3136,3104 ] - Exact: [ 3072,2048,1,1024,3104,3104,1088,1056 ] - Exact: [ 1024,512,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,512,1,3072,1056,1056,3136,3104 ] - Exact: [ 512,512,1,64,544,544,128,96 ] - Exact: [ 64,512,1,512,92,96,576,544 ] - Exact: [ 3072,512,1,1024,3104,3104,1088,1056 ] - Exact: [ 30528,4096,1,1024,30554,30554,1088,1056 ] - Exact: [ 30528,2048,1,1024,30554,30554,1088,1056 ] ######################################## # TN - standard 2Blocks/Inst # BERT BIG model # batch size 1, 4, 6 # seq_size : 512 ######################################## - # BenchmarkProblemSizeGroup - Standard InitialSolutionParameters: BenchmarkCommonParameters: - KernelLanguage: ["Assembly"] - EdgeType: ["ShiftPtr"] - PrefetchLocalRead: [True] - PrefetchGlobalRead: [True] ForkParameters: - MatrixInstruction: - [32, 32, 1, 2] - [32, 32, 2, 1] - [16, 16, 4, 1] - [16, 16, 1, 4] - ThreadTile: - [ 2, 32 ] - [ 1, 64 ] - [ 2, 16 ] - [ 4, 32 ] - WorkGroup: - [ 64, 4, 1 ] - [ 32, 8, 1 ] - [ 16, 16, 1 ] - WorkGroupMapping: [1] #- DirectToLds: [0] - TransposeLDS: [1] - LdsBlockSizePerPad: [128] - LdsPadA: [4] - LdsPadB: [4] - GlobalSplitU: [1] - DepthU: [ 16 ] - VectorWidth: [1] - GlobalReadVectorWidth: [4] - InnerUnroll: [1] - ScheduleIterAlg: [1] - OptNoLoadLoop: [0] BenchmarkForkParameters: JoinParameters: BenchmarkJoinParameters: BenchmarkFinalParameters: - ProblemSizes: - Exact: [ 1024,2048,1,3072,1056,1056,3136,3104 ] - Exact: [ 1024,3072,1,1024,1056,1056,1088,1056 ] - Exact: [ 1024,512,1,1024,1056,1056,1088,1056 ] - Exact: [ 3072,3072,1,1024,3104,3104,1088,1056 ] - Exact: [ 3072,512,1,1024,3104,3104,1088,1056 ] - Exact: [ 512,512,1,64,544,544,128,96 ] - Exact: [ 1024,80,1,1024,1056,1056,1088,1056 ] - Exact: [ 30522,120,1,1024,30554,30554,1088,1056 ] - Exact: [ 30522,20,1,1024,30554,30554,1088,1056 ] - Exact: [ 30522,80,1,1024,30554,30554,1088,1056 ] - Exact: [ 30522,160,1,1024,30554,30554,1088,1056 ] - Exact: [ 30522,120,1,1024,30554,30554,1088,1056 ] - Exact: [ 1024,120,1,1024,30554,30554,1088,1056 ] - Exact: [ 1024,20,1,1024,30554,30554,1088,1056 ] ######################################## LibraryLogic: ScheduleName: "arcturus" DeviceNames: ["Device 7380", "Device 7388", "Device 738c", "Device 7390"]