Re: [請益] 那些語言或程式用上 多核心 CPU

看板Programming作者 (ggg)時間18年前 (2007/05/19 12:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串14/30 (看更多)
※ 引述《rightson.bbs@bbs.cs.nctu.edu.tw (@++@)》之銘言: : ※ 引述《somi.bbs@ptt.cc (SoMiMi FaReRe)》之銘言: : > 判斷程式花多少時間 這個問題基本上比 Halting Problem還要困難 : > 正式上來說 Halting Problem可被 reduce to (判斷程式花多少時間). : > 因此如果compiler可以判斷程式要花多少時間 就等於解了halting problem. : > 但已知 Halting Problem在Turing Machine上是undecidable : > 所以(判斷程式花多少時間)也是 undecidable. : 感謝補充 : 其實原po沒有講"錯" : 只是敘述方式讓我覺得他重新定義了halting problem : ======= : 這段非常怪,Compiler也許可以回答你每個指令要花多少週期做完,但無法回答你這程式 : 要花多少時間才能跑完,事實上,只要是圖靈機(Turing Machine,目前的機器皆是), : 是無法回答這個問題的,因為這是所謂的Halting Problem. === 多重程式, 多工, 多處理機, 平行計算, 多核心等等, 針對特定 AP 是可以讓 Compiler 來分析一個程式, 找出前後次序無關與相關的片段. 假設前後 A,B 兩片斷是相關的, 兩個 CPU 或 核心 C1, C2 被派來做這兩個片段, 因為 C2 要等 C1 做完 A, 才可以接續著做 B, 如果 C2 知道 C1 大概需做多久時間 T, 就可以離開一段時間 T 再回來檢查 C1 做完沒. 如果是這樣, 片段 A 讓 C1 做是可以事先依 A 的程式指令類別與數量估出所需 Cycle 數, 再依 C1 的 Clock 速率預估出所需時間, 就能決定大概該等多久. 只估片段而不涉及整個 大程式最終會不會(或該不該)停, 那還是可以估算的. 1.現在的 Compiler 似乎不做較長片段執行時間的估算. 但還是可以估, 未必 準確就是. 2.時延等候讓 cpu 或 core 去做別的事或都不做事, 就不必不停叫 CPU 去檢 試, 造成對 instruction pipeline 或 cache 的干擾, 固然是一種方法, 但 也不是很困難做不到的問題, 至少, 不會升級到 Halting Problem . 假如是這種狀況, 似乎事情還不是那麼難纏 ! 不過, Intel 因此被 AMD 拼過去, 那一定還有更大條的才是. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.6.234
文章代碼(AID): #16JdPZZx (Programming)
討論串 (同標題文章)
文章代碼(AID): #16JdPZZx (Programming)