[Libreoffice-commits] core.git: Branch 'private/tml/opencl-background-compilation-2' - 2 commits - sc/inc sc/source

Tor Lillqvist tml at collabora.com
Wed Nov 20 08:16:51 PST 2013


 sc/inc/clew.h                            | 1318 -------------------------------
 sc/inc/opbase.hxx                        |  206 ----
 sc/source/core/inc/dynamickernel.hxx     |  107 --
 sc/source/core/opencl/clcc/clew.h        | 1318 +++++++++++++++++++++++++++++++
 sc/source/core/opencl/formulagroupcl.cxx |   81 +
 sc/source/core/opencl/opbase.hxx         |  206 ++++
 sc/source/core/opencl/openclwrapper.hxx  |    2 
 sc/source/core/tool/formulagroup.cxx     |    1 
 8 files changed, 1587 insertions(+), 1652 deletions(-)

New commits:
commit 0b6eb3a40374ac6a1165cd5fc279e2e7c2bb9173
Author: Tor Lillqvist <tml at collabora.com>
Date:   Wed Nov 20 18:15:10 2013 +0200

    opbase.hxx and clew.h can now move back where they were, too
    
    Change-Id: I0037eed4102eebafdab3c8b5dc6a3d92b57bd49b

diff --git a/sc/inc/clew.h b/sc/source/core/opencl/clcc/clew.h
similarity index 100%
rename from sc/inc/clew.h
rename to sc/source/core/opencl/clcc/clew.h
diff --git a/sc/inc/opbase.hxx b/sc/source/core/opencl/opbase.hxx
similarity index 99%
rename from sc/inc/opbase.hxx
rename to sc/source/core/opencl/opbase.hxx
index 107ef3e..d921119 100644
--- a/sc/inc/opbase.hxx
+++ b/sc/source/core/opencl/opbase.hxx
@@ -10,7 +10,7 @@
 #ifndef SC_OPENCL_OPBASE_HXX
 #define SC_OPENCL_OPBASE_HXX
 
-#include "clew.h"
+#include "clcc/clew.h"
 
 #include "formula/token.hxx"
 
diff --git a/sc/source/core/opencl/openclwrapper.hxx b/sc/source/core/opencl/openclwrapper.hxx
index fb3ee9e..0dfe24c 100644
--- a/sc/source/core/opencl/openclwrapper.hxx
+++ b/sc/source/core/opencl/openclwrapper.hxx
@@ -21,7 +21,7 @@
 
 #include <rtl/string.hxx>
 
-#include "clew.h"
+#include "clcc/clew.h"
 
 // CL_MAP_WRITE_INVALIDATE_REGION is new in OpenCL 1.2.
 
commit 3557ba13574acbb4011460eabe4e3bcf8170a9d3
Author: Tor Lillqvist <tml at collabora.com>
Date:   Wed Nov 20 18:10:56 2013 +0200

    DynamicKernel isn't needed outside formulagroupcl.cxx after all
    
    So put it back there.
    
    Change-Id: I7c78719c95123e33e4506ace912ff056df56b247

