mirror of
https://github.com/gpujs/gpu.js.git
synced 2026-01-18 16:04:10 +00:00
Minor fix for 3d kernel maps and test
This commit is contained in:
parent
01a18acbdb
commit
a8d5d02c79
@ -4,8 +4,8 @@
|
||||
*
|
||||
* GPU Accelerated JavaScript
|
||||
*
|
||||
* @version 1.4.12
|
||||
* @date Wed Jul 11 2018 15:20:52 GMT-0400 (EDT)
|
||||
* @version 1.4.13
|
||||
* @date Wed Jul 11 2018 18:51:55 GMT-0400 (EDT)
|
||||
*
|
||||
* @license MIT
|
||||
* The MIT License
|
||||
|
||||
4
bin/gpu-core.min.js
vendored
4
bin/gpu-core.min.js
vendored
@ -4,8 +4,8 @@
|
||||
*
|
||||
* GPU Accelerated JavaScript
|
||||
*
|
||||
* @version 1.4.12
|
||||
* @date Wed Jul 11 2018 15:20:52 GMT-0400 (EDT)
|
||||
* @version 1.4.13
|
||||
* @date Wed Jul 11 2018 18:51:55 GMT-0400 (EDT)
|
||||
*
|
||||
* @license MIT
|
||||
* The MIT License
|
||||
|
||||
12
bin/gpu.js
12
bin/gpu.js
@ -4,8 +4,8 @@
|
||||
*
|
||||
* GPU Accelerated JavaScript
|
||||
*
|
||||
* @version 1.4.12
|
||||
* @date Wed Jul 11 2018 15:20:52 GMT-0400 (EDT)
|
||||
* @version 1.4.13
|
||||
* @date Wed Jul 11 2018 18:51:56 GMT-0400 (EDT)
|
||||
*
|
||||
* @license MIT
|
||||
* The MIT License
|
||||
@ -1024,11 +1024,13 @@ module.exports = function (_KernelBase) {
|
||||
return ' ' + name + 'Z[this.thread.z][this.thread.y] = new Array(' + threadDim[0] + ');\n';
|
||||
}).join('')) + '\n for (this.thread.x = 0; this.thread.x < ' + threadDim[0] + '; this.thread.x++) {\n var kernelResult;\n ' + kernel + '\n ret[this.thread.z][this.thread.y][this.thread.x] = kernelResult;\n' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
return ' ' + name + 'Z[this.thread.z][this.thread.y][this.thread.x] = ' + name + ';\n';
|
||||
}).join('')) + '\n }\n }\n }\n \n if (this.graphical) {\n this._imageData.data.set(this._colorData);\n this._canvasCtx.putImageData(this._imageData, 0, 0);\n return;\n }\n \n if (this.output.length === 1) {\n ret = ret[0][0];\n' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
}).join('')) + '\n }\n }\n }\n \n if (this.graphical) {\n this._imageData.data.set(this._colorData);\n this._canvasCtx.putImageData(this._imageData, 0, 0);\n return;\n }\n \n if (this.output.length === 1) {\n ret = ret[0][0];\n ' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
return ' ' + name + ' = ' + name + 'Z[0][0];\n';
|
||||
}).join('')) + '\n \n } else if (this.output.length === 2) {\n ret = ret[0];\n ' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
}).join('')) + '\n \n } else if (this.output.length === 2) {\n ret = ret[0];\n ' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
return ' ' + name + ' = ' + name + 'Z[0];\n';
|
||||
}).join('')) + '\n }\n \n ' + (this.subKernelOutputVariableNames === null ? 'return ret;\n' : this.subKernels !== null ? 'var result = [\n ' + this.subKernelOutputVariableNames.map(function (name) {
|
||||
}).join('')) + '\n } else {\n ' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
return ' ' + name + ' = ' + name + 'Z;\n';
|
||||
}).join('')) + '\n }\n \n ' + (this.subKernelOutputVariableNames === null ? 'return ret;\n' : this.subKernels !== null ? 'var result = [\n ' + this.subKernelOutputVariableNames.map(function (name) {
|
||||
return '' + name;
|
||||
}).join(',\n') + '\n ];\n result.result = ret;\n return result;\n' : 'return {\n result: ret,\n ' + Object.keys(this.subKernelProperties).map(function (name, i) {
|
||||
return name + ': ' + _this2.subKernelOutputVariableNames[i];
|
||||
|
||||
18
bin/gpu.min.js
vendored
18
bin/gpu.min.js
vendored
File diff suppressed because one or more lines are too long
8
dist/backend/cpu/kernel.js
vendored
8
dist/backend/cpu/kernel.js
vendored
@ -255,11 +255,13 @@ module.exports = function (_KernelBase) {
|
||||
return ' ' + name + 'Z[this.thread.z][this.thread.y] = new Array(' + threadDim[0] + ');\n';
|
||||
}).join('')) + '\n for (this.thread.x = 0; this.thread.x < ' + threadDim[0] + '; this.thread.x++) {\n var kernelResult;\n ' + kernel + '\n ret[this.thread.z][this.thread.y][this.thread.x] = kernelResult;\n' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
return ' ' + name + 'Z[this.thread.z][this.thread.y][this.thread.x] = ' + name + ';\n';
|
||||
}).join('')) + '\n }\n }\n }\n \n if (this.graphical) {\n this._imageData.data.set(this._colorData);\n this._canvasCtx.putImageData(this._imageData, 0, 0);\n return;\n }\n \n if (this.output.length === 1) {\n ret = ret[0][0];\n' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
}).join('')) + '\n }\n }\n }\n \n if (this.graphical) {\n this._imageData.data.set(this._colorData);\n this._canvasCtx.putImageData(this._imageData, 0, 0);\n return;\n }\n \n if (this.output.length === 1) {\n ret = ret[0][0];\n ' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
return ' ' + name + ' = ' + name + 'Z[0][0];\n';
|
||||
}).join('')) + '\n \n } else if (this.output.length === 2) {\n ret = ret[0];\n ' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
}).join('')) + '\n \n } else if (this.output.length === 2) {\n ret = ret[0];\n ' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
return ' ' + name + ' = ' + name + 'Z[0];\n';
|
||||
}).join('')) + '\n }\n \n ' + (this.subKernelOutputVariableNames === null ? 'return ret;\n' : this.subKernels !== null ? 'var result = [\n ' + this.subKernelOutputVariableNames.map(function (name) {
|
||||
}).join('')) + '\n } else {\n ' + (this.subKernelOutputVariableNames === null ? '' : this.subKernelOutputVariableNames.map(function (name) {
|
||||
return ' ' + name + ' = ' + name + 'Z;\n';
|
||||
}).join('')) + '\n }\n \n ' + (this.subKernelOutputVariableNames === null ? 'return ret;\n' : this.subKernels !== null ? 'var result = [\n ' + this.subKernelOutputVariableNames.map(function (name) {
|
||||
return '' + name;
|
||||
}).join(',\n') + '\n ];\n result.result = ret;\n return result;\n' : 'return {\n result: ret,\n ' + Object.keys(this.subKernelProperties).map(function (name, i) {
|
||||
return name + ': ' + _this2.subKernelOutputVariableNames[i];
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gpu.js",
|
||||
"version": "1.4.12",
|
||||
"version": "1.4.13",
|
||||
"description": "GPU Accelerated JavaScript",
|
||||
"main": "./dist/index.js",
|
||||
"directories": {
|
||||
|
||||
@ -263,20 +263,22 @@ ${ this.subKernelOutputVariableNames === null
|
||||
|
||||
if (this.output.length === 1) {
|
||||
ret = ret[0][0];
|
||||
${ this.subKernelOutputVariableNames === null
|
||||
? ''
|
||||
: this.subKernelOutputVariableNames.map((name) => ` ${ name } = ${ name }Z[0][0];\n`).join('')
|
||||
}
|
||||
${ this.subKernelOutputVariableNames === null
|
||||
? ''
|
||||
: this.subKernelOutputVariableNames.map((name) => ` ${ name } = ${ name }Z[0][0];\n`).join('') }
|
||||
|
||||
} else if (this.output.length === 2) {
|
||||
ret = ret[0];
|
||||
${ this.subKernelOutputVariableNames === null
|
||||
? ''
|
||||
: this.subKernelOutputVariableNames.map((name) => ` ${ name } = ${ name }Z[0];\n`).join('')
|
||||
}
|
||||
}
|
||||
} else if (this.output.length === 2) {
|
||||
ret = ret[0];
|
||||
${ this.subKernelOutputVariableNames === null
|
||||
? ''
|
||||
: this.subKernelOutputVariableNames.map((name) => ` ${ name } = ${ name }Z[0];\n`).join('') }
|
||||
} else {
|
||||
${ this.subKernelOutputVariableNames === null
|
||||
? ''
|
||||
: this.subKernelOutputVariableNames.map((name) => ` ${ name } = ${ name }Z;\n`).join('') }
|
||||
}
|
||||
|
||||
${ this.subKernelOutputVariableNames === null
|
||||
${ this.subKernelOutputVariableNames === null
|
||||
? 'return ret;\n'
|
||||
: this.subKernels !== null
|
||||
? `var result = [
|
||||
|
||||
@ -88,14 +88,15 @@
|
||||
QUnit.assert.deepEqual(divideResult, [8]);
|
||||
});
|
||||
|
||||
QUnit.test('createKernelMap (cpu)', function() {
|
||||
QUnit.test('createKernelMap object 1 dimension 1 length (cpu)', function() {
|
||||
var canvas = document.createElement('canvas');
|
||||
var gpu = new GPU({mode: 'cpu', canvas: canvas});
|
||||
var superKernel = createPropertyKernels(gpu, [1]);
|
||||
var kernel = createKernel(gpu, [1]);
|
||||
var output = superKernel([2], [2], [0.5]);
|
||||
var result = QUnit.extend([], output.result);
|
||||
var addResult = QUnit.extend([], output.addResult);
|
||||
var divideResult = QUnit.extend([], output.divideResult);
|
||||
var addResult = QUnit.extend([], kernel(output.addResult));
|
||||
var divideResult = QUnit.extend([], kernel(output.divideResult));
|
||||
QUnit.assert.deepEqual(result, [8]);
|
||||
QUnit.assert.deepEqual(addResult, [4]);
|
||||
QUnit.assert.deepEqual(divideResult, [8]);
|
||||
@ -226,6 +227,20 @@
|
||||
QUnit.assert.deepEqual(divideResult, [2, 2, 2, 2, 2]);
|
||||
});
|
||||
|
||||
QUnit.test('createKernelMap object 1 dimension 5 length (cpu)', function() {
|
||||
var canvas = document.createElement('canvas');
|
||||
var gpu = new GPU({mode: 'cpu', canvas: canvas});
|
||||
var superKernel = createPropertyKernels(gpu, [5]);
|
||||
var kernel = createKernel(gpu, [5]);
|
||||
var output = superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]);
|
||||
var result = QUnit.extend([], output.result);
|
||||
var addResult = QUnit.extend([], kernel(output.addResult));
|
||||
var divideResult = QUnit.extend([], kernel(output.divideResult));
|
||||
QUnit.assert.deepEqual(result, [2, 2, 2, 2, 2]);
|
||||
QUnit.assert.deepEqual(addResult, [2, 4, 6, 8, 10]);
|
||||
QUnit.assert.deepEqual(divideResult, [2, 2, 2, 2, 2]);
|
||||
});
|
||||
|
||||
QUnit.test('createKernelMap array (auto)', function() {
|
||||
var canvas = document.createElement('canvas');
|
||||
var gpu = new GPU({mode: null, canvas: canvas});
|
||||
@ -294,4 +309,94 @@
|
||||
QUnit.assert.deepEqual(addResult, [2, 4, 6, 8, 10]);
|
||||
QUnit.assert.deepEqual(divideResult, [2, 2, 2, 2, 2]);
|
||||
});
|
||||
|
||||
QUnit.test('createKernelMap 3d (auto)', function() {
|
||||
var kernel = new GPU().createKernelMap({
|
||||
target: function saveTarget(value) {
|
||||
return value;
|
||||
}
|
||||
}, function(value) {
|
||||
return saveTarget(value);
|
||||
}).setOutput([3,3,3]);
|
||||
var result = kernel(1);
|
||||
QUnit.assert.equal(result.result.length, 3);
|
||||
QUnit.assert.equal(result.result[0].length, 3);
|
||||
QUnit.assert.equal(result.result[0][0].length, 3);
|
||||
|
||||
QUnit.assert.equal(result.target.length, 3);
|
||||
QUnit.assert.equal(result.target[0].length, 3);
|
||||
QUnit.assert.equal(result.target[0][0].length, 3);
|
||||
});
|
||||
|
||||
QUnit.test('createKernelMap 3d (gpu)', function() {
|
||||
var kernel = new GPU({ mode: 'gpu' }).createKernelMap({
|
||||
target: function saveTarget(value) {
|
||||
return value;
|
||||
}
|
||||
}, function(value) {
|
||||
return saveTarget(value);
|
||||
}).setOutput([3,3,3]);
|
||||
var result = kernel(1);
|
||||
QUnit.assert.equal(result.result.length, 3);
|
||||
QUnit.assert.equal(result.result[0].length, 3);
|
||||
QUnit.assert.equal(result.result[0][0].length, 3);
|
||||
|
||||
QUnit.assert.equal(result.target.length, 3);
|
||||
QUnit.assert.equal(result.target[0].length, 3);
|
||||
QUnit.assert.equal(result.target[0][0].length, 3);
|
||||
});
|
||||
|
||||
QUnit.test('createKernelMap 3d (webgl)', function() {
|
||||
var kernel = new GPU({ mode: 'webgl' }).createKernelMap({
|
||||
target: function saveTarget(value) {
|
||||
return value;
|
||||
}
|
||||
}, function(value) {
|
||||
return saveTarget(value);
|
||||
}).setOutput([3,3,3]);
|
||||
var result = kernel(1);
|
||||
QUnit.assert.equal(result.result.length, 3);
|
||||
QUnit.assert.equal(result.result[0].length, 3);
|
||||
QUnit.assert.equal(result.result[0][0].length, 3);
|
||||
|
||||
QUnit.assert.equal(result.target.length, 3);
|
||||
QUnit.assert.equal(result.target[0].length, 3);
|
||||
QUnit.assert.equal(result.target[0][0].length, 3);
|
||||
});
|
||||
|
||||
QUnit.test('createKernelMap 3d (webgl2)', function() {
|
||||
var kernel = new GPU({ mode: 'webgl2' }).createKernelMap({
|
||||
target: function saveTarget(value) {
|
||||
return value;
|
||||
}
|
||||
}, function(value) {
|
||||
return saveTarget(value);
|
||||
}).setOutput([3,3,3]);
|
||||
var result = kernel(1);
|
||||
QUnit.assert.equal(result.result.length, 3);
|
||||
QUnit.assert.equal(result.result[0].length, 3);
|
||||
QUnit.assert.equal(result.result[0][0].length, 3);
|
||||
|
||||
QUnit.assert.equal(result.target.length, 3);
|
||||
QUnit.assert.equal(result.target[0].length, 3);
|
||||
QUnit.assert.equal(result.target[0][0].length, 3);
|
||||
});
|
||||
|
||||
QUnit.test('createKernelMap 3d (cpu)', function() {
|
||||
var kernel = new GPU({ mode: 'cpu' }).createKernelMap({
|
||||
target: function saveTarget(value) {
|
||||
return value;
|
||||
}
|
||||
}, function(value) {
|
||||
return saveTarget(value);
|
||||
}).setOutput([3,3,3]);
|
||||
var result = kernel(1);
|
||||
QUnit.assert.equal(result.result.length, 3);
|
||||
QUnit.assert.equal(result.result[0].length, 3);
|
||||
QUnit.assert.equal(result.result[0][0].length, 3);
|
||||
|
||||
QUnit.assert.equal(result.target.length, 3);
|
||||
QUnit.assert.equal(result.target[0].length, 3);
|
||||
QUnit.assert.equal(result.target[0][0].length, 3);
|
||||
});
|
||||
})();
|
||||
Loading…
x
Reference in New Issue
Block a user