From 0073a296012fb5d424a37dcd43170c215c99b093 Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Fri, 16 Oct 2015 16:02:30 +0200 Subject: [PATCH] Small addon to support non //sable components. --- src/evalyfx/YACSEvalYFX.cxx | 10 ++++++++++ src/evalyfx/YACSEvalYFX.hxx | 2 ++ src/evalyfx/YACSEvalYFXPattern.cxx | 10 +++++++--- src/evalyfx/YACSEvalYFXPattern.hxx | 3 +++ src/evalyfx_swig/evalyfx.i | 2 ++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/evalyfx/YACSEvalYFX.cxx b/src/evalyfx/YACSEvalYFX.cxx index aba327e74..b3fcb25e3 100644 --- a/src/evalyfx/YACSEvalYFX.cxx +++ b/src/evalyfx/YACSEvalYFX.cxx @@ -147,6 +147,16 @@ YACS::ENGINE::Proc *YACSEvalYFX::getUndergroundGeneratedGraph() const return _pattern->getUndergroundGeneratedGraph(); } +void YACSEvalYFX::setParallelizeStatus(bool newVal) +{ + _pattern->setParallelizeStatus(newVal); +} + +bool YACSEvalYFX::getParallelizeStatus() const +{ + return _pattern->getParallelizeStatus(); +} + YACSEvalYFX::YACSEvalYFX(YACS::ENGINE::Proc *scheme, bool ownScheme):_pattern(0) { _pattern=YACSEvalYFXPattern::FindPatternFrom(this,scheme,ownScheme); diff --git a/src/evalyfx/YACSEvalYFX.hxx b/src/evalyfx/YACSEvalYFX.hxx index a25d10e08..14dcc9573 100644 --- a/src/evalyfx/YACSEvalYFX.hxx +++ b/src/evalyfx/YACSEvalYFX.hxx @@ -61,6 +61,8 @@ public: YACSEVALYFX_EXPORT std::vector getResults() const; // YACSEVALYFX_EXPORT YACS::ENGINE::Proc *getUndergroundGeneratedGraph() const; + YACSEVALYFX_EXPORT void setParallelizeStatus(bool newVal); + YACSEVALYFX_EXPORT bool getParallelizeStatus() const; YACSEVALYFX_EXPORT ~YACSEvalYFX(); private: YACSEvalYFX(YACS::ENGINE::Proc *scheme, bool ownScheme); diff --git a/src/evalyfx/YACSEvalYFXPattern.cxx b/src/evalyfx/YACSEvalYFXPattern.cxx index e2df4295a..19064f8c9 100644 --- a/src/evalyfx/YACSEvalYFXPattern.cxx +++ b/src/evalyfx/YACSEvalYFXPattern.cxx @@ -161,7 +161,7 @@ void YACSEvalYFXPattern::registerObserver(YACSEvalObserver *observer) _observer->incrRef(); } -YACSEvalYFXPattern::YACSEvalYFXPattern(YACSEvalYFX *boss, YACS::ENGINE::Proc *scheme, bool ownScheme):_boss(boss),_scheme(scheme),_ownScheme(ownScheme),_rm(new ResourcesManager_cpp),_res(0),_observer(0) +YACSEvalYFXPattern::YACSEvalYFXPattern(YACSEvalYFX *boss, YACS::ENGINE::Proc *scheme, bool ownScheme):_boss(boss),_scheme(scheme),_ownScheme(ownScheme),_parallelizeStatus(true),_rm(new ResourcesManager_cpp),_res(0),_observer(0) { } @@ -399,8 +399,12 @@ int YACSEvalYFXRunOnlyPattern::assignNbOfBranches() throw YACS::Exception("YACSEvalYFXRunOnlyPattern::assignNbOfBranches : internal error 2 !"); unsigned int nbProcsDeclared(getResourcesInternal()->getNumberOfProcsDeclared()); nbProcsDeclared=std::max(nbProcsDeclared,4u); - int nbOfBranch(nbProcsDeclared/getResourcesInternal()->getMaxLevelOfParallelism()); - nbOfBranch=std::max(nbOfBranch,1); + int nbOfBranch=1; + if(getParallelizeStatus()) + { + nbOfBranch=(nbProcsDeclared/getResourcesInternal()->getMaxLevelOfParallelism()); + nbOfBranch=std::max(nbOfBranch,1); + } YACS::ENGINE::InputPort *zeInputToSet(zeMainNode->edGetNbOfBranchesPort()); YACS::ENGINE::AnyInputPort *zeInputToSetC(dynamic_cast(zeInputToSet)); if(!zeInputToSetC) diff --git a/src/evalyfx/YACSEvalYFXPattern.hxx b/src/evalyfx/YACSEvalYFXPattern.hxx index 110f22b90..ea3c4d4fa 100644 --- a/src/evalyfx/YACSEvalYFXPattern.hxx +++ b/src/evalyfx/YACSEvalYFXPattern.hxx @@ -54,6 +54,8 @@ public: std::vector< YACSEvalInputPort *> getFreeInputPorts() const; std::vector< YACSEvalOutputPort *> getFreeOutputPorts() const; static YACSEvalYFXPattern *FindPatternFrom(YACSEvalYFX *boss, YACS::ENGINE::Proc *scheme, bool ownScheme); + void setParallelizeStatus(bool newVal) { _parallelizeStatus=newVal; } + bool getParallelizeStatus() const { return _parallelizeStatus; } bool isAlreadyComputedResources() const; void checkNonAlreadyComputedResources() const; void checkAlreadyComputedResources() const; @@ -89,6 +91,7 @@ private: private: YACSEvalYFX *_boss; bool _ownScheme; + bool _parallelizeStatus; YACS::ENGINE::Proc *_scheme; ResourcesManager_cpp *_rm; YACSEvalListOfResources *_res; diff --git a/src/evalyfx_swig/evalyfx.i b/src/evalyfx_swig/evalyfx.i index 4395e90dd..89668a64e 100644 --- a/src/evalyfx_swig/evalyfx.i +++ b/src/evalyfx_swig/evalyfx.i @@ -351,6 +351,8 @@ public: bool isLocked() const; YACS::ENGINE::Proc *getUndergroundGeneratedGraph() const; YACSEvalListOfResources *giveResources(); + void setParallelizeStatus(bool newVal); + bool getParallelizeStatus() const; //void registerObserver(YACSEvalObserver *observer); %extend { -- 2.30.2