作者ggg12345 (ggg)
看板Programming
标题Re: [请益] 那些语言或程式用上 多核心 CPU
时间Sat May 19 20:57:34 2007
※ 引述《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
提供派工与提供同步机制.
============================================================================
作者
[email protected] (keep healthy body), 看板 programming
标题 Re: [请益] 那些语言或程式用上 多核心 CPU
※ 引述《[email protected] (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)
1F:→ ray2501:因为他讲错了 @@ 61.217.128.124 05/20 08:18