Skip to content

Commit

Permalink
Reduce permutations of most expensive tests
Browse files Browse the repository at this point in the history
Half the number of entries in kVector{TYPE}Values. This can  reduce the time taken for builtins that use these as two parameterized arguments by 4x.

Switch min() and max() to using the sparse scalar ranges. These feature in the top-25 slowest tests for the CTS.
  • Loading branch information
ben-clayton committed Feb 7, 2024
1 parent 95501a0 commit 9ce9531
Show file tree
Hide file tree
Showing 18 changed files with 146 additions and 182 deletions.
210 changes: 105 additions & 105 deletions src/resources/cache/hashes.json
Original file line number Diff line number Diff line change
@@ -1,107 +1,107 @@
{
"webgpu/shader/execution/binary/af_addition.bin": "9755be26",
"webgpu/shader/execution/binary/af_logical.bin": "1dee20d1",
"webgpu/shader/execution/binary/af_division.bin": "2c0ece2c",
"webgpu/shader/execution/binary/af_matrix_addition.bin": "90b4218a",
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "dc3be66b",
"webgpu/shader/execution/binary/af_multiplication.bin": "3ed2d0cd",
"webgpu/shader/execution/binary/af_remainder.bin": "432a22fc",
"webgpu/shader/execution/binary/af_subtraction.bin": "51cd965a",
"webgpu/shader/execution/binary/f16_addition.bin": "6c4661ac",
"webgpu/shader/execution/binary/f16_logical.bin": "aabe0f6",
"webgpu/shader/execution/binary/f16_division.bin": "49799d6e",
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "a33291ac",
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "706c8614",
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "92d2a48e",
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "9ad06094",
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "b29b9af1",
"webgpu/shader/execution/binary/f16_multiplication.bin": "241efe28",
"webgpu/shader/execution/binary/f16_remainder.bin": "55174180",
"webgpu/shader/execution/binary/f16_subtraction.bin": "8c7e2afb",
"webgpu/shader/execution/binary/f32_addition.bin": "e379f168",
"webgpu/shader/execution/binary/f32_logical.bin": "b6486329",
"webgpu/shader/execution/binary/f32_division.bin": "906311cf",
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "a3bba0eb",
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "87f0606d",
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "dfa59308",
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "6cfa7d3",
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "405f43da",
"webgpu/shader/execution/binary/f32_multiplication.bin": "a25a787f",
"webgpu/shader/execution/binary/f32_remainder.bin": "1678d0f3",
"webgpu/shader/execution/binary/f32_subtraction.bin": "eae9a902",
"webgpu/shader/execution/binary/i32_arithmetic.bin": "bbd740a1",
"webgpu/shader/execution/binary/i32_comparison.bin": "7e902d26",
"webgpu/shader/execution/binary/u32_arithmetic.bin": "1c5583d5",
"webgpu/shader/execution/binary/u32_comparison.bin": "33be7f31",
"webgpu/shader/execution/abs.bin": "c867fb38",
"webgpu/shader/execution/acos.bin": "be19d623",
"webgpu/shader/execution/acosh.bin": "d3649d20",
"webgpu/shader/execution/asin.bin": "3d2695b0",
"webgpu/shader/execution/asinh.bin": "559040d5",
"webgpu/shader/execution/atan.bin": "582f39ca",
"webgpu/shader/execution/atan2.bin": "46e24d4",
"webgpu/shader/execution/atanh.bin": "1af4af2",
"webgpu/shader/execution/bitcast.bin": "df71d701",
"webgpu/shader/execution/ceil.bin": "845cf1e6",
"webgpu/shader/execution/clamp.bin": "a053e15",
"webgpu/shader/execution/cos.bin": "dce44ab3",
"webgpu/shader/execution/cosh.bin": "56c5a4e4",
"webgpu/shader/execution/cross.bin": "98c00b9f",
"webgpu/shader/execution/degrees.bin": "92019849",
"webgpu/shader/execution/determinant.bin": "f4af66e6",
"webgpu/shader/execution/distance.bin": "9e50adac",
"webgpu/shader/execution/dot.bin": "3e5525a1",
"webgpu/shader/execution/exp.bin": "4c065c76",
"webgpu/shader/execution/exp2.bin": "adcd3a21",
"webgpu/shader/execution/faceForward.bin": "8a8d8685",
"webgpu/shader/execution/floor.bin": "d9873745",
"webgpu/shader/execution/fma.bin": "8b1f2abc",
"webgpu/shader/execution/fract.bin": "8e151885",
"webgpu/shader/execution/frexp.bin": "d6571dbe",
"webgpu/shader/execution/inverseSqrt.bin": "132ab36d",
"webgpu/shader/execution/ldexp.bin": "9827613d",
"webgpu/shader/execution/length.bin": "37e2a162",
"webgpu/shader/execution/log.bin": "71332cd1",
"webgpu/shader/execution/log2.bin": "e580764f",
"webgpu/shader/execution/max.bin": "ead9520e",
"webgpu/shader/execution/min.bin": "149badb",
"webgpu/shader/execution/mix.bin": "a0b58a6c",
"webgpu/shader/execution/modf.bin": "278afe21",
"webgpu/shader/execution/normalize.bin": "227413d0",
"webgpu/shader/execution/pack2x16float.bin": "3404ec6f",
"webgpu/shader/execution/pow.bin": "3824b6dd",
"webgpu/shader/execution/quantizeToF16.bin": "501b2013",
"webgpu/shader/execution/radians.bin": "c214442d",
"webgpu/shader/execution/reflect.bin": "1f3ec378",
"webgpu/shader/execution/refract.bin": "11d0ef06",
"webgpu/shader/execution/round.bin": "f981d400",
"webgpu/shader/execution/saturate.bin": "a6bbe93e",
"webgpu/shader/execution/sign.bin": "4a2a514f",
"webgpu/shader/execution/sin.bin": "ff70ba59",
"webgpu/shader/execution/sinh.bin": "c0302fb0",
"webgpu/shader/execution/smoothstep.bin": "e88285f6",
"webgpu/shader/execution/sqrt.bin": "115a6f54",
"webgpu/shader/execution/step.bin": "d5c0a1b7",
"webgpu/shader/execution/tan.bin": "9d80cd2e",
"webgpu/shader/execution/tanh.bin": "6d7f7ecc",
"webgpu/shader/execution/transpose.bin": "d346d8e5",
"webgpu/shader/execution/trunc.bin": "977370bf",
"webgpu/shader/execution/unpack2x16float.bin": "4699bafc",
"webgpu/shader/execution/unpack2x16snorm.bin": "7f9df5a0",
"webgpu/shader/execution/unpack2x16unorm.bin": "51e232a6",
"webgpu/shader/execution/unpack4x8snorm.bin": "d887142a",
"webgpu/shader/execution/unpack4x8unorm.bin": "fa243574",
"webgpu/shader/execution/unary/af_arithmetic.bin": "e3ff7a88",
"webgpu/shader/execution/unary/af_assignment.bin": "6a791651",
"webgpu/shader/execution/unary/bool_conversion.bin": "a5de0db4",
"webgpu/shader/execution/unary/f16_arithmetic.bin": "a009769f",
"webgpu/shader/execution/unary/f16_conversion.bin": "9c5d7ce0",
"webgpu/shader/execution/unary/f32_arithmetic.bin": "e0aff9c",
"webgpu/shader/execution/unary/f32_conversion.bin": "86c3571d",
"webgpu/shader/execution/unary/i32_arithmetic.bin": "b3588ea6",
"webgpu/shader/execution/unary/i32_complement.bin": "93221538",
"webgpu/shader/execution/unary/i32_conversion.bin": "ed1d110",
"webgpu/shader/execution/unary/u32_complement.bin": "cf4b466a",
"webgpu/shader/execution/unary/u32_conversion.bin": "d6d0d40d",
"webgpu/shader/execution/unary/ai_assignment.bin": "9ca8ad4a"
"webgpu/shader/execution/binary/af_addition.bin": "636c75e9",
"webgpu/shader/execution/binary/af_logical.bin": "39d80908",
"webgpu/shader/execution/binary/af_division.bin": "e2f969e1",
"webgpu/shader/execution/binary/af_matrix_addition.bin": "988480cb",
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "8cd27e5f",
"webgpu/shader/execution/binary/af_multiplication.bin": "8edcabaa",
"webgpu/shader/execution/binary/af_remainder.bin": "b8f8615b",
"webgpu/shader/execution/binary/af_subtraction.bin": "86f2ca00",
"webgpu/shader/execution/binary/f16_addition.bin": "d4afa09d",
"webgpu/shader/execution/binary/f16_logical.bin": "3449bd97",
"webgpu/shader/execution/binary/f16_division.bin": "7d30817b",
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "994514aa",
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "18c91c2a",
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "d4cafe6a",
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "3f7022ad",
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "f13aa828",
"webgpu/shader/execution/binary/f16_multiplication.bin": "c0bdb22c",
"webgpu/shader/execution/binary/f16_remainder.bin": "fe91745",
"webgpu/shader/execution/binary/f16_subtraction.bin": "e70c7d1c",
"webgpu/shader/execution/binary/f32_addition.bin": "6e0f305b",
"webgpu/shader/execution/binary/f32_logical.bin": "c2d7735e",
"webgpu/shader/execution/binary/f32_division.bin": "9d7724ca",
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "9aba1a24",
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "5f0b2643",
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "2aa908eb",
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "6c10529c",
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "df6f658e",
"webgpu/shader/execution/binary/f32_multiplication.bin": "6ce2e5b2",
"webgpu/shader/execution/binary/f32_remainder.bin": "9631c1ed",
"webgpu/shader/execution/binary/f32_subtraction.bin": "577660a0",
"webgpu/shader/execution/binary/i32_arithmetic.bin": "5ec8bd2e",
"webgpu/shader/execution/binary/i32_comparison.bin": "33cecfd8",
"webgpu/shader/execution/binary/u32_arithmetic.bin": "505c9234",
"webgpu/shader/execution/binary/u32_comparison.bin": "e5998def",
"webgpu/shader/execution/abs.bin": "62a4ef58",
"webgpu/shader/execution/acos.bin": "47bad9bf",
"webgpu/shader/execution/acosh.bin": "c5a5b092",
"webgpu/shader/execution/asin.bin": "a13bf30c",
"webgpu/shader/execution/asinh.bin": "dbaecad5",
"webgpu/shader/execution/atan.bin": "b3f916",
"webgpu/shader/execution/atan2.bin": "18d1b3fb",
"webgpu/shader/execution/atanh.bin": "92f1f762",
"webgpu/shader/execution/bitcast.bin": "750b5a6f",
"webgpu/shader/execution/ceil.bin": "29eb187f",
"webgpu/shader/execution/clamp.bin": "5685c378",
"webgpu/shader/execution/cos.bin": "c4ad390f",
"webgpu/shader/execution/cosh.bin": "6d94a04c",
"webgpu/shader/execution/cross.bin": "e195d89e",
"webgpu/shader/execution/degrees.bin": "3340037",
"webgpu/shader/execution/determinant.bin": "417be30d",
"webgpu/shader/execution/distance.bin": "e04467b1",
"webgpu/shader/execution/dot.bin": "a9437e72",
"webgpu/shader/execution/exp.bin": "611bcabb",
"webgpu/shader/execution/exp2.bin": "edac7b9b",
"webgpu/shader/execution/faceForward.bin": "1dbff9e5",
"webgpu/shader/execution/floor.bin": "5bd13f6d",
"webgpu/shader/execution/fma.bin": "23a0055b",
"webgpu/shader/execution/fract.bin": "2cb949de",
"webgpu/shader/execution/frexp.bin": "b101e8d9",
"webgpu/shader/execution/inverseSqrt.bin": "cc1b336a",
"webgpu/shader/execution/ldexp.bin": "8b55a557",
"webgpu/shader/execution/length.bin": "5d62658a",
"webgpu/shader/execution/log.bin": "a5bc31d6",
"webgpu/shader/execution/log2.bin": "46bf3dca",
"webgpu/shader/execution/max.bin": "6b13f98f",
"webgpu/shader/execution/min.bin": "6a09d18b",
"webgpu/shader/execution/mix.bin": "c5aaa94a",
"webgpu/shader/execution/modf.bin": "87633ee7",
"webgpu/shader/execution/normalize.bin": "4d606661",
"webgpu/shader/execution/pack2x16float.bin": "5df56b27",
"webgpu/shader/execution/pow.bin": "85cafef4",
"webgpu/shader/execution/quantizeToF16.bin": "7d3d2354",
"webgpu/shader/execution/radians.bin": "2ad0ce53",
"webgpu/shader/execution/reflect.bin": "6045a29e",
"webgpu/shader/execution/refract.bin": "8702ffda",
"webgpu/shader/execution/round.bin": "54e897c6",
"webgpu/shader/execution/saturate.bin": "7e363fbb",
"webgpu/shader/execution/sign.bin": "edbc7867",
"webgpu/shader/execution/sin.bin": "4ebead60",
"webgpu/shader/execution/sinh.bin": "7cf834c8",
"webgpu/shader/execution/smoothstep.bin": "90718bb3",
"webgpu/shader/execution/sqrt.bin": "f2b67a13",
"webgpu/shader/execution/step.bin": "90e746d1",
"webgpu/shader/execution/tan.bin": "d5e2d31e",
"webgpu/shader/execution/tanh.bin": "e381bc81",
"webgpu/shader/execution/transpose.bin": "dea8d1bf",
"webgpu/shader/execution/trunc.bin": "7e3df942",
"webgpu/shader/execution/unpack2x16float.bin": "3b2e6e0d",
"webgpu/shader/execution/unpack2x16snorm.bin": "e05f8b47",
"webgpu/shader/execution/unpack2x16unorm.bin": "3b805d82",
"webgpu/shader/execution/unpack4x8snorm.bin": "85cc92be",
"webgpu/shader/execution/unpack4x8unorm.bin": "a6f05ffe",
"webgpu/shader/execution/unary/af_arithmetic.bin": "c0ff8e5f",
"webgpu/shader/execution/unary/af_assignment.bin": "cc434fc0",
"webgpu/shader/execution/unary/bool_conversion.bin": "5d5adad1",
"webgpu/shader/execution/unary/f16_arithmetic.bin": "a2cce9b7",
"webgpu/shader/execution/unary/f16_conversion.bin": "31546775",
"webgpu/shader/execution/unary/f32_arithmetic.bin": "85fc895f",
"webgpu/shader/execution/unary/f32_conversion.bin": "2f0d74ba",
"webgpu/shader/execution/unary/i32_arithmetic.bin": "445a679f",
"webgpu/shader/execution/unary/i32_complement.bin": "b063e111",
"webgpu/shader/execution/unary/i32_conversion.bin": "abae559",
"webgpu/shader/execution/unary/u32_complement.bin": "190227ac",
"webgpu/shader/execution/unary/u32_conversion.bin": "30f631ef",
"webgpu/shader/execution/unary/ai_assignment.bin": "311b4878"
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/bitcast.bin
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/cross.bin
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/dot.bin
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/frexp.bin
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/length.bin
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/max.bin
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/min.bin
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/modf.bin
Binary file not shown.
Binary file modified src/resources/cache/webgpu/shader/execution/normalize.bin
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ const cases = (['f32', 'f16', 'abstract'] as const)
.map(trait => ({
[`${trait}`]: () => {
return FP[trait].generateScalarPairToIntervalCases(
FP[trait].scalarRange(),
FP[trait].scalarRange(),
FP[trait].sparseScalarRange(),
FP[trait].sparseScalarRange(),
'unfiltered',
FP[trait].maxInterval
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ const cases = (['f32', 'f16', 'abstract'] as const)
.map(trait => ({
[`${trait}`]: () => {
return FP[trait].generateScalarPairToIntervalCases(
FP[trait].scalarRange(),
FP[trait].scalarRange(),
FP[trait].sparseScalarRange(),
FP[trait].sparseScalarRange(),
'unfiltered',
FP[trait].minInterval
);
Expand Down
110 changes: 37 additions & 73 deletions src/webgpu/util/math.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1171,27 +1171,18 @@ export function sparseI32Range(): readonly number[] {
const kVectorI32Values = {
2: kInterestingI32Values.flatMap(f => [
[f, 1],
[1, f],
[f, -1],
[-1, f],
]),
3: kInterestingI32Values.flatMap(f => [
[f, 1, 2],
[1, f, 2],
[1, 2, f],
[f, -1, -2],
[-1, f, -2],
[-1, -2, f],
[f, 1, -2],
[-1, f, 2],
[1, -2, f],
]),
4: kInterestingI32Values.flatMap(f => [
[f, 1, 2, 3],
[1, f, 2, 3],
[1, 2, f, 3],
[1, 2, 3, f],
[f, -1, -2, -3],
[-1, f, -2, -3],
[-1, -2, f, -3],
[-1, -2, -3, f],
[f, -1, 2, 3],
[1, f, -2, 3],
[1, 2, f, -3],
[-1, 2, -3, f],
]),
};

Expand Down Expand Up @@ -1361,29 +1352,20 @@ export function sparseScalarF32Range(): readonly number[] {
}

const kVectorF32Values = {
2: sparseScalarF32Range().flatMap(f => [
2: kInterestingF32Values.flatMap(f => [
[f, 1.0],
[1.0, f],
[f, -1.0],
[-1.0, f],
]),
3: sparseScalarF32Range().flatMap(f => [
[f, 1.0, 2.0],
[1.0, f, 2.0],
[1.0, 2.0, f],
[f, -1.0, -2.0],
[-1.0, f, -2.0],
[-1.0, -2.0, f],
3: kInterestingF32Values.flatMap(f => [
[f, 1.0, -2.0],
[-1.0, f, 2.0],
[1.0, -2.0, f],
]),
4: sparseScalarF32Range().flatMap(f => [
[f, 1.0, 2.0, 3.0],
[1.0, f, 2.0, 3.0],
[1.0, 2.0, f, 3.0],
[1.0, 2.0, 3.0, f],
[f, -1.0, -2.0, -3.0],
[-1.0, f, -2.0, -3.0],
[-1.0, -2.0, f, -3.0],
[-1.0, -2.0, -3.0, f],
4: kInterestingF32Values.flatMap(f => [
[f, -1.0, 2.0, 3.0],
[1.0, f, -2.0, 3.0],
[1.0, 2.0, f, -3.0],
[-1.0, 2.0, -3.0, f],
]),
};

Expand Down Expand Up @@ -1597,29 +1579,20 @@ export function sparseScalarF16Range(): readonly number[] {
}

const kVectorF16Values = {
2: sparseScalarF16Range().flatMap(f => [
2: kInterestingF16Values.flatMap(f => [
[f, 1.0],
[1.0, f],
[f, -1.0],
[-1.0, f],
]),
3: sparseScalarF16Range().flatMap(f => [
[f, 1.0, 2.0],
[1.0, f, 2.0],
[1.0, 2.0, f],
[f, -1.0, -2.0],
[-1.0, f, -2.0],
[-1.0, -2.0, f],
3: kInterestingF16Values.flatMap(f => [
[f, 1.0, -2.0],
[-1.0, f, 2.0],
[1.0, -2.0, f],
]),
4: sparseScalarF16Range().flatMap(f => [
[f, 1.0, 2.0, 3.0],
[1.0, f, 2.0, 3.0],
[1.0, 2.0, f, 3.0],
[1.0, 2.0, 3.0, f],
[f, -1.0, -2.0, -3.0],
[-1.0, f, -2.0, -3.0],
[-1.0, -2.0, f, -3.0],
[-1.0, -2.0, -3.0, f],
4: kInterestingF16Values.flatMap(f => [
[f, -1.0, 2.0, 3.0],
[1.0, f, -2.0, 3.0],
[1.0, 2.0, f, -3.0],
[-1.0, 2.0, -3.0, f],
]),
};

Expand Down Expand Up @@ -1833,29 +1806,20 @@ export function sparseScalarF64Range(): readonly number[] {
}

const kVectorF64Values = {
2: sparseScalarF64Range().flatMap(f => [
2: kInterestingF64Values.flatMap(f => [
[f, 1.0],
[1.0, f],
[f, -1.0],
[-1.0, f],
]),
3: sparseScalarF64Range().flatMap(f => [
[f, 1.0, 2.0],
[1.0, f, 2.0],
[1.0, 2.0, f],
[f, -1.0, -2.0],
[-1.0, f, -2.0],
[-1.0, -2.0, f],
3: kInterestingF64Values.flatMap(f => [
[f, 1.0, -2.0],
[-1.0, f, 2.0],
[1.0, -2.0, f],
]),
4: sparseScalarF64Range().flatMap(f => [
[f, 1.0, 2.0, 3.0],
[1.0, f, 2.0, 3.0],
[1.0, 2.0, f, 3.0],
[1.0, 2.0, 3.0, f],
[f, -1.0, -2.0, -3.0],
[-1.0, f, -2.0, -3.0],
[-1.0, -2.0, f, -3.0],
[-1.0, -2.0, -3.0, f],
4: kInterestingF64Values.flatMap(f => [
[f, -1.0, 2.0, 3.0],
[1.0, f, -2.0, 3.0],
[1.0, 2.0, f, -3.0],
[-1.0, 2.0, -3.0, f],
]),
};

Expand Down

0 comments on commit 9ce9531

Please sign in to comment.