diff --git a/sc/source/core/inc/dynamickernel.hxx b/sc/source/core/inc/dynamickernel.hxx
deleted file mode 100644
index dd4d516..0000000
--- a/sc/source/core/inc/dynamickernel.hxx
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-#ifndef INCLUDED_SC_SOURCE_CORE_INC_DYNAMICKERNEL_HXX
-#define INCLUDED_SC_SOURCE_CORE_INC_DYNAMICKERNEL_HXX
-
-#include <config_features.h>
-
-#include "formulagroup.hxx"
-
-#if !HAVE_FEATURE_OPENCL
-
-namespace sc { namespace opencl {
-
-class DynamikcKernel : public CompiledFormula
-{
-}
-
-} // namespace opencl
-
-} // namespace sc
-
-#else
-
-#include "clew.h"
-
-#include "document.hxx"
-#include "opbase.hxx"
-
-namespace sc { namespace opencl {
-
-class DynamicKernelArgument;
-class SlidingFunctionBase;
-
-/// Holds the symbol table for a given dynamic kernel
-class SymbolTable {
-public:
-    typedef std::map<const formula::FormulaToken *,
-        boost::shared_ptr<DynamicKernelArgument> > ArgumentMap;
-    // This avoids instability caused by using pointer as the key type
-    typedef std::list< boost::shared_ptr<DynamicKernelArgument> > ArgumentList;
-    SymbolTable(void):mCurId(0) {}
-    template <class T>
-    const DynamicKernelArgument *DeclRefArg(FormulaTreeNodeRef, SlidingFunctionBase* pCodeGen);
-    /// Used to generate sliding window helpers
-    void DumpSlidingWindowFunctions(std::stringstream &ss);
-    /// Memory mapping from host to device and pass buffers to the given kernel as
-    /// arguments
-    void Marshal(cl_kernel, int, cl_program);
-private:
-    unsigned int mCurId;
-    ArgumentMap mSymbols;
-    ArgumentList mParams;
-};
-
-class DynamicKernel : public CompiledFormula
-{
-public:
-    DynamicKernel(FormulaTreeNodeRef r):mpRoot(r),
-        mpProgram(NULL), mpKernel(NULL), mpResClmem(NULL), mpCode(NULL) {}
-    static DynamicKernel *create(ScDocument& rDoc,
-                                 const ScAddress& rTopPos,
-                                 ScTokenArray& rCode);
-    /// OpenCL code generation
-    void CodeGen();
-    /// Produce kernel hash
-    std::string GetMD5(void);
-    /// Create program, build, and create kerenl
-    /// TODO cache results based on kernel body hash
-    /// TODO: abstract OpenCL part out into OpenCL wrapper.
-    void CreateKernel(void);
-    /// Prepare buffers, marshal them to GPU, and launch the kernel
-    /// TODO: abstract OpenCL part out into OpenCL wrapper.
-    void Launch(size_t nr);
-    ~DynamicKernel();
-    cl_mem GetResultBuffer(void) const { return mpResClmem; }
-    void SetPCode(ScTokenArray *pCode) { mpCode = pCode; }
-
-private:
-    void TraverseAST(FormulaTreeNodeRef);
-    FormulaTreeNodeRef mpRoot;
-    SymbolTable mSyms;
-    std::string mKernelSignature, mKernelHash;
-    std::string mFullProgramSrc;
-    cl_program mpProgram;
-    cl_kernel mpKernel;
-    cl_mem mpResClmem; // Results
-    std::set<std::string> inlineDecl;
-    std::set<std::string> inlineFun;
-    ScTokenArray *mpCode;
-};
-
-}
-
-}
-
-#endif // HAVE_FEATURE_OPENCL
-
-#endif // INCLUDED_SC_SOURCE_CORE_INC_DYNAMICKERNEL_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index 8ef18cf..5d14ddd 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -17,7 +17,6 @@
 #include "formula/vectortoken.hxx"
 #include "scmatrix.hxx"
 
-#include "dynamickernel.hxx"
 #include "openclwrapper.hxx"
 
 #include "op_financial.hxx"
@@ -2375,15 +2374,33 @@ DynamicKernelSoPArguments::DynamicKernelSoPArguments(
     }
 }
 
-/// Used to generate sliding window helpers
-void SymbolTable::DumpSlidingWindowFunctions(std::stringstream &ss)
-{
+/// Holds the symbol table for a given dynamic kernel
+class SymbolTable {
+public:
+    typedef std::map<const formula::FormulaToken *,
+        boost::shared_ptr<DynamicKernelArgument> > ArgumentMap;
+    // This avoids instability caused by using pointer as the key type
+    typedef std::list< boost::shared_ptr<DynamicKernelArgument> > ArgumentList;
+    SymbolTable(void):mCurId(0) {}
+    template <class T>
+    const DynamicKernelArgument *DeclRefArg(FormulaTreeNodeRef, SlidingFunctionBase* pCodeGen);
+    /// Used to generate sliding window helpers
+    void DumpSlidingWindowFunctions(std::stringstream &ss)
+    {
         for(ArgumentList::iterator it = mParams.begin(), e= mParams.end(); it!=e;
             ++it) {
             (*it)->GenSlidingWindowFunction(ss);
             ss << "\n";
         }
-}
+    }
+    /// Memory mapping from host to device and pass buffers to the given kernel as
+    /// arguments
+    void Marshal(cl_kernel, int, cl_program);
+private:
+    unsigned int mCurId;
+    ArgumentMap mSymbols;
+    ArgumentList mParams;
+};
 
 void SymbolTable::Marshal(cl_kernel k, int nVectorWidth, cl_program pProgram)
 {
@@ -2394,9 +2411,16 @@ void SymbolTable::Marshal(cl_kernel k, int nVectorWidth, cl_program pProgram)
     }
 }
 
