-
Notifications
You must be signed in to change notification settings - Fork 664
/
Copy pathcomplicated-function-dependencies.js
109 lines (99 loc) · 1.55 KB
/
complicated-function-dependencies.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
const { assert, skip, test, module: describe } = require("qunit");
const { GPU } = require("../../src");
describe("internal: complicated function dependencies");
function a() {
b();
c();
d();
e();
f();
return 1;
}
function b() {
g();
}
function c() {
g();
return 1;
}
function d() {
g();
return 1;
}
function e() {
g();
return 1;
}
function f() {
i();
m();
return 1;
}
function g() {
i();
j();
k();
return 1;
}
function h() {
o();
return 1;
}
function i() {
return 1;
}
function j() {
m();
n();
return 1;
}
function k() {
return 1;
}
function l() {
o();
p();
return 1;
}
function m() {
return 1;
}
function n() {
return 1;
}
function o() {
return 1;
}
function p() {
b();
return 1;
}
function complicatedFunctionDependecies(mode) {
const gpu = new GPU({ mode });
gpu.setFunctions([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p]);
const kernel = gpu
.createKernel(function () {
a();
return 1;
})
.setOutput([1]);
assert.deepEqual(kernel(), new Float32Array([1]));
}
test("auto", () => {
complicatedFunctionDependecies();
});
test("gpu", () => {
complicatedFunctionDependecies("gpu");
});
(GPU.isWebGLSupported ? test : skip)("webgl", () => {
complicatedFunctionDependecies("webgl");
});
(GPU.isWebGL2Supported ? test : skip)("webgl2", () => {
complicatedFunctionDependecies("webgl2");
});
(GPU.isHeadlessGLSupported ? test : skip)("headlessgl", () => {
complicatedFunctionDependecies("headlessgl");
});
test("cpu", () => {
complicatedFunctionDependecies("cpu");
});