officecfg/registry/schema/org/openoffice/Office/Calc.xcs | 4 ++-- sc/source/core/opencl/openclwrapper.cxx | 12 ++++++------ sc/source/core/tool/formulaopt.cxx | 5 ++++- sc/source/ui/optdlg/calcoptionsdlg.cxx | 9 ++++++++- 4 files changed, 20 insertions(+), 10 deletions(-)
New commits: commit a8614702368c746795e03503d0da16d241dfc4d0 Author: Markus Mohrhard <[email protected]> Date: Wed Sep 18 16:47:15 2013 +0200 fix storing of open cl device in configuration files Change-Id: Icc343b55fe40c430b87d2e4c98701d78c61e3a96 diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs index 25fe724..4c583a4 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs @@ -1344,12 +1344,12 @@ </info> <value>true</value> </prop> - <prop oor:name="OpenCLAutoDevice" oor:type="xs:string" oor:nillable="false"> + <prop oor:name="OpenCLDevice" oor:type="xs:string" oor:nillable="false"> <!-- UIHints: Tools - Options Spreadsheet Formula --> <info> <desc>The Device ID of the OpenCL device selected if OpenCLAutoSelect is false</desc> </info> - <value></value> + <value/> </prop> </group> <group oor:name="Syntax"> diff --git a/sc/source/core/tool/formulaopt.cxx b/sc/source/core/tool/formulaopt.cxx index f649927..1ce5e09 100644 --- a/sc/source/core/tool/formulaopt.cxx +++ b/sc/source/core/tool/formulaopt.cxx @@ -216,7 +216,7 @@ Sequence<OUString> ScFormulaCfg::GetPropertyNames() "Load/ODFRecalcMode", // SCFORMULAOPT_ODF_RECALC "Calculation/OpenCL", // SCFORMULAOPT_OPENCL_ENABLED "Calculation/OpenCLAutoSelect", // SCFORMULAOPT_OPENCL_AUTOSELECT - "Calculation/OpenCLAutoDevice" // SCFORMULAOPT_OPENCL_DEVICE + "Calculation/OpenCLDevice" // SCFORMULAOPT_OPENCL_DEVICE }; Sequence<OUString> aNames(SCFORMULAOPT_COUNT); OUString* pNames = aNames.getArray(); @@ -428,6 +428,7 @@ void ScFormulaCfg::UpdateFromProperties( const Sequence<OUString>& aNames ) pValues[nProp] >>= aOpenCLDevice; GetCalcConfig().maOpenCLDevice = aOpenCLDevice; } + break; default: ; } @@ -540,6 +541,8 @@ void ScFormulaCfg::Commit() { sal_Bool bVal = GetCalcConfig().mbOpenCLAutoSelect; pValues[nProp] <<= bVal; + sc::FormulaGroupInterpreter::switchOpenCLDevice( + GetCalcConfig().maOpenCLDevice, bVal); } break; case SCFORMULAOPT_OPENCL_DEVICE: commit b86d547a02a0fa717e5df355ed5946acff19f71a Author: Markus Mohrhard <[email protected]> Date: Wed Sep 18 16:26:08 2013 +0200 small fixes for broken code Change-Id: I77afc818d5575523077328042ac9418f521edc9c diff --git a/sc/source/core/opencl/openclwrapper.cxx b/sc/source/core/opencl/openclwrapper.cxx index d4cf1b7..d273463 100644 --- a/sc/source/core/opencl/openclwrapper.cxx +++ b/sc/source/core/opencl/openclwrapper.cxx @@ -251,8 +251,8 @@ std::vector<boost::shared_ptr<osl::File> > OpenclDevice::binaryGenerated( const } } } - return aGeneratedFiles; + return aGeneratedFiles; } int OpenclDevice::writeBinaryToFile( const OString& rFileName, const char* binary, size_t numBytes ) @@ -270,7 +270,6 @@ int OpenclDevice::writeBinaryToFile( const OString& rFileName, const char* binar assert(numBytes == nBytesWritten); return 1; - } int OpenclDevice::generatBinFromKernelSource( cl_program program, const char * clFileName ) @@ -414,9 +413,7 @@ int OpenclDevice::cachedOfKernerPrg( const GPUEnv *gpuEnvCached, const char * cl int OpenclDevice::compileKernelFile( GPUEnv *gpuInfo, const char *buildOption ) { cl_int clStatus = 0; - size_t length; int binary_status, idx; - cl_uint numDevices; const char* filename = "kernel.cl"; fprintf(stderr, "compileKernelFile ... \n"); if ( cachedOfKernerPrg(gpuInfo, filename) == 1 ) @@ -426,6 +423,7 @@ int OpenclDevice::compileKernelFile( GPUEnv *gpuInfo, const char *buildOption ) idx = gpuInfo->mnFileCount; + cl_uint numDevices; clStatus = clGetContextInfo( gpuInfo->mpContext, CL_CONTEXT_NUM_DEVICES, sizeof(numDevices), &numDevices, NULL ); CHECK_OPENCL( clStatus, "clGetContextInfo" ); @@ -437,6 +435,7 @@ int OpenclDevice::compileKernelFile( GPUEnv *gpuInfo, const char *buildOption ) if (aGeneratedFiles.size() == numDevices) { bBinaryExisted = true; + boost::scoped_array<size_t> length(new size_t[numDevices]); boost::scoped_array<unsigned char*> pBinary(new unsigned char*[numDevices]); for(size_t i = 0; i < numDevices; ++i) { @@ -448,7 +447,7 @@ int OpenclDevice::compileKernelFile( GPUEnv *gpuInfo, const char *buildOption ) if(nSize != nBytesRead) assert(false); - length = nBytesRead; + length[i] = nBytesRead; pBinary[i] = binary; } @@ -469,7 +468,7 @@ int OpenclDevice::compileKernelFile( GPUEnv *gpuInfo, const char *buildOption ) fprintf(stderr, "Create kernel from binary\n"); gpuInfo->mpArryPrograms[idx] = clCreateProgramWithBinary( gpuInfo->mpContext,numDevices, - mpArryDevsID.get(), &length, (const unsigned char**) pBinary.get(), + mpArryDevsID.get(), length.get(), (const unsigned char**) pBinary.get(), &binary_status, &clStatus ); if(clStatus != CL_SUCCESS) { @@ -515,6 +514,7 @@ int OpenclDevice::compileKernelFile( GPUEnv *gpuInfo, const char *buildOption ) if ( clStatus != CL_SUCCESS ) { + size_t length; printf ("BuildProgram error!\n"); if ( !gpuInfo->mnIsUserCreated ) { commit 0d9a1ba985fca09eefaf505f43b34ebf7080e8c2 Author: Markus Mohrhard <[email protected]> Date: Wed Sep 18 16:21:43 2013 +0200 select maximum one opencl device Change-Id: If06caaa6b39131359ffc81fadad200c8cf8fe24a diff --git a/sc/source/ui/optdlg/calcoptionsdlg.cxx b/sc/source/ui/optdlg/calcoptionsdlg.cxx index 9607fb6..eefb7f6 100644 --- a/sc/source/ui/optdlg/calcoptionsdlg.cxx +++ b/sc/source/ui/optdlg/calcoptionsdlg.cxx @@ -204,6 +204,8 @@ void ScCalcOptionsDialog::fillOpenclList() OUString aStoredDevice = maConfig.maOpenCLDevice; + SvTreeListEntry* pSelectedEntry = NULL; + sc::FormulaGroupInterpreter::fillOpenCLInfo(maPlatformInfo); for(std::vector<sc::OpenclPlatformInfo>::iterator it = maPlatformInfo.begin(), itEnd = maPlatformInfo.end(); it != itEnd; ++it) @@ -215,13 +217,18 @@ void ScCalcOptionsDialog::fillOpenclList() SvTreeListEntry* pEntry = mpOpenclInfoList->InsertEntry(aDeviceId); if(aDeviceId == aStoredDevice) { - mpOpenclInfoList->GetModel()->GetView(0)->Select(pEntry); + pSelectedEntry = pEntry; } pEntry->SetUserData(&(*itr)); } } mpOpenclInfoList->SetUpdateMode(true); + mpOpenclInfoList->GetModel()->GetView(0)->SelectAll(false, false); + if(pSelectedEntry) + { + mpOpenclInfoList->GetModel()->GetView(0)->Select(pSelectedEntry); + } SelectedDeviceChanged(); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
