作者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)