From a19aa64c38111069e74199065b49afe47fae28ad Mon Sep 17 00:00:00 2001 From: Olivier Coulaud <Olivier.Coulaud@inria.fr> Date: Sat, 28 Sep 2013 17:32:34 +0200 Subject: [PATCH] Add a new constructor --- Src/Core/FFmmAlgorithmThreadProc.hpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Src/Core/FFmmAlgorithmThreadProc.hpp b/Src/Core/FFmmAlgorithmThreadProc.hpp index 1b5ef9843..381cb6480 100755 --- a/Src/Core/FFmmAlgorithmThreadProc.hpp +++ b/Src/Core/FFmmAlgorithmThreadProc.hpp @@ -112,7 +112,7 @@ public: * An assert is launched if one of the arguments is null */ FFmmAlgorithmThreadProc(const FMpi::FComm& inComm, OctreeClass* const inTree, KernelClass* const inKernels) - : tree(inTree) , kernels(0), comm(inComm), numberOfLeafs(0), + : tree(inTree) , kernels(0), comm(inComm), iterArray(nullptr),numberOfLeafs(0), MaxThreads(omp_get_max_threads()), nbProcess(inComm.processCount()), idProcess(inComm.processId()), OctreeHeight(tree->getHeight()),intervals(new Interval[inComm.processCount()]), workingIntervalsPerLevel(new Interval[inComm.processCount() * tree->getHeight()]){ @@ -127,7 +127,25 @@ public: FDEBUG(FDebug::Controller << "FFmmAlgorithmThreadProc\n"); FDEBUG(FDebug::Controller << "Max threads = " << MaxThreads << ", Procs = " << nbProcess << ", I am " << idProcess << ".\n"); } + FFmmAlgorithmThreadProc(const MPI_Comm& inComm, OctreeClass* const inTree, KernelClass* const inKernels) + : tree(inTree) , kernels(0), comm(inComm), iterArray(nullptr),numberOfLeafs(0), + MaxThreads(omp_get_max_threads()), + OctreeHeight(tree->getHeight()){ + fassert(tree, "tree cannot be null", __LINE__, __FILE__); + nbProcess = comm.processCount() ; + idProcess = comm.processId() ; + intervals = new Interval[nbProcess] ; + workingIntervalsPerLevel = new Interval[nbProcess * tree->getHeight()] ; + // + this->kernels = new KernelClass*[MaxThreads]; + for(int idxThread = 0 ; idxThread < MaxThreads ; ++idxThread){ + this->kernels[idxThread] = new KernelClass(*inKernels); + } + + FDEBUG(FDebug::Controller << "FFmmAlgorithmThreadProc\n"); + FDEBUG(FDebug::Controller << "Max threads = " << MaxThreads << ", Procs = " << nbProcess << ", I am " << idProcess << ".\n"); + } /** Default destructor */ virtual ~FFmmAlgorithmThreadProc(){ for(int idxThread = 0 ; idxThread < MaxThreads ; ++idxThread){ -- GitLab