1 <?xml version='1.0' encoding='iso-8859-1' ?>
2 <proc name="2foreach_with_cache">
3 <property name="executor" value="workloadmanager"/>
4 <type name="string" kind="string"/>
5 <struct name="Engines/dataref">
6 <member name="ref" type="string"/>
8 <type name="bool" kind="bool"/>
9 <sequence name="boolvec" content="bool"/>
10 <type name="double" kind="double"/>
11 <sequence name="dblevec" content="double"/>
12 <objref name="file" id="file"/>
13 <type name="int" kind="int"/>
14 <sequence name="intvec" content="int"/>
15 <struct name="stringpair">
16 <member name="name" type="string"/>
17 <member name="value" type="string"/>
19 <sequence name="propvec" content="stringpair"/>
20 <objref name="pyobj" id="python:obj:1.0"/>
21 <sequence name="seqboolvec" content="boolvec"/>
22 <sequence name="seqdblevec" content="dblevec"/>
23 <sequence name="seqint" content="int"/>
24 <sequence name="seqintvec" content="intvec"/>
25 <sequence name="seqpyobj" content="pyobj"/>
26 <sequence name="stringvec" content="string"/>
27 <sequence name="seqstringvec" content="stringvec"/>
28 <container name="DefaultContainer">
29 <property name="container_kind" value="Salome"/>
30 <property name="attached_on_cloning" value="0"/>
31 <property name="container_name" value="FactoryServer"/>
32 <property name="name" value="localhost"/>
35 <property name="container_kind" value="Salome"/>
36 <property name="attached_on_cloning" value="1"/>
37 <property name="nb_parallel_procs" value="1"/>
38 <property name="type" value="multi"/>
39 <property name="use_py_cache" value="1"/>
42 <property name="container_kind" value="Salome"/>
43 <property name="attached_on_cloning" value="1"/>
44 <property name="nb_parallel_procs" value="4"/>
45 <property name="type" value="multi"/>
46 <property name="use_py_cache" value="1"/>
49 <script><code><![CDATA[import time
50 vals = [ i for i in range(40)]
51 nbbranches = len(vals)
54 <load container="DefaultContainer"/>
55 <outport name="t0" type="pyobj"/>
56 <outport name="vals" type="intvec"/>
57 <outport name="nbbranches" type="int"/>
60 <script><code><![CDATA[import time
65 s_expected = sum(vals)
68 for cont_name, s in r1:
69 if cont_name in tr1.keys():
76 s1 = sum(tr1.values())
79 err_message += "Error on the first foreach.\n"
80 err_message += "Expected sum:{}\n".format(s_expected)
81 err_message += "Obtained sum:{}\n".format(s1)
84 for cont_name, s in r2:
85 if cont_name in tr2.keys():
92 s2 = sum(tr2.values())
95 err_message += "Error on the second foreach.\n"
96 err_message += "Expected sum:{}\n".format(s_expected)
97 err_message += "Obtained sum:{}\n".format(s2)
99 coeff_cont = len(tr1) + ( 4 * len(tr2))
100 print("total_time:", total_time)
103 <load container="DefaultContainer"/>
104 <inport name="t0" type="pyobj"/>
105 <inport name="r1" type="seqpyobj"/>
106 <inport name="r2" type="seqpyobj"/>
107 <inport name="vals" type="intvec"/>
108 <outport name="total_time" type="int"/>
109 <outport name="ok" type="bool"/>
110 <outport name="coeff_cont" type="int"/>
111 <outport name="err_message" type="string"/>
113 <foreach name="ForEach1" nbranch="1" loopWeight="-1" type="int">
114 <remote name="PyNode1" elementaryWeight="-1">
115 <script><code><![CDATA[import time
116 if "s" not in globals():
117 # long initialization here to be done only once
121 container_name = my_container.name
122 result = (container_name, s)
125 <load container="c1"/>
126 <inport name="v" type="int"/>
127 <outport name="result" type="pyobj"/>
130 <foreach name="ForEach2" nbranch="1" loopWeight="-1" type="int">
131 <remote name="PyNode2" elementaryWeight="-1">
132 <script><code><![CDATA[import time
133 if "s" not in globals():
134 # long initialization here to be done only once
138 container_name = my_container.name
139 result = (container_name, s)
142 <load container="c2"/>
143 <inport name="v" type="int"/>
144 <outport name="result" type="pyobj"/>
147 <foreach name="Create_C1_containers" nbranch="15" loopWeight="-1" type="int">
148 <remote name="wait_c1" elementaryWeight="-1">
149 <script><code><![CDATA[import time
152 <load container="c1"/>
153 <inport name="x" type="int"/>
156 <foreach name="Create_C2_containers" nbranch="3" loopWeight="-1" type="int">
157 <remote name="wait_c2" elementaryWeight="-1">
158 <script><code><![CDATA[import time
161 <load container="c2"/>
162 <inport name="x" type="int"/>
165 <inline name="delay">
166 <script><code><![CDATA[import time
169 <load container="DefaultContainer"/>
171 <control> <fromnode>Begin</fromnode> <tonode>ForEach1</tonode> </control>
172 <control> <fromnode>Begin</fromnode> <tonode>ForEach2</tonode> </control>
173 <control> <fromnode>Begin</fromnode> <tonode>End</tonode> </control>
174 <control> <fromnode>Begin</fromnode> <tonode>delay</tonode> </control>
175 <control> <fromnode>ForEach1</fromnode> <tonode>End</tonode> </control>
176 <control> <fromnode>ForEach2</fromnode> <tonode>End</tonode> </control>
177 <control> <fromnode>Create_C1_containers</fromnode> <tonode>Create_C2_containers</tonode> </control>
178 <control> <fromnode>Create_C2_containers</fromnode> <tonode>Begin</tonode> </control>
179 <control> <fromnode>delay</fromnode> <tonode>ForEach1</tonode> </control>
180 <datalink control="false">
181 <fromnode>Begin</fromnode> <fromport>t0</fromport>
182 <tonode>End</tonode> <toport>t0</toport>
184 <datalink control="false">
185 <fromnode>Begin</fromnode> <fromport>vals</fromport>
186 <tonode>ForEach1</tonode> <toport>SmplsCollection</toport>
188 <datalink control="false">
189 <fromnode>Begin</fromnode> <fromport>vals</fromport>
190 <tonode>End</tonode> <toport>vals</toport>
192 <datalink control="false">
193 <fromnode>Begin</fromnode> <fromport>vals</fromport>
194 <tonode>ForEach2</tonode> <toport>SmplsCollection</toport>
196 <datalink control="false">
197 <fromnode>Begin</fromnode> <fromport>nbbranches</fromport>
198 <tonode>ForEach1</tonode> <toport>nbBranches</toport>
200 <datalink control="false">
201 <fromnode>Begin</fromnode> <fromport>nbbranches</fromport>
202 <tonode>ForEach2</tonode> <toport>nbBranches</toport>
204 <datalink control="false">
205 <fromnode>ForEach1</fromnode> <fromport>evalSamples</fromport>
206 <tonode>ForEach1.PyNode1</tonode> <toport>v</toport>
208 <datalink control="false">
209 <fromnode>ForEach2</fromnode> <fromport>evalSamples</fromport>
210 <tonode>ForEach2.PyNode2</tonode> <toport>v</toport>
212 <datalink control="false">
213 <fromnode>Create_C1_containers</fromnode> <fromport>evalSamples</fromport>
214 <tonode>Create_C1_containers.wait_c1</tonode> <toport>x</toport>
216 <datalink control="false">
217 <fromnode>Create_C2_containers</fromnode> <fromport>evalSamples</fromport>
218 <tonode>Create_C2_containers.wait_c2</tonode> <toport>x</toport>
220 <datalink control="false">
221 <fromnode>ForEach1.PyNode1</fromnode> <fromport>result</fromport>
222 <tonode>End</tonode> <toport>r1</toport>
224 <datalink control="false">
225 <fromnode>ForEach2.PyNode2</fromnode> <fromport>result</fromport>
226 <tonode>End</tonode> <toport>r2</toport>
229 <tonode>ForEach1</tonode><toport>nbBranches</toport>
230 <value><int>1</int></value>
233 <tonode>Create_C1_containers</tonode><toport>nbBranches</toport>
234 <value><int>15</int></value>
237 <tonode>Create_C1_containers</tonode><toport>SmplsCollection</toport>
239 <value><int>1</int></value>
240 <value><int>2</int></value>
241 <value><int>3</int></value>
242 <value><int>4</int></value>
243 <value><int>5</int></value>
244 <value><int>6</int></value>
245 <value><int>7</int></value>
246 <value><int>8</int></value>
247 <value><int>9</int></value>
248 <value><int>10</int></value>
249 <value><int>11</int></value>
250 <value><int>12</int></value>
251 <value><int>13</int></value>
252 <value><int>14</int></value>
253 <value><int>15</int></value>
254 </data></array></value>
257 <tonode>Create_C2_containers</tonode><toport>nbBranches</toport>
258 <value><int>3</int></value>
261 <tonode>Create_C2_containers</tonode><toport>SmplsCollection</toport>
263 <value><int>1</int></value>
264 <value><int>2</int></value>
265 <value><int>3</int></value>
266 </data></array></value>
269 <tonode>ForEach2</tonode><toport>nbBranches</toport>
270 <value><int>1</int></value>
272 <presentation name="delay" x="466" y="60" width="158" height="36" expanded="1" expx="466" expy="60" expWidth="158" expHeight="36" shownState="0"/>
273 <presentation name="Create_C2_containers.wait_c2" x="7" y="89" width="158" height="63" expanded="1" expx="7" expy="89" expWidth="158" expHeight="63" shownState="0"/>
274 <presentation name="Begin" x="362.5" y="133" width="158" height="117" expanded="1" expx="362.5" expy="133" expWidth="158" expHeight="117" shownState="0"/>
275 <presentation name="End" x="833.5" y="137" width="158" height="144" expanded="1" expx="833.5" expy="137" expWidth="158" expHeight="144" shownState="0"/>
276 <presentation name="ForEach1" x="587.5" y="123.5" width="171.5" height="155" expanded="1" expx="587.5" expy="123.5" expWidth="171.5" expHeight="155" shownState="0"/>
277 <presentation name="Create_C1_containers.wait_c1" x="6" y="97" width="158" height="63" expanded="1" expx="6" expy="97" expWidth="158" expHeight="63" shownState="0"/>
278 <presentation name="Create_C1_containers" x="4" y="133" width="168" height="164" expanded="1" expx="4" expy="133" expWidth="168" expHeight="164" shownState="0"/>
279 <presentation name="ForEach1.PyNode1" x="9.5" y="88" width="158" height="63" expanded="1" expx="9.5" expy="88" expWidth="158" expHeight="63" shownState="0"/>
280 <presentation name="ForEach2.PyNode2" x="13" y="92" width="158" height="63" expanded="1" expx="13" expy="92" expWidth="158" expHeight="63" shownState="0"/>
281 <presentation name="Create_C2_containers" x="187" y="133" width="169" height="156" expanded="1" expx="187" expy="133" expWidth="169" expHeight="156" shownState="0"/>
282 <presentation name="ForEach2" x="587" y="283" width="175" height="159" expanded="1" expx="587" expy="283" expWidth="175" expHeight="159" shownState="0"/>
283 <presentation name="__ROOT__" x="0" y="0" width="995.5" height="446" expanded="1" expx="0" expy="0" expWidth="995.5" expHeight="446" shownState="0"/>