Skip to content

Commit 2480dfa

Browse files
authored
Remove compression on the case cache, split files to reduce transitive deps (#3197)
* Remove compression on the case cache Compression is not stable between Node versions, nor between operating systems. This inflates the cache size 10x (from 4.3M to 49M), however these files should not be frequently changing, and Git should be performing compressions with packfiles and during network operations. * Split cache generation from spec.ts files * Breakup monolithic imports Move commonly used code out of monolithic imports to reduce the amount of code imported by the `.cache.ts` files. Add a new `MUST_NOT_BE_IMPORTED_BY_DATA_CACHE` token that can be used to figure out why the cache wants to regenerate for a given file. Add this to device_pool.ts, as this really shouldn't be depended on for the cache.
1 parent 2979ce0 commit 2480dfa

File tree

330 files changed

+6109
-6037
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

330 files changed

+6109
-6037
lines changed

docs/case_cache.md

Lines changed: 15 additions & 10 deletions

src/common/framework/data_cache.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,11 @@ export interface Cacheable<Data> {
187187
/**
188188
* serialize() encodes `data` to a binary representation so that it can be stored in a cache file.
189189
*/
190-
serialize(data: Data): Promise<Uint8Array>;
190+
serialize(data: Data): Uint8Array;
191191

192192
/**
193193
* deserialize() is the inverse of serialize(), decoding the binary representation back to a Data
194194
* object.
195195
*/
196-
deserialize(binary: Uint8Array): Promise<Data>;
196+
deserialize(binary: Uint8Array): Data;
197197
}

src/common/tools/gen_cache.ts

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ dataCache.setStore({
8989
});
9090
setIsBuildingDataCache();
9191

92-
const specFileSuffix = __filename.endsWith('.ts') ? '.spec.ts' : '.spec.js';
92+
const cacheFileSuffix = __filename.endsWith('.ts') ? '.cache.ts' : '.cache.js';
9393

9494
/**
9595
* @returns a list of all the files under 'dir' that has the given extension
@@ -105,13 +105,27 @@ function glob(dir: string, ext: string) {
105105
files.push(`${file}/${child}`);
106106
}
107107
}
108+
108109
if (path.endsWith(ext) && fs.statSync(path).isFile()) {
109110
files.push(file);
110111
}
111112
}
112113
return files;
113114
}
114115

116+
/**
117+
* Exception type thrown by SourceHasher.hashFile() when a file annotated with
118+
* MUST_NOT_BE_IMPORTED_BY_DATA_CACHE is transitively imported by a .cache.ts file.
119+
*/
120+
class InvalidImportException {
121+
constructor(path: string) {
122+
this.stack = [path];
123+
}
124+
toString(): string {
125+
return `invalid transitive import for cache:\n ${this.stack.join('\n ')}`;
126+
}
127+
readonly stack: string[];
128+
}
115129
/**
116130
* SourceHasher is a utility for producing a hash of a source .ts file and its imported source files.
117131
*/
@@ -141,8 +155,19 @@ class SourceHasher {
141155
const normalized = content.replace('\r\n', '\n');
142156
let hash = crc32(normalized);
143157
for (const importPath of parseImports(path, normalized)) {
144-
const importHash = this.hashFile(importPath);
145-
hash = this.hashCombine(hash, importHash);
158+
try {
159+
const importHash = this.hashFile(importPath);
160+
hash = this.hashCombine(hash, importHash);
161+
} catch (ex) {
162+
if (ex instanceof InvalidImportException) {
163+
ex.stack.push(path);
164+
throw ex;
165+
}
166+
}
167+
}
168+
169+
if (content.includes('MUST_NOT_BE_IMPORTED_BY_DATA_CACHE')) {
170+
throw new InvalidImportException(path);
146171
}
147172

148173
this.hashes.set(path, hash);
@@ -180,7 +205,7 @@ async function build(suiteDir: string) {
180205
}
181206

182207
// Crawl files and convert paths to be POSIX-style, relative to suiteDir.
183-
const filesToEnumerate = glob(suiteDir, specFileSuffix)
208+
const filesToEnumerate = glob(suiteDir, cacheFileSuffix)
184209
.map(p => `${suiteDir}/${p}`)
185210
.sort();
186211

@@ -221,7 +246,7 @@ and
221246
}
222247
console.log(`building '${outPath}'`);
223248
const data = await cacheable.build();
224-
const serialized = await cacheable.serialize(data);
249+
const serialized = cacheable.serialize(data);
225250
fs.mkdirSync(path.dirname(outPath), { recursive: true });
226251
fs.writeFileSync(outPath, serialized, 'binary');
227252
fileHashes[cacheable.path] = fileHash;

src/resources/cache/hashes.json

Lines changed: 104 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,106 @@
11
{
2-
"webgpu/shader/execution/binary/af_addition.bin": "8e47fc86",
3-
"webgpu/shader/execution/binary/af_logical.bin": "348bc279",
4-
"webgpu/shader/execution/binary/af_division.bin": "82029c55",
5-
"webgpu/shader/execution/binary/af_matrix_addition.bin": "6deae35e",
6-
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "221a913c",
7-
"webgpu/shader/execution/binary/af_multiplication.bin": "53c87c5b",
8-
"webgpu/shader/execution/binary/af_remainder.bin": "dadb3ceb",
9-
"webgpu/shader/execution/binary/af_subtraction.bin": "a0a71e32",
10-
"webgpu/shader/execution/binary/f16_addition.bin": "acfee8",
11-
"webgpu/shader/execution/binary/f16_logical.bin": "78e0eec8",
12-
"webgpu/shader/execution/binary/f16_division.bin": "289b2aba",
13-
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "bada3cbe",
14-
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "bce23630",
15-
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "2d6bcf91",
16-
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "c3db5537",
17-
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "402931c",
18-
"webgpu/shader/execution/binary/f16_multiplication.bin": "ce381066",
19-
"webgpu/shader/execution/binary/f16_remainder.bin": "b2bd9246",
20-
"webgpu/shader/execution/binary/f16_subtraction.bin": "7f7e9abc",
21-
"webgpu/shader/execution/binary/f32_addition.bin": "71302f1a",
22-
"webgpu/shader/execution/binary/f32_logical.bin": "ad34883d",
23-
"webgpu/shader/execution/binary/f32_division.bin": "b35602bb",
24-
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "82339c4",
25-
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "33c2bd83",
26-
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "6b6dd016",
27-
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "7733299f",
28-
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "d99b4cc3",
29-
"webgpu/shader/execution/binary/f32_multiplication.bin": "ff22107c",
30-
"webgpu/shader/execution/binary/f32_remainder.bin": "44133c4c",
31-
"webgpu/shader/execution/binary/f32_subtraction.bin": "a9a5a319",
32-
"webgpu/shader/execution/binary/i32_arithmetic.bin": "eb21bd8f",
33-
"webgpu/shader/execution/binary/i32_comparison.bin": "83121ec4",
34-
"webgpu/shader/execution/binary/u32_arithmetic.bin": "8d1429d1",
35-
"webgpu/shader/execution/binary/u32_comparison.bin": "3491ba55",
36-
"webgpu/shader/execution/abs.bin": "a5dcabd0",
37-
"webgpu/shader/execution/acos.bin": "adbccc79",
38-
"webgpu/shader/execution/acosh.bin": "7c07ba41",
39-
"webgpu/shader/execution/asin.bin": "8fc62434",
40-
"webgpu/shader/execution/asinh.bin": "a00937c0",
41-
"webgpu/shader/execution/atan.bin": "a237eaa6",
42-
"webgpu/shader/execution/atan2.bin": "b41d74be",
43-
"webgpu/shader/execution/atanh.bin": "2b6934d5",
44-
"webgpu/shader/execution/bitcast.bin": "86e79d18",
45-
"webgpu/shader/execution/ceil.bin": "42a99291",
46-
"webgpu/shader/execution/clamp.bin": "b3fc754f",
47-
"webgpu/shader/execution/cos.bin": "13305519",
48-
"webgpu/shader/execution/cosh.bin": "20965093",
49-
"webgpu/shader/execution/cross.bin": "3cfeb2a1",
50-
"webgpu/shader/execution/degrees.bin": "6d9b3197",
51-
"webgpu/shader/execution/determinant.bin": "d09e35b7",
52-
"webgpu/shader/execution/distance.bin": "790d45ea",
53-
"webgpu/shader/execution/dot.bin": "5f7aa2bc",
54-
"webgpu/shader/execution/exp.bin": "932473",
55-
"webgpu/shader/execution/exp2.bin": "1ada59d6",
56-
"webgpu/shader/execution/faceForward.bin": "dc44d720",
57-
"webgpu/shader/execution/floor.bin": "cbbe2d21",
58-
"webgpu/shader/execution/fma.bin": "b5f22cac",
59-
"webgpu/shader/execution/fract.bin": "b9b72ee2",
60-
"webgpu/shader/execution/frexp.bin": "cc49a118",
61-
"webgpu/shader/execution/inverseSqrt.bin": "ab8d39ed",
62-
"webgpu/shader/execution/ldexp.bin": "cca23df2",
63-
"webgpu/shader/execution/length.bin": "4693ba28",
64-
"webgpu/shader/execution/log.bin": "75d7c534",
65-
"webgpu/shader/execution/log2.bin": "c0c65cb0",
66-
"webgpu/shader/execution/max.bin": "11d13c22",
67-
"webgpu/shader/execution/min.bin": "5c701467",
68-
"webgpu/shader/execution/mix.bin": "af998787",
69-
"webgpu/shader/execution/modf.bin": "3a3b367a",
70-
"webgpu/shader/execution/normalize.bin": "ce31e122",
71-
"webgpu/shader/execution/pack2x16float.bin": "d3198def",
72-
"webgpu/shader/execution/pow.bin": "847bf3ff",
73-
"webgpu/shader/execution/quantizeToF16.bin": "e2f5c3f9",
74-
"webgpu/shader/execution/radians.bin": "8869a385",
75-
"webgpu/shader/execution/reflect.bin": "2be62e10",
76-
"webgpu/shader/execution/refract.bin": "a95cf2a",
77-
"webgpu/shader/execution/round.bin": "cdc5ae01",
78-
"webgpu/shader/execution/saturate.bin": "bb20b07c",
79-
"webgpu/shader/execution/sign.bin": "a59f6a2b",
80-
"webgpu/shader/execution/sin.bin": "b36c7552",
81-
"webgpu/shader/execution/sinh.bin": "9385405",
82-
"webgpu/shader/execution/smoothstep.bin": "5d740ae7",
83-
"webgpu/shader/execution/sqrt.bin": "5e42a89b",
84-
"webgpu/shader/execution/step.bin": "4447b38c",
85-
"webgpu/shader/execution/tan.bin": "b47dfc33",
86-
"webgpu/shader/execution/tanh.bin": "8bd0ae74",
87-
"webgpu/shader/execution/transpose.bin": "afbbaef0",
88-
"webgpu/shader/execution/trunc.bin": "4d15f320",
89-
"webgpu/shader/execution/unpack2x16float.bin": "40ca16cc",
90-
"webgpu/shader/execution/unpack2x16snorm.bin": "39ece93e",
91-
"webgpu/shader/execution/unpack2x16unorm.bin": "dbdc06b8",
92-
"webgpu/shader/execution/unpack4x8snorm.bin": "c83bc6c2",
93-
"webgpu/shader/execution/unpack4x8unorm.bin": "678c5245",
94-
"webgpu/shader/execution/unary/af_arithmetic.bin": "1679466",
95-
"webgpu/shader/execution/unary/af_assignment.bin": "202b8019",
96-
"webgpu/shader/execution/unary/bool_conversion.bin": "6cb7e11a",
97-
"webgpu/shader/execution/unary/f16_arithmetic.bin": "d0409431",
98-
"webgpu/shader/execution/unary/f16_conversion.bin": "884688a",
99-
"webgpu/shader/execution/unary/f32_arithmetic.bin": "8925bac7",
100-
"webgpu/shader/execution/unary/f32_conversion.bin": "798aaba2",
101-
"webgpu/shader/execution/unary/i32_arithmetic.bin": "c21ece3",
102-
"webgpu/shader/execution/unary/i32_complement.bin": "f65f0bec",
103-
"webgpu/shader/execution/unary/i32_conversion.bin": "7ce468a1",
104-
"webgpu/shader/execution/unary/u32_complement.bin": "d6408865",
105-
"webgpu/shader/execution/unary/u32_conversion.bin": "aa09fe0"
2+
"webgpu/shader/execution/binary/af_addition.bin": "b5345cca",
3+
"webgpu/shader/execution/binary/af_logical.bin": "9ec85311",
4+
"webgpu/shader/execution/binary/af_division.bin": "23dd840e",
5+
"webgpu/shader/execution/binary/af_matrix_addition.bin": "ee95539e",
6+
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "a2e64d57",
7+
"webgpu/shader/execution/binary/af_multiplication.bin": "94d7a574",
8+
"webgpu/shader/execution/binary/af_remainder.bin": "79f5abc4",
9+
"webgpu/shader/execution/binary/af_subtraction.bin": "62dce5bf",
10+
"webgpu/shader/execution/binary/f16_addition.bin": "ab3b4d9c",
11+
"webgpu/shader/execution/binary/f16_logical.bin": "1edd08ec",
12+
"webgpu/shader/execution/binary/f16_division.bin": "849eed26",
13+
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "54afc3f8",
14+
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "df5d3ccc",
15+
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "3be6032e",
16+
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "98a29837",
17+
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "c463d7e0",
18+
"webgpu/shader/execution/binary/f16_multiplication.bin": "cdf0775d",
19+
"webgpu/shader/execution/binary/f16_remainder.bin": "e82ef89f",
20+
"webgpu/shader/execution/binary/f16_subtraction.bin": "5125b5b0",
21+
"webgpu/shader/execution/binary/f32_addition.bin": "d3b8004",
22+
"webgpu/shader/execution/binary/f32_logical.bin": "fab7cfc5",
23+
"webgpu/shader/execution/binary/f32_division.bin": "e9fdb0a9",
24+
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "d1165469",
25+
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "45a79521",
26+
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "bf8da7d0",
27+
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "82d7fa9",
28+
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "57eebe84",
29+
"webgpu/shader/execution/binary/f32_multiplication.bin": "eb0baa56",
30+
"webgpu/shader/execution/binary/f32_remainder.bin": "e6059990",
31+
"webgpu/shader/execution/binary/f32_subtraction.bin": "d57cfa1",
32+
"webgpu/shader/execution/binary/i32_arithmetic.bin": "de93ee2a",
33+
"webgpu/shader/execution/binary/i32_comparison.bin": "aaa1f21b",
34+
"webgpu/shader/execution/binary/u32_arithmetic.bin": "d79a1011",
35+
"webgpu/shader/execution/binary/u32_comparison.bin": "31764c75",
36+
"webgpu/shader/execution/abs.bin": "9278901c",
37+
"webgpu/shader/execution/acos.bin": "9c77ebf9",
38+
"webgpu/shader/execution/acosh.bin": "2baaf7cc",
39+
"webgpu/shader/execution/asin.bin": "8fd7a678",
40+
"webgpu/shader/execution/asinh.bin": "321a7294",
41+
"webgpu/shader/execution/atan.bin": "d3dada7e",
42+
"webgpu/shader/execution/atan2.bin": "2871596c",
43+
"webgpu/shader/execution/atanh.bin": "e7158ef",
44+
"webgpu/shader/execution/bitcast.bin": "aa7d6f0e",
45+
"webgpu/shader/execution/ceil.bin": "3c1d91ad",
46+
"webgpu/shader/execution/clamp.bin": "a53fdbda",
47+
"webgpu/shader/execution/cos.bin": "73b83288",
48+
"webgpu/shader/execution/cosh.bin": "39ca32a4",
49+
"webgpu/shader/execution/cross.bin": "409c3e26",
50+
"webgpu/shader/execution/degrees.bin": "a44bb2b1",
51+
"webgpu/shader/execution/determinant.bin": "41a06528",
52+
"webgpu/shader/execution/distance.bin": "fe3ea84f",
53+
"webgpu/shader/execution/dot.bin": "f70abfec",
54+
"webgpu/shader/execution/exp.bin": "7587e11b",
55+
"webgpu/shader/execution/exp2.bin": "c6f34d2b",
56+
"webgpu/shader/execution/faceForward.bin": "8eb57a7d",
57+
"webgpu/shader/execution/floor.bin": "b9ea647b",
58+
"webgpu/shader/execution/fma.bin": "b9f657b2",
59+
"webgpu/shader/execution/fract.bin": "73a18e4f",
60+
"webgpu/shader/execution/frexp.bin": "857fe9b7",
61+
"webgpu/shader/execution/inverseSqrt.bin": "a595983a",
62+
"webgpu/shader/execution/ldexp.bin": "a04aaeca",
63+
"webgpu/shader/execution/length.bin": "695740fb",
64+
"webgpu/shader/execution/log.bin": "6703ec1a",
65+
"webgpu/shader/execution/log2.bin": "8339559d",
66+
"webgpu/shader/execution/max.bin": "ec000a56",
67+
"webgpu/shader/execution/min.bin": "156cf7cc",
68+
"webgpu/shader/execution/mix.bin": "32064d21",
69+
"webgpu/shader/execution/modf.bin": "a5003ce0",
70+
"webgpu/shader/execution/normalize.bin": "c12bac96",
71+
"webgpu/shader/execution/pack2x16float.bin": "b2cb12ea",
72+
"webgpu/shader/execution/pow.bin": "ee87eccb",
73+
"webgpu/shader/execution/quantizeToF16.bin": "f77ae7e3",
74+
"webgpu/shader/execution/radians.bin": "7ecbe5be",
75+
"webgpu/shader/execution/reflect.bin": "d37034bd",
76+
"webgpu/shader/execution/refract.bin": "6dc9adcf",
77+
"webgpu/shader/execution/round.bin": "d91faa0f",
78+
"webgpu/shader/execution/saturate.bin": "93230980",
79+
"webgpu/shader/execution/sign.bin": "fb1071b8",
80+
"webgpu/shader/execution/sin.bin": "a9ed8361",
81+
"webgpu/shader/execution/sinh.bin": "65ba80fc",
82+
"webgpu/shader/execution/smoothstep.bin": "17e1e103",
83+
"webgpu/shader/execution/sqrt.bin": "4c29a5d4",
84+
"webgpu/shader/execution/step.bin": "aed08458",
85+
"webgpu/shader/execution/tan.bin": "5f671594",
86+
"webgpu/shader/execution/tanh.bin": "991e903a",
87+
"webgpu/shader/execution/transpose.bin": "9d388797",
88+
"webgpu/shader/execution/trunc.bin": "959fe8bc",
89+
"webgpu/shader/execution/unpack2x16float.bin": "26e5b05e",
90+
"webgpu/shader/execution/unpack2x16snorm.bin": "c756d8a3",
91+
"webgpu/shader/execution/unpack2x16unorm.bin": "5257591a",
92+
"webgpu/shader/execution/unpack4x8snorm.bin": "83fbd41a",
93+
"webgpu/shader/execution/unpack4x8unorm.bin": "77d46acb",
94+
"webgpu/shader/execution/unary/af_arithmetic.bin": "2edb2dc5",
95+
"webgpu/shader/execution/unary/af_assignment.bin": "36c04bba",
96+
"webgpu/shader/execution/unary/bool_conversion.bin": "cb53bf65",
97+
"webgpu/shader/execution/unary/f16_arithmetic.bin": "9f459fc4",
98+
"webgpu/shader/execution/unary/f16_conversion.bin": "bf055ca9",
99+
"webgpu/shader/execution/unary/f32_arithmetic.bin": "e15c49e7",
100+
"webgpu/shader/execution/unary/f32_conversion.bin": "92e5069f",
101+
"webgpu/shader/execution/unary/i32_arithmetic.bin": "d322b73d",
102+
"webgpu/shader/execution/unary/i32_complement.bin": "c4e6cbb",
103+
"webgpu/shader/execution/unary/i32_conversion.bin": "d6905a0f",
104+
"webgpu/shader/execution/unary/u32_complement.bin": "d0e4aa97",
105+
"webgpu/shader/execution/unary/u32_conversion.bin": "5a96b263"
106106
}
11.3 KB
Binary file not shown.
18.2 KB
Binary file not shown.
20 KB
Binary file not shown.
18.1 KB
Binary file not shown.
5.35 KB
Binary file not shown.
13.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)