作者查詢 / Lipraxde
作者 Lipraxde 在 PTT 全部看板的留言(推文), 共2107則
限定看板:全部
看板排序:
11F→: 動態記憶體要自己的管理 lifecycles,比較容易出錯XD12/06 11:21
1F→: 你的問題,spec 拿出來看電路學算一算應該可以找到答案12/05 12:41
5F→: LLVM 最為一個 SSA form 的 IR,value 「只能被賦值一12/01 19:45
6F→: 次」,def-use chain 就是你要找的「value 的關係」了12/01 19:45
7F→: 。由於 SSA 的 value 只能被賦值一次的關係,宣告變數12/01 19:45
8F→: 的一種替代方式就是先 allocate 一塊空間,對其做 load12/01 19:45
9F→: /store,一般 dependency analysis 是在分析這些 alloc12/01 19:45
10F→: ate 出來的空間。12/01 19:45
11F→: 應該是 compiler 要依 backend pipeline 來決定 instru12/01 23:32
12F→: ction scheduling,dependency 是用來避免 schedule 排12/01 23:32
13F→: 錯的 (例如本來是 RAW,結果你把 R 排到 W 前面,那 R12/01 23:32
14F→: 讀到的值就跟沒排前不同)。12/01 23:32
15F→: 至於 variable def 後到很後面才用到,代表的是這個 va12/01 23:32
16F→: riable 的 lifetime 很長,不代表它們之間沒有 depende12/01 23:32
17F→: ncy。12/01 23:32
18F→: 更正一下:「compiler 要依 backend pipeline...」-> c12/01 23:34
19F→: ompiler 要參考 backend pipeline...,這樣比較精確12/01 23:34
20F→: 第一份跑得比較快是因為 br 和 div 可以同時做,而第二12/02 12:24
21F→: 份要等到 br 做完 (或是 branch predict 有對) 才能跑12/02 12:24
22F→: ,又因為 mul 需要 div 的結果,mul 不能偷跑。12/02 12:24
23F→: Data dependency 跟 instruction scheduling 有關,但12/02 12:33
24F→: 這不代表它就是這個 case 的原因。兩份 binary 的 data12/02 12:33
25F→: dependency 都一樣,你下的結論從何而來?12/02 12:33
26F→: 是啊,原因是你的「pipeline一次可以做5個inst」,div12/02 20:05
27F→: 、mul 間隔的遠只是一種現象。12/02 20:05
1F→: -print-ir-after-all,然後開使 debug 吧,不過你只是11/28 02:20
2F→: 想插入新的 pass 的話其實直接改 pass builder 就好了11/28 02:20
3F→: -stats 要有 assertion build11/28 02:20
4F→: 試試看 -aa-eval,以前好像遇過類似的問題,不過有點忘11/28 15:51
5F→: 了是因為 lazy analysis 的關係還是啥的11/28 15:51
12F→: 這麼肥是有人在養吧11/28 11:45
4F→: 抽 70%?是也比買不到礦機好一點啦...11/13 10:13
2F→: Assembly 都在你眼前了,再加點油分析一下。11/09 01:55
3F→: LLVM 可以在每個 pass 跑完後 dump IR / machine IR,11/09 01:55
4F→: 對了解優化、為什麼生出這樣的 pattern 很有幫助。11/09 01:55
5F→: 另外就是不太確定你有沒有讀過 System V ABI,如果要做11/09 01:55
6F→: 的這麼深的優化的話熟悉 ABI 是很重要的!11/09 01:55
7F→: 啊...好像講了些不太相干的東西,回到你的問題,雖然給11/09 02:04
8F→: 的資訊有點少,不過從執行時間的差距、codegen 結果的11/09 02:04
9F→: 差異來看,我會覺得有可能是由於 cache 所造成的。11/09 02:04
10F→: Branch miss 呢?11/09 09:19
11F→: 有開 frame-pointer 的版本因為有多的 push、move 個關11/09 16:50
12F→: 係,因此不建議直接對 instruction num per cycles 下11/09 16:50
13F→: 定論。然後我注意到一個地方,all、none 的 instructio11/09 16:50
14F→: n 數量是差不多的,可以看看是為什麼 :)11/09 16:50
3F→: 那這樣的話你可以用 opt 去指定跑你要的優化,然後用 l11/03 00:55
4F→: lc 做 codegen、codegen 的優化。opt、llc 兩個 tool11/03 00:55
5F→: 分別是用來跑 target-independent、target-dependent11/03 00:55
6F→: 的 pass pipeline 的11/03 00:55
7F→: 要跑自己的 pass 去比較差異會比較建議用上述的作法,11/03 01:02
8F→: 這樣還可以拿到 object file 來看有沒有如預期 codegen11/03 01:02
9F→: 。用 clang 的話要指定 pass、優化程度比較麻煩,而 ll11/03 01:02
10F→: i 則是用 interpreter + JIT 的方式,要看到 codegen11/03 01:02
11F→: 的結果會比較難一些。11/03 01:02
18F→: 痾... opt -O3 && llc -O2 的 performance 比 opt -O311/03 19:52
19F→: && llc -O0 還好好像還蠻合理的吧?還是我理解錯你的意11/03 19:52
20F→: 思?11/03 19:52
21F→: 如果是做調整 target-independent 的 pass 順序的調整11/05 12:27
22F→: 的話,把 llc 固定用 O2 吧XD11/05 12:27
4F→: 收到各種 signal wait 都會跳出來,處理超麻煩的10/28 21:12
1F→: CoreMark,你應該要朝 CPU、Compiler 的 benchmark 的10/26 01:52
2F→: 方向找...不知道你指的「測量 C code performance 的相10/26 01:53
3F→: 關程式」是啥意思就是了...10/26 01:53