-/// OpenCL code generation
-void DynamicKernel::CodeGen()
+class DynamicKernel : public CompiledFormula
 {
+public:
+    DynamicKernel(FormulaTreeNodeRef r):mpRoot(r),
+        mpProgram(NULL), mpKernel(NULL), mpResClmem(NULL), mpCode(NULL) {}
+    static DynamicKernel *create(ScDocument& rDoc,
+                                 const ScAddress& rTopPos,
+                                 ScTokenArray& rCode);
+    /// OpenCL code generation
+    void CodeGen() {
         // Travese the tree of expression and declare symbols used
         const DynamicKernelArgument *DK= mSyms.DeclRefArg<
             DynamicKernelSoPArguments>(mpRoot, new OpNop);
@@ -2432,11 +2456,10 @@ void DynamicKernel::CodeGen()
 #if 1
         std::cerr<< "Program to be compiled = \n" << mFullProgramSrc << "\n";
 #endif
-}
-
-/// Produce kernel hash
-std::string DynamicKernel::GetMD5(void)
-{
+    }
+    /// Produce kernel hash
+    std::string GetMD5(void)
+    {
 #ifdef MD5_KERNEL
         if (mKernelHash.empty()) {
             std::stringstream md5s;
@@ -2455,12 +2478,15 @@ std::string DynamicKernel::GetMD5(void)
 #else
         return "";
 #endif
-}
-
-/// Prepare buffers, marshal them to GPU, and launch the kernel
-/// TODO: abstract OpenCL part out into OpenCL wrapper.
-void DynamicKernel::Launch(size_t nr)
-{
+    }
+    /// Create program, build, and create kerenl
+    /// TODO cache results based on kernel body hash
+    /// TODO: abstract OpenCL part out into OpenCL wrapper.
+    void CreateKernel(void);
+    /// Prepare buffers, marshal them to GPU, and launch the kernel
+    /// TODO: abstract OpenCL part out into OpenCL wrapper.
+    void Launch(size_t nr)
+    {
         // Obtain cl context
         KernelEnv kEnv;
         OpenclDevice::setKernelEnv(&kEnv);
@@ -2481,7 +2507,24 @@ void DynamicKernel::Launch(size_t nr)
             global_work_size, NULL, 0, NULL, NULL);
         if (CL_SUCCESS != err)
             throw OpenCLError(err);
-}
+    }
+    ~DynamicKernel();
+    cl_mem GetResultBuffer(void) const { return mpResClmem; }
+    void SetPCode(ScTokenArray *pCode) { mpCode = pCode; }
+
+private:
+    void TraverseAST(FormulaTreeNodeRef);
+    FormulaTreeNodeRef mpRoot;
+    SymbolTable mSyms;
+    std::string mKernelSignature, mKernelHash;
+    std::string mFullProgramSrc;
+    cl_program mpProgram;
+    cl_kernel mpKernel;
+    cl_mem mpResClmem; // Results
+    std::set<std::string> inlineDecl;
+    std::set<std::string> inlineFun;
+    ScTokenArray *mpCode;
+};
 
 DynamicKernel::~DynamicKernel()
 {
diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx
index 79d5de7..f3ec3e0 100644
--- a/sc/source/core/tool/formulagroup.cxx
+++ b/sc/source/core/tool/formulagroup.cxx
@@ -16,7 +16,6 @@
 #include "compiler.hxx"
 #include "interpre.hxx"
 #include "scmatrix.hxx"
-#include "dynamickernel.hxx"
 
 #include "formula/vectortoken.hxx"
 #include "rtl/bootstrap.hxx"


More information about the Libreoffice-commits mailing list