作者victoret (戏言~)
看板EE_DSnP
标题[请益] 关於 simulation 的效能(解法请 end)
时间Sat Jan 14 14:21:29 2012
好不容易把 sim -f 看起来好像完成以後
拿去测试 sim09 / pattern.09 和 sim13 / pattern.13
结果执行的时间真的是完全崩溃ˊˋ
sim09 花了大约 14 秒
sim13 的话,光运算完每个 gate 的 simulation 结果就花了六秒左右
整个把 FEC groups 弄出来...就懒得测了...大概会非常恐怖 = =
跟教授那个按下去瞬间结束差超级多 @@
想请问一下这有可能是什麽地方有问题???
感谢!!!
BTW 是用 parallel input
--
理所当然的某项事物,却会以某天为区隔,从此变得不再理所当然。
恩田陆 夜间远足
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.248.67.238
※ 编辑: victoret 来自: 111.248.67.238 (01/14 14:22)
1F:→ e124553423:教授应该是用hash去分FEC groups,另外有用O3试吗 01/14 14:24
2F:→ e124553423:运算一次simulation应该不会很慢才是?(O(n)) 01/14 14:25
SORRY 问题还是没解决ˊˋ
刚才测错档案 @@
※ 编辑: victoret 来自: 111.248.67.238 (01/14 14:37)
3F:→ wmin0:只sim dfslist上的而已唷 01/14 14:45
4F:→ e124553423:所以你现在是慢在跑simulation value还是分FEC group? 01/14 14:49
5F:→ victoret:只跑 DFS 应该没错...应该说,这两个测试档的都没有不在 01/14 14:50
6F:→ victoret:DFS 上的 AIG 吧 @@ 01/14 14:50
7F:推 wmin0:也是@@ 我猜是分FEC group慢吧 因为我自己是这样... 01/14 14:51
8F:→ victoret:慢的应该是 FEC groups...sim value 那边可以接受啦ˊˋ 01/14 14:52
9F:→ victoret:现在是 sim09 可以到 1 秒多 01/14 14:54
10F:→ victoret:但是 sim13 完完全全就是卡住了... 01/14 14:54
11F:推 wmin0:那应该还ok啦 我sim13跑了10秒@@ 01/14 14:55
12F:→ e124553423:你可以试试看第二次之後分FEC group时Hash不要开太大 01/14 14:58
13F:→ victoret:hash 有缩... 01/14 14:59
14F:→ victoret:不过现在发生更奇怪的状况 @@ 是说,pattern.13 就算只有 01/14 14:59
15F:→ victoret:32 个 case 也跑的天荒地老 @@ 01/14 15:00
16F:→ victoret:还会出现错误讯息: " 已砍掉 "...真是 01/14 15:01
17F:推 wmin0:那应该是分group那边慢了囧 01/14 15:03
18F:→ e124553423:那就不知道了(摊 01/14 15:03
19F:→ victoret:话说想请问一下大家 hash 一开始是给多大...总觉得跟 AIG 01/14 15:15
20F:→ victoret:的数量一样...够用吗? 01/14 15:15
21F:推 wmin0:不如考虑记忆体控管 改call init的方式reuse ? 01/14 15:18
22F:→ victoret:好像真的是 hash 大小问题...我变成 10 倍的大小就快多了 01/14 15:22
23F:→ victoret:残念,case 一多又慢回来了... 01/14 15:30
24F:→ e124553423:你的hashkey跟data分别是? 01/14 15:32
25F:→ victoret:key 是 sim 出来的 unsigned 和一个 0... 01/14 15:48
26F:→ victoret:个人的 key 是传两个东西进去,function 是相加 01/14 15:48
27F:→ victoret:然後 data 是一个...pair 里面是两个 vector,一个是 01/14 15:49
28F:→ victoret:CirGate* 的,另外一个是 bool...用来存有没有 inv 用的 01/14 15:50
29F:推 kickpp:hash不要开太大 32左右最好 我这样速度跟老师差不多 01/14 16:09
30F:→ e124553423:~"~虽然不一样但是感觉差别不大,这样我就不知道罗 01/14 16:11
31F:→ victoret:@@ 固定大小的 hash?!不过没试过这麽小的,试试看好了 01/14 16:17
32F:→ victoret:还有想请问是否会很常用到像 check 和 replaceInsert 之 01/14 16:18
33F:→ victoret:类的函数@@? 01/14 16:18
34F:推 ric2k1:好长的讨论串! 请记得 simulation 应该只是 linear time, 01/14 22:07
35F:→ ric2k1:而分 FEC groups 也是 linear time to FEC size 而已哦! 01/14 22:08
36F:→ ric2k1:其实我的演算法跟讲义的差不多,当然有一些细节我没有明讲! 01/14 22:08
37F:→ victoret:试过了各种方法依然无解...只要跑 sim12 以後的全部都会 01/14 22:38
38F:→ victoret:卡住... 01/14 22:38
39F:→ victoret:尤其是 sim13 卡到最後会出现中文 " 已砍掉 " 01/14 22:38
40F:→ victoret:不知道是怎麽一回事 @@ 01/14 22:38
41F:推 inferior9527:+1 QQ 01/14 23:09
42F:推 ric2k1:也许看一下讲义 p20,我是那样做的... 01/14 23:14
43F:→ victoret:也是用同样方法可是... 01/14 23:27
44F:→ victoret:就是慢的不像话ˊˋ...hash 改小也试过了ˊˋ 01/14 23:27
45F:→ victoret:终˙於˙发˙现˙了!!! 01/15 00:00
46F:→ victoret:要直接用 newGroups...不要用 erase 的! 01/15 00:00
47F:→ victoret:用 erase 会等到死掉啊! 01/15 00:00
48F:推 simpdanny:erase会把後面的移到前面唷@@" 01/15 00:29
49F:→ victoret:对 XD 这就是崩溃的点...马上变成 n^2 01/15 00:34
终於解决了!!!
可喜可贺!!!
问题是出在...记得要产生新的 newGroups!!!
假如用旧的直接 erase
由於删除的都是第一个...整个时间就会大大大大的提高 @@
所以才会 " 已砍掉 " <--- 爬旧文发现这就是 kill 的意思...
至於另外一个点则是
#1F4QBAGS 所提到的
假如每个都 gate 都存一份 FECGroup 那空间或时间会爆掉
BTW 揉合上面众人的建议改良之後
sim13 / pattern.13 在 O3 之下只需要 1.56 秒!!!
感谢上面教授和一大串强者提供的意见!!!
DSnP 板真的是温馨 > <
※ 编辑: victoret 来自: 123.192.136.173 (01/15 00:42)