From ea1d442045afeb0693b13320c9772292ae86a1b3 Mon Sep 17 00:00:00 2001 From: Fazli Sapuan Date: Sat, 23 Jan 2016 22:31:47 +0800 Subject: [PATCH 1/4] BOILERPLATE code --- test/src/basic_sum_AB.js | 58 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/test/src/basic_sum_AB.js b/test/src/basic_sum_AB.js index 9cae539e..bd8a1f44 100644 --- a/test/src/basic_sum_AB.js +++ b/test/src/basic_sum_AB.js @@ -26,9 +26,61 @@ QUnit.test( "basic_sum_AB (CPU)", function( assert ) { /* // EXAMPLE GLSL + +// boilerplate begin!!! +float _W_ = XXXX; // HARDCODE FROM PARSER +float _H_ = XXXX; // HARDCODE FROM PARSER + +float _blockX_ = 1; // HARDCODE FROM PARSER +float _blockY_ = 1; // HARDCODE FROM PARSER +float _blockZ_ = 1; // HARDCODE FROM PARSER +float _blockDimX_ = 1; // HARDCODE FROM PARSER +float _blockDimY_ = 1; // HARDCODE FROM PARSER +float _blockDimZ_ = 1; // HARDCODE FROM PARSER +float _threadDimX_ = 1; // HARDCODE FROM PARSER +float _threadDimY_ = 1; // HARDCODE FROM PARSER +float _threadDimZ_ = 1; // HARDCODE FROM PARSER + +float _coordToIndex_(vec3 coord) { + return coord.x + _threadDimX_ * (coord.y + _threadDimY_ * coord.z); +} + +vec3 _indexTo3DCoord_(float index) { + vec3 ret; + + ret.z = round(index / (_threadDimX_ * _threadDimY_)); + ret.y = round((index - ret.z * _threadDimY_) / _threadDimX_); + ret.x = index - _threadDimX_ * (ret.y + _threadDimY_ * ret.z); + + return ret; +} + +vec2 _indexTo2DCoord_(float index) { + vec2 ret; + + ret.y = mod(index, _W_); + ret.x = round(index / _W_); + + return ret; +} + +float _coordToIndex_(vec2 coord) { + return coord.x + _W_ * coord.y; +} + void main(float* a, float* b) { - vec2 _x_ = get_global_id(); - float ret = a[_x_] + b[_x_]; - out_float = ret; + vec2 _vecId_ = get_global_id(); + float _id_ = _vecId_.x + _vecId_.y * _W_; + + float _thread_ = _indexTo3D_(_id_); + + float _threadZ_ = _thread_.z; + float _threadY_ = _thread_.y; + float _threadX_ = _thread_.x; +// boilerplate end!!! + + float ret = a[_indexTo2DCoord_(_threadX_)] + b[_indexTo2DCoord_(_threadX_)]; + out_float = ret; // FROM RETURN + return; } */ From 55118073b88564c200924686af547495162edfa1 Mon Sep 17 00:00:00 2001 From: Fazli Sapuan Date: Sat, 23 Jan 2016 22:53:18 +0800 Subject: [PATCH 2/4] bugfix in boilerplate --- test/src/basic_sum_AB.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/src/basic_sum_AB.js b/test/src/basic_sum_AB.js index bd8a1f44..88ec7a13 100644 --- a/test/src/basic_sum_AB.js +++ b/test/src/basic_sum_AB.js @@ -58,14 +58,14 @@ vec3 _indexTo3DCoord_(float index) { vec2 _indexTo2DCoord_(float index) { vec2 ret; - ret.y = mod(index, _W_); - ret.x = round(index / _W_); + ret.y = mod(index, _W_) / _H_; + ret.x = (round(index / _W_)) / _W_; return ret; } float _coordToIndex_(vec2 coord) { - return coord.x + _W_ * coord.y; + return (coord.x * _W_) + _W_ * (coord.y * _H_); } void main(float* a, float* b) { From 87ba9c87967e0abf258562f533195c473cb94ac2 Mon Sep 17 00:00:00 2001 From: Fazli Sapuan Date: Sat, 23 Jan 2016 22:54:16 +0800 Subject: [PATCH 3/4] typo --- test/src/basic_sum_AB.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/src/basic_sum_AB.js b/test/src/basic_sum_AB.js index 88ec7a13..363bdf2b 100644 --- a/test/src/basic_sum_AB.js +++ b/test/src/basic_sum_AB.js @@ -72,7 +72,7 @@ void main(float* a, float* b) { vec2 _vecId_ = get_global_id(); float _id_ = _vecId_.x + _vecId_.y * _W_; - float _thread_ = _indexTo3D_(_id_); + vec3 _thread_ = _indexTo3D_(_id_); float _threadZ_ = _thread_.z; float _threadY_ = _thread_.y; From 91e7e5eaf0e9196c370bdfd07a0221f8e8cf704e Mon Sep 17 00:00:00 2001 From: Fazli Sapuan Date: Sat, 23 Jan 2016 22:55:30 +0800 Subject: [PATCH 4/4] typo again --- test/src/basic_sum_AB.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/src/basic_sum_AB.js b/test/src/basic_sum_AB.js index 363bdf2b..990ec71a 100644 --- a/test/src/basic_sum_AB.js +++ b/test/src/basic_sum_AB.js @@ -70,7 +70,7 @@ float _coordToIndex_(vec2 coord) { void main(float* a, float* b) { vec2 _vecId_ = get_global_id(); - float _id_ = _vecId_.x + _vecId_.y * _W_; + float _id_ = _coordToIndex_(_vecId_); vec3 _thread_ = _indexTo3D_(_id_);