Re: [請益] 那些語言或程式用上 多核心 CPU
※ 引述《ephesians (ephesians)》之銘言:
: ※ 引述《ggg12345 (ggg)》之銘言:
: : 1.現在的 Compiler 似乎不做較長片段執行時間的估算. 但還是可以估, 未必
: : 準確就是.
: : 2.時延等候讓 cpu 或 core 去做別的事或都不做事, 就不必不停叫 CPU 去檢
: : 試, 造成對 instruction pipeline 或 cache 的干擾, 固然是一種方法, 但
: : 也不是很困難做不到的問題, 至少, 不會升級到 Halting Problem .
: : 假如是這種狀況, 似乎事情還不是那麼難纏 ! 不過, Intel 因此被 AMD 拼過去,
: : 那一定還有更大條的才是.
: 很抱歉,開始看不懂你在講什麼了.
: 有哪個compiler會做程式執行時間的估算嗎? 好厲害喔...
: 意思是如果我寫這樣的程式:
: void f() { f(); }
: int main() { f(); return 0; }
: 此程式compiled之後, compiler會告訴我
: "The program takes infinite time to execute." 你的意思是這樣子嗎?
: 學過一些compiler設計的書,沒在講程式執行時間評估.
===================================================================
那您先得看底下這一段: 這是 avi 先進提供的.
前面已有人質疑是 Halting Problem 能解嗎 ? 但應該不是這樣的對象與用途.
多核心 如同 多處理機, 碰上互斥的 critical section (region) 要等待時,
如何個等法是個問題. critical section 是一種假設在 finite time 必得執
行完的程式片段及相關資料(或資源), 能預估已進入 critcal section 執行
的 CPU 何時將釋出是有好處的.
compiler 在 code generation 階段估算 這種 critical section 片段程式
的 某類cpu cycle 數是沒有問題的.
譬如平行分區計算, 需得在交界處等候接手, 這種 pipeline 接續的算法在
finite element 法做計算時就用得上, 能估算就能解很多問題, 不必靠 os
提供派工與提供同步機制.
============================================================================
作者 avi.bbs@bala.mis.ccu.edu.tw (keep healthy body), 看板 programming
標題 Re: [請益] 那些語言或程式用上 多核心 CPU
※ 引述《ggg12345.bbs@ptt.cc (ggg)》之銘言:
> Notebook 都改用雙核心 cpu , 那些程式或應用是已經用上這項技術的 ?
> 要發揮多核心的作用, 使用那種程式語言會比較適當 ?
其實支援雙核心第一應該是程式語言所跑的平台
也就是說假設你的OS根本就不支援雙核心
你用什麼程式語言應該都一樣
當OS有支援的狀況下
再來使用某程式語言開發的時候,或多或少到run time的時候
OS應該會決定是否要使用到雙核心的技術
我是覺得這一段應該是OS會做掉
也就是說哪種程式語言可能都一樣
或許有某個程式語言有所謂的支援雙核心
但我想,那大概也只是讓你在開發的過程當中選擇是否要應用到雙核心技術
記得看過一篇文章是說當時INTEL為了開發雙核心的技術
光compiler就搞了好幾年,因為當換算到machine time的時候要決定哪段code
要讓哪個CPU跑,還要解決同步不同步問題
也因為這樣讓AMD的64位元搶得了進入市場的先機
anyway,我好像還是沒講到重點.....
※ 編輯: ggg12345 來自: 140.115.6.234 (05/19 22:18)
→
05/20 08:18, , 1F
05/20 08:18, 1F
討論串 (同標題文章)
完整討論串 (本文為第 16 之 30 篇):