Skip to content

Commit 49a06ba

Browse files
fix: #470
the math didn't end up being wrong, but found an issue with argument type, and went ahead and fixed it
1 parent 1c96c40 commit 49a06ba

File tree

9 files changed

+206
-59
lines changed

9 files changed

+206
-59
lines changed

bin/gpu-browser-core.js

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* GPU Accelerated JavaScript
66
*
77
* @version 2.0.0-rc.14
8-
* @date Thu May 23 2019 20:48:22 GMT-0400 (Eastern Daylight Time)
8+
* @date Thu May 23 2019 21:45:45 GMT-0400 (Eastern Daylight Time)
99
*
1010
* @license MIT
1111
* The MIT License
@@ -4581,7 +4581,6 @@ class HeadlessGLKernel extends WebGLKernel {
45814581
module.exports = {
45824582
HeadlessGLKernel
45834583
};
4584-
45854584
},{"../gl/kernel-string":10,"../web-gl/kernel":55,"gl":2}],32:[function(require,module,exports){
45864585
const { utils } = require('../utils');
45874586

@@ -4785,10 +4784,12 @@ class Kernel {
47854784
setupArguments(args) {
47864785
if (!this.argumentTypes) {
47874786
this.kernelArguments = [];
4788-
this.argumentTypes = [];
4789-
for (let i = 0; i < args.length; i++) {
4790-
const argType = utils.getVariableType(args[i], this.strictIntegers);
4791-
this.argumentTypes.push(argType === 'Integer' ? 'Number' : argType);
4787+
if (!this.argumentTypes) {
4788+
this.argumentTypes = [];
4789+
for (let i = 0; i < args.length; i++) {
4790+
const argType = utils.getVariableType(args[i], this.strictIntegers);
4791+
this.argumentTypes.push(argType === 'Integer' ? 'Number' : argType);
4792+
}
47924793
}
47934794
}
47944795

@@ -6405,7 +6406,6 @@ const operatorMap = {
64056406
module.exports = {
64066407
WebGLFunctionNode
64076408
};
6408-
64096409
},{"../function-node":9}],36:[function(require,module,exports){
64106410
const { WebGLKernelValueBoolean } = require('./kernel-value/boolean');
64116411
const { WebGLKernelValueFloat } = require('./kernel-value/float');
@@ -7548,7 +7548,10 @@ class WebGLKernel extends GLKernel {
75487548
setupArguments(args) {
75497549
this.kernelArguments = [];
75507550
this.argumentTextureCount = 0;
7551-
this.argumentTypes = [];
7551+
const needsArgumentTypes = this.argumentTypes === null;
7552+
if (needsArgumentTypes) {
7553+
this.argumentTypes = [];
7554+
}
75527555
this.argumentSizes = [];
75537556
this.argumentBitRatios = [];
75547557
if (!this.precision) {
@@ -7565,8 +7568,13 @@ class WebGLKernel extends GLKernel {
75657568
for (let index = 0; index < args.length; index++) {
75667569
const value = args[index];
75677570
const name = this.argumentNames[index];
7568-
const type = utils.getVariableType(value, this.strictIntegers);
7569-
this.argumentTypes.push(type);
7571+
let type;
7572+
if (needsArgumentTypes) {
7573+
type = utils.getVariableType(value, this.strictIntegers);
7574+
this.argumentTypes.push(type);
7575+
} else {
7576+
type = this.argumentTypes[index];
7577+
}
75707578
const KernelValue = this.constructor.lookupKernelValueType(type, this.dynamicArguments ? 'dynamic' : 'static', this.precision);
75717579
if (KernelValue === null) {
75727580
throw new Error('unsupported argument');
@@ -9990,6 +9998,10 @@ class GPU {
99909998

99919999
source = typeof source === 'function' ? source.toString() : source;
999210000
const switchableKernels = {};
10001+
const settingsCopy = upgradeDeprecatedCreateKernelSettings(settings) || {};
10002+
if (settings && typeof settings.argumentTypes === 'object') {
10003+
settingsCopy.argumentTypes = Object.keys(settings.argumentTypes).map(argumentName => settings.argumentTypes[argumentName]);
10004+
}
999310005
const mergedSettings = Object.assign({
999410006
context: this.context,
999510007
canvas: this.canvas,
@@ -10046,7 +10058,7 @@ class GPU {
1004610058
return newKernel.renderOutput();
1004710059
}
1004810060
}
10049-
}, upgradeDeprecatedCreateKernelSettings(settings) || {});
10061+
}, settingsCopy);
1005010062

1005110063
const kernel = kernelRunShortcut(new this.Kernel(source, mergedSettings));
1005210064

@@ -10079,7 +10091,12 @@ class GPU {
1007910091
}
1008010092
}
1008110093

10082-
const kernel = this.createKernel(fn, upgradeDeprecatedCreateKernelSettings(settings));
10094+
const settingsCopy = upgradeDeprecatedCreateKernelSettings(settings);
10095+
if (settings && typeof settings.argumentTypes === 'object') {
10096+
settingsCopy.argumentTypes = Object.keys(settings.argumentTypes).map(argumentName => settings.argumentTypes[argumentName]);
10097+
}
10098+
const kernel = this.createKernel(fn, settingsCopy);
10099+
1008310100
if (Array.isArray(arguments[0])) {
1008410101
const functions = arguments[0];
1008510102
for (let i = 0; i < functions.length; i++) {
@@ -10194,6 +10211,7 @@ module.exports = {
1019410211
kernelOrder,
1019510212
kernelTypes
1019610213
};
10214+
1019710215
},{"./backend/cpu/kernel":7,"./backend/headless-gl/kernel":31,"./backend/web-gl/kernel":55,"./backend/web-gl2/kernel":79,"./kernel-run-shortcut":85,"./utils":88,"gpu-mock.js":3}],83:[function(require,module,exports){
1019810216
const { GPU } = require('./gpu');
1019910217
const { alias } = require('./alias');

bin/gpu-browser-core.min.js

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* GPU Accelerated JavaScript
66
*
77
* @version 2.0.0-rc.14
8-
* @date Thu May 23 2019 20:48:24 GMT-0400 (Eastern Daylight Time)
8+
* @date Thu May 23 2019 21:45:47 GMT-0400 (Eastern Daylight Time)
99
*
1010
* @license MIT
1111
* The MIT License
@@ -18,7 +18,7 @@
1818
* GPU Accelerated JavaScript
1919
*
2020
* @version 2.0.0-rc.14
21-
* @date Thu May 23 2019 20:48:22 GMT-0400 (Eastern Daylight Time)
21+
* @date Thu May 23 2019 21:45:45 GMT-0400 (Eastern Daylight Time)
2222
*
2323
* @license MIT
2424
* The MIT License
@@ -4594,7 +4594,6 @@ class HeadlessGLKernel extends WebGLKernel {
45944594
module.exports = {
45954595
HeadlessGLKernel
45964596
};
4597-
45984597
},{"../gl/kernel-string":10,"../web-gl/kernel":55,"gl":2}],32:[function(require,module,exports){
45994598
const { utils } = require('../utils');
46004599

@@ -4798,10 +4797,12 @@ class Kernel {
47984797
setupArguments(args) {
47994798
if (!this.argumentTypes) {
48004799
this.kernelArguments = [];
4801-
this.argumentTypes = [];
4802-
for (let i = 0; i < args.length; i++) {
4803-
const argType = utils.getVariableType(args[i], this.strictIntegers);
4804-
this.argumentTypes.push(argType === 'Integer' ? 'Number' : argType);
4800+
if (!this.argumentTypes) {
4801+
this.argumentTypes = [];
4802+
for (let i = 0; i < args.length; i++) {
4803+
const argType = utils.getVariableType(args[i], this.strictIntegers);
4804+
this.argumentTypes.push(argType === 'Integer' ? 'Number' : argType);
4805+
}
48054806
}
48064807
}
48074808

@@ -6418,7 +6419,6 @@ const operatorMap = {
64186419
module.exports = {
64196420
WebGLFunctionNode
64206421
};
6421-
64226422
},{"../function-node":9}],36:[function(require,module,exports){
64236423
const { WebGLKernelValueBoolean } = require('./kernel-value/boolean');
64246424
const { WebGLKernelValueFloat } = require('./kernel-value/float');
@@ -7561,7 +7561,10 @@ class WebGLKernel extends GLKernel {
75617561
setupArguments(args) {
75627562
this.kernelArguments = [];
75637563
this.argumentTextureCount = 0;
7564-
this.argumentTypes = [];
7564+
const needsArgumentTypes = this.argumentTypes === null;
7565+
if (needsArgumentTypes) {
7566+
this.argumentTypes = [];
7567+
}
75657568
this.argumentSizes = [];
75667569
this.argumentBitRatios = [];
75677570
if (!this.precision) {
@@ -7578,8 +7581,13 @@ class WebGLKernel extends GLKernel {
75787581
for (let index = 0; index < args.length; index++) {
75797582
const value = args[index];
75807583
const name = this.argumentNames[index];
7581-
const type = utils.getVariableType(value, this.strictIntegers);
7582-
this.argumentTypes.push(type);
7584+
let type;
7585+
if (needsArgumentTypes) {
7586+
type = utils.getVariableType(value, this.strictIntegers);
7587+
this.argumentTypes.push(type);
7588+
} else {
7589+
type = this.argumentTypes[index];
7590+
}
75837591
const KernelValue = this.constructor.lookupKernelValueType(type, this.dynamicArguments ? 'dynamic' : 'static', this.precision);
75847592
if (KernelValue === null) {
75857593
throw new Error('unsupported argument');
@@ -10003,6 +10011,10 @@ class GPU {
1000310011

1000410012
source = typeof source === 'function' ? source.toString() : source;
1000510013
const switchableKernels = {};
10014+
const settingsCopy = upgradeDeprecatedCreateKernelSettings(settings) || {};
10015+
if (settings && typeof settings.argumentTypes === 'object') {
10016+
settingsCopy.argumentTypes = Object.keys(settings.argumentTypes).map(argumentName => settings.argumentTypes[argumentName]);
10017+
}
1000610018
const mergedSettings = Object.assign({
1000710019
context: this.context,
1000810020
canvas: this.canvas,
@@ -10059,7 +10071,7 @@ class GPU {
1005910071
return newKernel.renderOutput();
1006010072
}
1006110073
}
10062-
}, upgradeDeprecatedCreateKernelSettings(settings) || {});
10074+
}, settingsCopy);
1006310075

1006410076
const kernel = kernelRunShortcut(new this.Kernel(source, mergedSettings));
1006510077

@@ -10092,7 +10104,12 @@ class GPU {
1009210104
}
1009310105
}
1009410106

10095-
const kernel = this.createKernel(fn, upgradeDeprecatedCreateKernelSettings(settings));
10107+
const settingsCopy = upgradeDeprecatedCreateKernelSettings(settings);
10108+
if (settings && typeof settings.argumentTypes === 'object') {
10109+
settingsCopy.argumentTypes = Object.keys(settings.argumentTypes).map(argumentName => settings.argumentTypes[argumentName]);
10110+
}
10111+
const kernel = this.createKernel(fn, settingsCopy);
10112+
1009610113
if (Array.isArray(arguments[0])) {
1009710114
const functions = arguments[0];
1009810115
for (let i = 0; i < functions.length; i++) {
@@ -10207,6 +10224,7 @@ module.exports = {
1020710224
kernelOrder,
1020810225
kernelTypes
1020910226
};
10227+
1021010228
},{"./backend/cpu/kernel":7,"./backend/headless-gl/kernel":31,"./backend/web-gl/kernel":55,"./backend/web-gl2/kernel":79,"./kernel-run-shortcut":85,"./utils":88,"gpu-mock.js":3}],83:[function(require,module,exports){
1021110229
const { GPU } = require('./gpu');
1021210230
const { alias } = require('./alias');

bin/gpu-browser.js

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* GPU Accelerated JavaScript
66
*
77
* @version 2.0.0-rc.14
8-
* @date Thu May 23 2019 20:48:22 GMT-0400 (Eastern Daylight Time)
8+
* @date Thu May 23 2019 21:45:45 GMT-0400 (Eastern Daylight Time)
99
*
1010
* @license MIT
1111
* The MIT License
@@ -9345,7 +9345,6 @@ class HeadlessGLKernel extends WebGLKernel {
93459345
module.exports = {
93469346
HeadlessGLKernel
93479347
};
9348-
93499348
},{"../gl/kernel-string":11,"../web-gl/kernel":56,"gl":3}],33:[function(require,module,exports){
93509349
const { utils } = require('../utils');
93519350

@@ -9549,10 +9548,12 @@ class Kernel {
95499548
setupArguments(args) {
95509549
if (!this.argumentTypes) {
95519550
this.kernelArguments = [];
9552-
this.argumentTypes = [];
9553-
for (let i = 0; i < args.length; i++) {
9554-
const argType = utils.getVariableType(args[i], this.strictIntegers);
9555-
this.argumentTypes.push(argType === 'Integer' ? 'Number' : argType);
9551+
if (!this.argumentTypes) {
9552+
this.argumentTypes = [];
9553+
for (let i = 0; i < args.length; i++) {
9554+
const argType = utils.getVariableType(args[i], this.strictIntegers);
9555+
this.argumentTypes.push(argType === 'Integer' ? 'Number' : argType);
9556+
}
95569557
}
95579558
}
95589559

@@ -11169,7 +11170,6 @@ const operatorMap = {
1116911170
module.exports = {
1117011171
WebGLFunctionNode
1117111172
};
11172-
1117311173
},{"../function-node":10}],37:[function(require,module,exports){
1117411174
const { WebGLKernelValueBoolean } = require('./kernel-value/boolean');
1117511175
const { WebGLKernelValueFloat } = require('./kernel-value/float');
@@ -12312,7 +12312,10 @@ class WebGLKernel extends GLKernel {
1231212312
setupArguments(args) {
1231312313
this.kernelArguments = [];
1231412314
this.argumentTextureCount = 0;
12315-
this.argumentTypes = [];
12315+
const needsArgumentTypes = this.argumentTypes === null;
12316+
if (needsArgumentTypes) {
12317+
this.argumentTypes = [];
12318+
}
1231612319
this.argumentSizes = [];
1231712320
this.argumentBitRatios = [];
1231812321
if (!this.precision) {
@@ -12329,8 +12332,13 @@ class WebGLKernel extends GLKernel {
1232912332
for (let index = 0; index < args.length; index++) {
1233012333
const value = args[index];
1233112334
const name = this.argumentNames[index];
12332-
const type = utils.getVariableType(value, this.strictIntegers);
12333-
this.argumentTypes.push(type);
12335+
let type;
12336+
if (needsArgumentTypes) {
12337+
type = utils.getVariableType(value, this.strictIntegers);
12338+
this.argumentTypes.push(type);
12339+
} else {
12340+
type = this.argumentTypes[index];
12341+
}
1233412342
const KernelValue = this.constructor.lookupKernelValueType(type, this.dynamicArguments ? 'dynamic' : 'static', this.precision);
1233512343
if (KernelValue === null) {
1233612344
throw new Error('unsupported argument');
@@ -14754,6 +14762,10 @@ class GPU {
1475414762

1475514763
source = typeof source === 'function' ? source.toString() : source;
1475614764
const switchableKernels = {};
14765+
const settingsCopy = upgradeDeprecatedCreateKernelSettings(settings) || {};
14766+
if (settings && typeof settings.argumentTypes === 'object') {
14767+
settingsCopy.argumentTypes = Object.keys(settings.argumentTypes).map(argumentName => settings.argumentTypes[argumentName]);
14768+
}
1475714769
const mergedSettings = Object.assign({
1475814770
context: this.context,
1475914771
canvas: this.canvas,
@@ -14810,7 +14822,7 @@ class GPU {
1481014822
return newKernel.renderOutput();
1481114823
}
1481214824
}
14813-
}, upgradeDeprecatedCreateKernelSettings(settings) || {});
14825+
}, settingsCopy);
1481414826

1481514827
const kernel = kernelRunShortcut(new this.Kernel(source, mergedSettings));
1481614828

@@ -14843,7 +14855,12 @@ class GPU {
1484314855
}
1484414856
}
1484514857

14846-
const kernel = this.createKernel(fn, upgradeDeprecatedCreateKernelSettings(settings));
14858+
const settingsCopy = upgradeDeprecatedCreateKernelSettings(settings);
14859+
if (settings && typeof settings.argumentTypes === 'object') {
14860+
settingsCopy.argumentTypes = Object.keys(settings.argumentTypes).map(argumentName => settings.argumentTypes[argumentName]);
14861+
}
14862+
const kernel = this.createKernel(fn, settingsCopy);
14863+
1484714864
if (Array.isArray(arguments[0])) {
1484814865
const functions = arguments[0];
1484914866
for (let i = 0; i < functions.length; i++) {
@@ -14958,6 +14975,7 @@ module.exports = {
1495814975
kernelOrder,
1495914976
kernelTypes
1496014977
};
14978+
1496114979
},{"./backend/cpu/kernel":8,"./backend/headless-gl/kernel":32,"./backend/web-gl/kernel":56,"./backend/web-gl2/kernel":80,"./kernel-run-shortcut":86,"./utils":89,"gpu-mock.js":4}],84:[function(require,module,exports){
1496214980
const { GPU } = require('./gpu');
1496314981
const { alias } = require('./alias');

0 commit comments

Comments
 (0)