diff options
author | Michael Meeks <michael.meeks@suse.com> | 2013-07-08 21:35:26 +0100 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-07-11 00:25:36 -0400 |
commit | c6fd693a8a1efb9e301bd623d29411dfa2378e5c (patch) | |
tree | c907ed85ad080fc393778d09fd65bbf4f6d1ff70 /sc/source/core/opencl/oclkernels.hxx | |
parent | d5ae61ed2394b6945b969c61aea0adac2234f702 (diff) |
cleanup formulagroupcl and add opencl kernel for averagedelta.
Conflicts:
sc/source/core/opencl/openclwrapper.hxx
Change-Id: Id4777d3854d34ab34dd29b050cd329a803023a39
Diffstat (limited to 'sc/source/core/opencl/oclkernels.hxx')
-rwxr-xr-x | sc/source/core/opencl/oclkernels.hxx | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/sc/source/core/opencl/oclkernels.hxx b/sc/source/core/opencl/oclkernels.hxx index 6c9012641b54..e13c24a3a158 100755 --- a/sc/source/core/opencl/oclkernels.hxx +++ b/sc/source/core/opencl/oclkernels.hxx @@ -142,7 +142,6 @@ __kernel void oclFormulaAverage(__global float *input,__global int *start,__glob for(i = start[id];i<=end[id];i++) sum += input[i]; output[id] = sum / (end[id]-start[id]+1); - } //Sumproduct @@ -162,6 +161,33 @@ __kernel void oclFormulaMinverse(__global float *data, } +// Double precision is a requirement of spreadsheets +#if 0 +#if defined(cl_khr_fp64) // Khronos extension +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#elif defined(cl_amd_fp64) // AMD extension +#pragma OPENCL EXTENSION cl_amd_fp64 : enable +#endif +typedef double fp_t; +#else +typedef float fp_t; +#endif + +__kernel void oclAverageDelta(__global fp_t *values, __global fp_t *subtract, __global int start, __global int end, __global fp_t *output) +{ + const unsigned int id = get_global_id(0); + + // Average + int i; + fp_t sum = 0.0; + for(i = start; i < end; i++) + sum += values[i]; + fp_t val = sum/(end-start); + + // Subtract & output + output[id] = val - subtract[id]; +} + ); #endif // USE_EXTERNAL_KERNEL |