看板 EE_DSnP 關於我們 聯絡資訊
啊...我又要來騙P幣了XDrz... 我實在不是故意的...只是這樁事實在太怪了 首先這件事又剛好跟ref count這個老梗扯上關係了 也跟C432這個大魔王掛勾 我的疑惑是這樣: 我對C432用cirsetv -f建立完BDD後 去brep 43 -ref 然後就看到一串node還有ref count 這時候跟ref program比較,會發現囧事... _one的ref count兩個互比 我的是2316,而ref prog的是2314...... 我一直想要找BUG到底在哪裡,可是換了一個又一個的myHash之後 還是不行......最後發現改cache的大小似乎會起一些變化 如果把cache調大,就不會出這個bug了... (兩個程式跑出來的ref count會一樣) 然後我又多事,把ref program的cache調小看看 結果... 連ref program作C432 -f的BDD,他的_one的ref count也變成2316了... 難道BddNode數量的多寡其實會跟cache大小有關的嗎XD?? 強者我同學和我討論了很久也討論不出個所以然來XDrz... 我想還是有勞高手解答了XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.88.214
gcman:嗯 me too.... 01/17 16:33
ric2k1:可以提供 dofile 我看看嗎? 01/17 16:47
a3785lexx:我發現我的實驗不夠嚴謹了... 01/17 16:54
剛剛PO完文,又去重新試試看 發現其實只要是直接開程式,cirr、cirsetv、cirbdd 這樣brep出來的話,ref count兩邊都會一樣 在C432 -f,brep 43 -ref的情況下,_one會是2316 counts 可是,如果去跑我的dofile(這是一開始發現差異的地方) 我的程式的cache如果設大了(試過5xxxx...有點忘了囧) 剛剛提到的_one的ref count就會變2314 會跟ref program一樣 我的dofile是一個file跑好幾個cirr 如果我在dofile裡每次cirr前,都加上 breset 64 8009 10009 的話 兩個程式的結果就又會都一樣了。(refCount of _one = 2316) 所以是cache size太大的時候,cirsetv會有問題嗎XD?? 附註:我的原版dofile(會出差異的)基本上可以這樣描述: cirr -r CIRCUIT_FILE cirsetv (以老師提供的performance file挑最快的一種) cirsetv (跟上一行一樣) brep ALL_POs -ref 其中CIRCUIT_FILE={C17、17_r、432、432_r、499、499_r} 會出現我的程式和參考程式不一樣的只有C432 ※ 編輯: a3785lexx 來自: 114.37.88.214 (01/17 17:07)