summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config_host/config_features.h.in7
-rw-r--r--configure.ac1
-rw-r--r--sc/source/core/inc/openclwrapper.hxx (renamed from sc/source/core/opencl/openclwrapper.hxx)4
-rw-r--r--sc/source/core/tool/formulagroup.cxx40
-rw-r--r--sc/source/ui/app/scmod.cxx10
-rw-r--r--sc/source/ui/optdlg/calcoptionsdlg.cxx4
6 files changed, 43 insertions, 23 deletions
diff --git a/config_host/config_features.h.in b/config_host/config_features.h.in
index e288eefa0324..fac764e1936b 100644
--- a/config_host/config_features.h.in
+++ b/config_host/config_features.h.in
@@ -59,4 +59,11 @@
#define HAVE_FEATURE_MULTIUSER_ENVIRONMENT 0
+/*
+ * Whether we have the OpenCL headers and should compile in any
+ * support for that abstraction.
+ */
+
+#define HAVE_FEATURE_OPENCL 0
+
#endif
diff --git a/configure.ac b/configure.ac
index 12fe94a39f9b..4615ef365d71 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9854,6 +9854,7 @@ else
OPENCL_CFLAGS="-I$with_opencl_sdk/include"
OPENCL_LIBS="-L$with_opencl_sdk/lib/x86 -lOpenCL"
AC_MSG_RESULT([found at path $with_opencl_sdk])
+ AC_DEFINE(HAVE_FEATURE_OPENCL)
else
AC_MSG_ERROR([no headers found found at $with_opencl_sdk/include ])
fi
diff --git a/sc/source/core/opencl/openclwrapper.hxx b/sc/source/core/inc/openclwrapper.hxx
index d3b53548625b..62006d116a3b 100644
--- a/sc/source/core/opencl/openclwrapper.hxx
+++ b/sc/source/core/inc/openclwrapper.hxx
@@ -10,6 +10,8 @@
#ifndef _OPENCL_WRAPPER_H_
#define _OPENCL_WRAPPER_H_
+#include <config_features.h>
+
#include <CL/cl.h>
#define MaxTextExtent 4096
@@ -22,7 +24,7 @@
#define strcasecmp strcmp
#endif
#endif
-#define ENABLE_OPENCL //dbg
+
typedef struct _KernelEnv {
cl_context context;
cl_command_queue commandQueue;
diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx
index 43977edc6ccc..2262cc5e153b 100644
--- a/sc/source/core/tool/formulagroup.cxx
+++ b/sc/source/core/tool/formulagroup.cxx
@@ -7,6 +7,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+#include <config_features.h>
#include "formulagroup.hxx"
#include "document.hxx"
#include "formulacell.hxx"
@@ -15,8 +16,8 @@
#include "interpre.hxx"
#include "formula/vectortoken.hxx"
-#ifdef ENABLE_OPENCL
-#include "openclwrapper.hxx"
+#if HAVE_FEATURE_OPENCL
+# include "openclwrapper.hxx"
#endif
namespace sc {
@@ -40,7 +41,7 @@ TimeValue aTimeBefore, aTimeAfter;
bool FormulaGroupInterpreter::interpret()
{
-#ifdef ENABLE_OPENCL //dbg
+#if HAVE_FEATURE_OPENCL
size_t rowSize = mxGroup->mnLength, srcSize = 0;
fprintf(stderr,"rowSize at begin is ...%ld.\n",rowSize);
int *rangeStart =NULL; // The first position for calculation,for example,the A1 in (=MAX(A1:A100))
@@ -100,7 +101,7 @@ bool FormulaGroupInterpreter::interpret()
nRowEnd += i;
size_t nRowSize = nRowEnd - nRowStart + 1;
ScMatrixRef pMat(new ScMatrix(nColSize, nRowSize, 0.0));
-#ifdef ENABLE_OPENCL
+#if HAVE_FEATURE_OPENCL
//srcSize = rowSize+nRowSize-rowSize%nRowSize;//align as nRowSize
//srcData = (double *)calloc(srcSize,sizeof(double));
rangeStart[i] = nRowStart;//record the start position
@@ -109,7 +110,7 @@ bool FormulaGroupInterpreter::interpret()
for (size_t nCol = 0; nCol < nColSize; ++nCol)
{
const double* pArray = rArrays[nCol];
-#ifdef ENABLE_OPENCL
+#if HAVE_FEATURE_OPENCL
//printf("pArray is %p.\n",pArray);
if( NULL==pArray )
{
@@ -146,7 +147,7 @@ bool FormulaGroupInterpreter::interpret()
if (!pDest)
return false;
-#ifdef ENABLE_OPENCL
+#if HAVE_FEATURE_OPENCL
const formula::FormulaToken *pCur = aCode2.First();
aCode2.Reset();
while( ( pCur = aCode2.Next() ) != NULL )
@@ -187,7 +188,7 @@ bool FormulaGroupInterpreter::interpret()
}
} // for loop end (mxGroup->mnLength)
// For GPU calculation
-#ifdef ENABLE_OPENCL //dbg: Using "export SC_GPU=1" to open if{} in terminal
+#if HAVE_FEATURE_OPENCL //dbg: Using "export SC_GPU=1" to open if{} in terminal
if(getenv("SC_GPU"))
{
fprintf(stderr,"ggGPU flow...\n\n");
@@ -236,17 +237,20 @@ bool FormulaGroupInterpreter::interpret()
// }
// We want to stuff the double data, which in rResult[i] from GPU calculated well, to UI view for users
- for (sal_Int32 i = 0; i < mxGroup->mnLength; ++i)
- {
- ScFormulaCell* pDestx = mrDoc.GetFormulaCell(aTmpPos);
- if (!pDestx)
- return false;
- formula::FormulaTokenRef xResult = new formula::FormulaDoubleToken(rResult[i]);
- pDestx->SetResultToken(xResult.get());
- pDestx->ResetDirty();
- pDestx->SetChanged(true);
- aTmpPos.SetRow(mxGroup->mnStart + i + 1);
- }
+ ScAddress aInsertPos = maTopPos;
+ for (sal_Int32 i = 0; i < mxGroup->mnLength; ++i)
+ {
+ aInsertPos.SetRow(mxGroup->mnStart + i);
+ ScFormulaCell* pDestx = mrDoc.GetFormulaCell(aInsertPos);
+
+ SAL_DEBUG(" put value " << rResult[i] << " into formula at " << aInsertPos.Col() << " , " << aInsertPos.Row() );
+ assert(pDestx);
+
+ formula::FormulaTokenRef xResult = new formula::FormulaDoubleToken(rResult[i]);
+ pDestx->SetResultToken(xResult.get());
+ pDestx->ResetDirty();
+ pDestx->SetChanged(true);
+ }
}
if(leftData)
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx
index 673b79cb930c..4edfcf04c50c 100644
--- a/sc/source/ui/app/scmod.cxx
+++ b/sc/source/ui/app/scmod.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_features.h>
+
#include <com/sun/star/ui/dialogs/XSLTFilterDialog.hpp>
#include <comphelper/processfactory.hxx>
@@ -101,8 +103,8 @@
#include "scabstdlg.hxx"
#include "formula/errorcodes.hxx"
-#ifdef ENABLE_OPENCL
-#include "openclwrapper.hxx"
+#if HAVE_FEATURE_OPENCL
+# include "openclwrapper.hxx"
#endif
#define SC_IDLE_MIN 150
@@ -152,7 +154,7 @@ ScModule::ScModule( SfxObjectFactory* pFact ) :
mbIsInSharedDocLoading( false ),
mbIsInSharedDocSaving( false )
{
-#ifdef ENABLE_OPENCL
+#if HAVE_FEATURE_OPENCL
OclCalc::InitEnv();
#endif
// im ctor ist der ResManager (DLL-Daten) noch nicht initialisiert!
@@ -188,7 +190,7 @@ ScModule::ScModule( SfxObjectFactory* pFact ) :
ScModule::~ScModule()
{
-#ifdef ENABLE_OPENCL
+#if HAVE_FEATURE_OPENCL
OclCalc::ReleaseOpenclRunEnv();
#endif
OSL_ENSURE( !pSelTransfer, "Selection Transfer object not deleted" );
diff --git a/sc/source/ui/optdlg/calcoptionsdlg.cxx b/sc/source/ui/optdlg/calcoptionsdlg.cxx
index 86d718a939c8..11ec4cb49e37 100644
--- a/sc/source/ui/optdlg/calcoptionsdlg.cxx
+++ b/sc/source/ui/optdlg/calcoptionsdlg.cxx
@@ -10,6 +10,8 @@
*
*/
+#include <config_features.h>
+
#include "calcoptionsdlg.hxx"
#include "sc.hrc"
#include "scresid.hxx"
@@ -197,7 +199,9 @@ void ScCalcOptionsDialog::FillOptionsList()
}
pModel->Insert(createBoolItem(maCaptionEmptyStringAsZero,maConfig.mbEmptyStringAsZero));
+#if HAVE_FEATURE_OPENCL
pModel->Insert(createBoolItem(maCaptionOpenCLEnabled,maConfig.mbOpenCLEnabled));
+#endif
mpLbSettings->SetUpdateMode(true);
}