]> SALOME platform Git repositories - modules/yacs.git/blob - src/yacsloader/samples/wlm_2foreach_with_cache.xml
Salome HOME
Workload manager: more tests and other improvements.
[modules/yacs.git] / src / yacsloader / samples / wlm_2foreach_with_cache.xml
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"/>
7    </struct>
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"/>
18    </struct>
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"/>
33    </container>
34    <container name="c1">
35       <property name="container_kind" value="Salome"/>
36       <property name="attached_on_cloning" value="0"/>
37       <property name="nb_parallel_procs" value="1"/>
38       <property name="type" value="multi"/>
39       <property name="use_py_cache" value="1"/>
40    </container>
41    <container name="c2">
42       <property name="container_kind" value="Salome"/>
43       <property name="attached_on_cloning" value="0"/>
44       <property name="nb_parallel_procs" value="4"/>
45       <property name="type" value="multi"/>
46       <property name="use_py_cache" value="1"/>
47    </container>
48    <inline name="Begin">
49       <script><code><![CDATA[import time
50 vals = [ i for i in range(40)]
51 nbbranches = len(vals)
52 t0=time.time()
53 ]]></code></script>
54       <outport name="t0" type="pyobj"/>
55       <outport name="vals" type="intvec"/>
56       <outport name="nbbranches" type="int"/>
57    </inline>
58    <inline name="End">
59       <script><code><![CDATA[import time
60 tf=time.time()
61 total_time=int(tf-t0)
62
63 ok = True
64 s_expected = sum(vals)
65
66 tr1={}
67 for cont_name, s in r1:
68     if cont_name in tr1.keys():
69         v = tr1[cont_name]
70         if s > v:
71             tr1[cont_name] = s
72     else:
73         tr1[cont_name] = s
74
75 s1 = sum(tr1.values())
76 if s_expected != s1:
77     ok = False
78     print("Error on the first foreach.")
79     print("Expected sum:", s_expected)
80     print("Obtained sum:", s1)
81
82 tr2={}
83 for cont_name, s in r2:
84     if cont_name in tr2.keys():
85         v = tr2[cont_name]
86         if s > v:
87             tr2[cont_name] = s
88     else:
89         tr2[cont_name] = s
90
91 s2 = sum(tr2.values())
92 if s_expected != s2:
93     ok = False
94     print("Error on the second foreach.")
95     print("Expected sum:", s_expected)
96     print("Obtained sum:", s2)
97
98 #print(r1)
99 #print(r2)
100 ]]></code></script>
101       <load container="DefaultContainer"/>
102       <inport name="t0" type="pyobj"/>
103       <inport name="r1" type="seqpyobj"/>
104       <inport name="r2" type="seqpyobj"/>
105       <inport name="vals" type="intvec"/>
106       <outport name="total_time" type="int"/>
107       <outport name="ok" type="bool"/>
108    </inline>
109    <foreach name="ForEach1" nbranch="1" loopWeight="-1" type="int">
110       <remote name="PyNode1" elementaryWeight="-1">
111          <script><code><![CDATA[import time
112 if "s" not in globals():
113     # long initialization here to be done only once
114     time.sleep(1)
115     s=0
116 s += v
117 container_name = my_container.name
118 result = (container_name, s)
119 time.sleep(1)
120 ]]></code></script>
121          <load container="c1"/>
122          <inport name="v" type="int"/>
123          <outport name="result" type="pyobj"/>
124       </remote>
125    </foreach>
126    <foreach name="ForEach2" nbranch="1" loopWeight="-1" type="int">
127       <remote name="PyNode2" elementaryWeight="-1">
128          <script><code><![CDATA[import time
129 if "s" not in globals():
130     # long initialization here to be done only once
131     time.sleep(1)
132     s=0
133 s += v
134 container_name = my_container.name
135 result = (container_name, s)
136 time.sleep(1)
137 ]]></code></script>
138          <load container="c2"/>
139          <inport name="v" type="int"/>
140          <outport name="result" type="pyobj"/>
141       </remote>
142    </foreach>
143    <control> <fromnode>Begin</fromnode> <tonode>ForEach1</tonode> </control>
144    <control> <fromnode>Begin</fromnode> <tonode>ForEach2</tonode> </control>
145    <control> <fromnode>Begin</fromnode> <tonode>End</tonode> </control>
146    <control> <fromnode>ForEach1</fromnode> <tonode>End</tonode> </control>
147    <control> <fromnode>ForEach2</fromnode> <tonode>End</tonode> </control>
148    <datalink control="false">
149       <fromnode>Begin</fromnode> <fromport>t0</fromport>
150       <tonode>End</tonode> <toport>t0</toport>
151    </datalink>
152    <datalink control="false">
153       <fromnode>Begin</fromnode> <fromport>vals</fromport>
154       <tonode>End</tonode> <toport>vals</toport>
155    </datalink>
156    <datalink control="false">
157       <fromnode>Begin</fromnode> <fromport>vals</fromport>
158       <tonode>ForEach1</tonode> <toport>SmplsCollection</toport>
159    </datalink>
160    <datalink control="false">
161       <fromnode>Begin</fromnode> <fromport>vals</fromport>
162       <tonode>ForEach2</tonode> <toport>SmplsCollection</toport>
163    </datalink>
164    <datalink control="false">
165       <fromnode>Begin</fromnode> <fromport>nbbranches</fromport>
166       <tonode>ForEach2</tonode> <toport>nbBranches</toport>
167    </datalink>
168    <datalink control="false">
169       <fromnode>Begin</fromnode> <fromport>nbbranches</fromport>
170       <tonode>ForEach1</tonode> <toport>nbBranches</toport>
171    </datalink>
172    <datalink control="false">
173       <fromnode>ForEach1</fromnode> <fromport>evalSamples</fromport>
174       <tonode>ForEach1.PyNode1</tonode> <toport>v</toport>
175    </datalink>
176    <datalink control="false">
177       <fromnode>ForEach2</fromnode> <fromport>evalSamples</fromport>
178       <tonode>ForEach2.PyNode2</tonode> <toport>v</toport>
179    </datalink>
180    <datalink control="false">
181       <fromnode>ForEach1.PyNode1</fromnode> <fromport>result</fromport>
182       <tonode>End</tonode> <toport>r1</toport>
183    </datalink>
184    <datalink control="false">
185       <fromnode>ForEach2.PyNode2</fromnode> <fromport>result</fromport>
186       <tonode>End</tonode> <toport>r2</toport>
187    </datalink>
188    <parameter>
189       <tonode>ForEach1</tonode><toport>nbBranches</toport>
190       <value><int>1</int></value>
191    </parameter>
192    <parameter>
193       <tonode>ForEach2</tonode><toport>nbBranches</toport>
194       <value><int>1</int></value>
195    </parameter>
196    <presentation name="Begin" x="9" y="86" width="158" height="117" expanded="1" expx="9" expy="86" expWidth="158" expHeight="117" shownState="0"/>
197    <presentation name="End" x="402.5" y="85" width="158" height="144" expanded="1" expx="402.5" expy="85" expWidth="158" expHeight="144" shownState="0"/>
198    <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"/>
199    <presentation name="ForEach2.PyNode2" x="13" y="92" width="158" height="63" expanded="1" expx="13" expy="92" expWidth="158" expHeight="63" shownState="0"/>
200    <presentation name="ForEach1" x="201.5" y="146" width="171.5" height="155" expanded="1" expx="201.5" expy="146" expWidth="171.5" expHeight="155" shownState="0"/>
201    <presentation name="ForEach2" x="204" y="313.5" width="175" height="159" expanded="1" expx="204" expy="313.5" expWidth="175" expHeight="159" shownState="0"/>
202    <presentation name="__ROOT__" x="0" y="0" width="564.5" height="476.5" expanded="1" expx="0" expy="0" expWidth="564.5" expHeight="476.5" shownState="0"/>
203 </proc>