11
11
< link rel ="stylesheet " href ="https://unpkg.com/vue-material/dist/vue-material.min.css ">
12
12
< link rel ="stylesheet " href ="https://unpkg.com/vue-material/dist/theme/default.css ">
13
13
< link rel ="stylesheet " type ="text/css " href ="./main.css ">
14
- < title > COStreamJS-v0.10.3 </ title >
14
+ < title > COStreamJS-v0.10.4 </ title >
15
15
< style > .md-snackbar { max-height : none!important ;} </ style >
16
16
</ head >
17
17
@@ -166,7 +166,7 @@ <h1 class="md-title">FlatNodes</h1>
166
166
} )
167
167
}
168
168
if ( ! window . str ) {
169
- LoadFileAsync ( 'DCT ' )
169
+ LoadFileAsync ( 'mnist ' )
170
170
} else {
171
171
showCode ( str ) ;
172
172
}
@@ -193,12 +193,12 @@ <h1 class="md-title">FlatNodes</h1>
193
193
el : '#app' ,
194
194
data ( ) {
195
195
return {
196
- flats : [ ] ,
196
+ flats : [ ] , /** 成员有: {name,workEstimate,steadyCount,coreNum,stageNum>} */
197
197
isDOT : false ,
198
198
showSnackbar : false ,
199
199
snackBarMessage : '' ,
200
200
symbol_table : { } ,
201
- file : "DCT " , // 默认的示例文件名,
201
+ file : "mnist " , // 默认的示例文件名,
202
202
core : 4 , // 默认的划分核数
203
203
status : 0 // 0: 未编译, 1: 已打印语法树 2:已生成ssg 3: 已完成工作量估计 4: 已完成调度 5: 已划分 6: 已阶段赋值且代码生成,处于源码状态 7:查看目标代码状态
204
204
}
@@ -209,10 +209,10 @@ <h1 class="md-title">FlatNodes</h1>
209
209
old_code = str ;
210
210
try {
211
211
window . COStreamJS . main ( str , { platform : 'WEB' , coreNum :this . core || 4 } )
212
- this . flats = COStreamJS . ssg . flatNodes
213
- this . flats . forEach ( flat => {
214
- Vue . set ( flat , ' workEstimate' , COStreamJS . ssg . mapSteadyWork2FlatNode . get ( flat ) )
215
- Vue . set ( flat , ' coreNum' , COStreamJS . mp . FlatNode2PartitionNum . get ( flat ) )
212
+ this . flats = COStreamJS . ssg . flatNodes . map ( ( { name , steadyCount , stageNum } ) => ( { name , steadyCount , stageNum } ) )
213
+ COStreamJS . ssg . flatNodes . forEach ( ( flat , idx ) => {
214
+ this . flats [ idx ] . workEstimate = COStreamJS . ssg . mapSteadyWork2FlatNode . get ( flat )
215
+ this . flats [ idx ] . coreNum = COStreamJS . mp . FlatNode2PartitionNum . get ( flat )
216
216
} )
217
217
this . status = 6
218
218
} catch ( err ) {
@@ -234,6 +234,9 @@ <h1 class="md-title">FlatNodes</h1>
234
234
await window . renderDot ( dotStr )
235
235
} ,
236
236
coreNum2Color ( num ) {
237
+ if ( num === undefined ) {
238
+ return 'undefined'
239
+ }
237
240
const colors = [ "aliceblue" , "antiquewhite" , "yellowgreen" , "aquamarine" , "azure" , "magenta" , "maroon" , "mediumaquamarine" , "mediumblue" , "mediumorchid" ]
238
241
return colors [ num ]
239
242
} ,
@@ -266,24 +269,25 @@ <h1 class="md-title">FlatNodes</h1>
266
269
COStreamJS . gMainComposite = COStreamJS . SemCheck . findMainComposite ( COStreamJS . ast ) ;
267
270
// 4. 语法树转数据流图
268
271
COStreamJS . ssg = COStreamJS . AST2FlatStaticStreamGraph ( COStreamJS . gMainComposite , COStreamJS . unfold , COStreamJS . S ) ;
269
- this . flats = COStreamJS . ssg . flatNodes
272
+ this . flats = COStreamJS . ssg . flatNodes . map ( flat => ( { name : flat . name } ) )
270
273
break ;
271
274
}
272
275
case 2 :
273
276
// 5. 工作量估计
274
277
COStreamJS . WorkEstimate ( COStreamJS . ssg ) ;
275
- this . flats . forEach ( flat => Vue . set ( flat , ' workEstimate' , COStreamJS . ssg . mapSteadyWork2FlatNode . get ( flat ) ) ) ;
278
+ COStreamJS . ssg . flatNodes . forEach ( ( flat , idx ) => this . flats [ idx ] . workEstimate = COStreamJS . ssg . mapSteadyWork2FlatNode . get ( flat ) ) ;
276
279
break ;
277
280
case 3 :
278
281
COStreamJS . ShedulingSSG ( COStreamJS . ssg ) ; // 6. 调度
282
+ COStreamJS . ssg . flatNodes . forEach ( ( flat , idx ) => this . flats [ idx ] . steadyCount = flat . steadyCount ) ;
279
283
break ;
280
284
case 4 :{
281
285
// 7. 划分
282
286
COStreamJS . mp = new COStreamJS . GreedyPartition ( COStreamJS . ssg ) ;
283
287
COStreamJS . mp . setCpuCoreNum ( this . core ) ;
284
288
COStreamJS . mp . SssgPartition ( COStreamJS . ssg ) ;
285
289
COStreamJS . mp . computeCommunication ( ) ;
286
- this . flats . forEach ( flat => Vue . set ( flat , ' coreNum' , COStreamJS . mp . FlatNode2PartitionNum . get ( flat ) ) )
290
+ COStreamJS . ssg . flatNodes . forEach ( ( flat , idx ) => this . flats [ idx ] . coreNum = COStreamJS . mp . FlatNode2PartitionNum . get ( flat ) )
287
291
// 8. 输出统计信息
288
292
let SI = COStreamJS . GetSpeedUpInfo ( COStreamJS . ssg , COStreamJS . mp ) ;
289
293
debug ( COStreamJS . PrintSpeedUpInfo ( SI ) ) ;
@@ -292,6 +296,7 @@ <h1 class="md-title">FlatNodes</h1>
292
296
case 5 :{
293
297
// 9. 阶段赋值
294
298
COStreamJS . MaxStageNum = COStreamJS . StageAssignment ( COStreamJS . ssg , COStreamJS . mp ) ;
299
+ COStreamJS . ssg . flatNodes . forEach ( ( flat , idx ) => this . flats [ idx ] . stageNum = flat . stageNum ) ;
295
300
// 10.目标代码生成
296
301
COStreamJS . files = { } ;
297
302
COStreamJS . codeGeneration ( COStreamJS . mp . finalParts , COStreamJS . ssg , COStreamJS . mp ) ;
@@ -346,6 +351,7 @@ <h1 class="md-title">FlatNodes</h1>
346
351
this . status = 0
347
352
} ,
348
353
core : function ( newCore ) {
354
+ if ( this . status == 7 ) this . onToggleTargetCode ( )
349
355
this . status = 0
350
356
}
351
357
} ,
0 commit comments