33 static const char MSG[]=
"Bloc::fitToPlayGround : Not implemented yet for this type of node !";
34 class MyVisitor :
public Visitor
38 void visitBloc(
Bloc *node) { node->ComposedNode::accept(
this); }
42 _max_lev=std::max(_max_lev,_lev);
45 node->ComposedNode::accept(
this);
66 _cont.push_back(cont2);
71 void visitProc(
Proc *node) { node->ComposedNode::accept(
this); }
82 std::list<ForEachLoop *> _fes;
83 std::list< HomogeneousPoolContainer *> _cont;
84 std::set< HomogeneousPoolContainer * > _cont2;
89 std::map<ComposedNode *,YACS::BASES::AutoRefCnt<PartDefinition> > zeMap;
92 for(std::list<ForEachLoop *>::const_iterator it=vis._fes.begin();it!=vis._fes.end();it++)
93 (*it)->edGetNbOfBranchesPort()->edInit(1);
96 throw YACS::Exception(
"Bloc::fitToPlayGround : Not enough cores available to run the calculation !");
99 for(std::list<ForEachLoop *>::const_iterator it=vis._fes.begin();it!=vis._fes.end();it++)
101 std::map<ComposedNode *,YACS::BASES::AutoRefCnt<PartDefinition> >::iterator it2(zeMap.find(*it));
104 int maxLev((*it)->getExecNode()->getMaxLevelOfParallelism());
105 int a((*it2).second->getNumberOfCoresConsumed());
107 (*it)->edGetNbOfBranchesPort()->edInit(res);
109 for(std::set< HomogeneousPoolContainer * >::const_iterator it=vis._cont2.begin();it!=vis._cont2.end();it++)
114 constexpr
char MSG[]=
"Bloc::propagePlayGround : Not implemented yet for this type of node !";
126 template<
class NodeClass>
133 _cont2.insert(cont2);
149 std::set< HomogeneousPoolContainer * >
_cont2;
156 for(
auto cont : vis.
_cont2)
void visitServiceInlineNode(ServiceInlineNode *node)
void visitDynParaLoop(DynParaLoop *node)
void visitServiceNode(ServiceNode *node)
void visitStudyOutNode(DataNode *node)
void visitNodeWithContainer(NodeClass *node)
void visitBloc(Bloc *node)
void visitSwitch(Switch *node)
void visitLoop(Loop *node)
void visitInlineNode(InlineNode *node)
void visitOutNode(DataNode *node)
void visitPresetNode(DataNode *node)
std::set< HomogeneousPoolContainer * > _cont2
void visitStudyInNode(DataNode *node)
void visitForLoop(ForLoop *node)
void visitElementaryNode(ElementaryNode *node)
void visitOptimizerLoop(OptimizerLoop *node)
void visitInlineFuncNode(InlineFuncNode *node)
void visitForEachLoop(ForEachLoop *node)
void visitWhileLoop(WhileLoop *node)
void visitProc(Proc *node)
void visitServerNode(ServerNode *node)
MyVisitorPropagate(ComposedNode *root)
void visitForEachLoopDyn(ForEachLoopDyn *node)
Composed node to group elementary and composed nodes.
void removeRecursivelyRedundantCL()
void accept(Visitor *visitor)
void propagePlayGround(const PlayGround *pg)
void fitToPlayGround(const PlayGround *pg)
void partitionRegardingDPL(const PartDefinition *pd, std::map< ComposedNode *, YACS::BASES::AutoRefCnt< PartDefinition > > &zeMap)
int getMaxLevelOfParallelism() const
Base class for all composed nodes.
Class for data parameters specification.
Base class for dynamically (fully or semifully) built graphs.
InputPort * edGetNbOfBranchesPort()
Base class for all calculation nodes.
Loop node for parametric calculation.
Class for calculation node (function) inlined (and executed) in the schema.
Class for calculation node (script) inlined (and executed) in the schema.
virtual Container * getContainer()
Base class for loop node.
class to build optimization loops
int getNumberOfCoresAvailable() const
int getNumberOfWorkers(int nbCoresPerWorker) const
Base class for all schema objects.
Class for calculation node associated with a component service.
Control node that emulates the C switch.