summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2013-11-29 02:04:15 +0000
committerMichael Meeks <michael.meeks@collabora.com>2013-11-29 02:10:15 +0000
commit773527bad2f8e104fb700d6fa8ddf24790d7e4cc (patch)
treee08f9bfefbb84d3976a3c40df668135ec66fcc8d
parent1d140dc9ea30c7d16738c2dec03756c34fabc7e1 (diff)
GPU Calc: reflect the true cost of InterpretTail more accurately.
Change-Id: I7004150569e5329f19d2f08adbd70477bd6252ff
-rw-r--r--sc/source/core/opencl/opencl_device.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/sc/source/core/opencl/opencl_device.cxx b/sc/source/core/opencl/opencl_device.cxx
index 452848fd3708..a91883f6b0d8 100644
--- a/sc/source/core/opencl/opencl_device.cxx
+++ b/sc/source/core/opencl/opencl_device.cxx
@@ -376,9 +376,17 @@ ds_status evaluateScoreForDevice(ds_device* device, void* evalData)
testData->output[j] = fAverage + (fMin * fSoP);
}
+ // InterpretTail - the S/W fallback is nothing like as efficient
+ // as any good openCL implementation: no SIMD, tons of branching
+ // in the inner loops etc. Generously characterise it as only 10x
+ // slower than the above.
+ float fInterpretTailFactor = 10.0;
+
device->score = (void*)new LibreOfficeDeviceScore;
((LibreOfficeDeviceScore*)device->score)->fTime = timerCurrent(&kernelTime);
((LibreOfficeDeviceScore*)device->score)->bNoCLErrors = true;
+
+ ((LibreOfficeDeviceScore*)device->score)->fTime *= fInterpretTailFactor;
}
return DS_SUCCESS;
}