从另一个角度来看,比如异构系统中,通过编译器处理过的配合OS的并行调度可移植性会好过过分依赖CPU的"硬件并行"
回复 #21 system888net 的帖子
当然不排除未来发展的一些变化,技术这东西就是有个特点: "不能下结论某个东西一定不行!"回复 #21 system888net 的帖子
更理想的情况是,粗粒度(任务级)并行交给 OS , 细粒度(ILP)还是编译器干, CPU 就在哪儿听话的跑指令。其实,硬件不支持不重要,关键是你的接口设计要清晰,硬件不支持的功能可以用软件模拟(不同的人有不同的方案),那个该死的 libgcc 就模拟 N 多功能,比如浮点操作。 原帖由 prolj 于 2009-3-13 20:43 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
更理想的情况是,粗粒度(任务级)并行交给 OS , 细粒度(ILP)还是编译器干, CPU 就在哪儿听话的跑指令。
其实,硬件不支持不重要,关键是你的接口设计要清晰,硬件不支持的功能可以用软件模拟(不同的人有 ...
有道理. 原帖由 prolj 于 2009-3-13 20:07 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
我的想法之一就是解决这个问题,当然,没做出来之前咱不吹牛。
...
有想法是好事情,正所谓 "心都不想,何以成事".
关注中! 志存高远啊,呵呵。不知道你想如何解决?Intel好像对IA64提供了一个二进制文件的“编译器”,对原来的二进制指令重新调整以在IA64上运行。
从CPU本身的角度来说,有些在VLIW的基础上扩展了一些想法,可以参考一下这篇Wiki:
http://en.wikipedia.org/wiki/Explicitly_Parallel_Instruction_Computing 原帖由 Cyberman.Wu 于 2009-3-13 20:54 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
Intel好像对IA64提供了一个二进制文件的“编译器”,对原来的二进制指令重新调整以在IA64上运行。
从CPU本身的角度来说,有些在VLIW的基础上扩展了一些想法,可以参考一 ...
有见解. 想得多没用,一千行文字抵不过一张照片。
其实很多还不懂,看见水木那几个人心里就火大,啥时候跟人家那样啊,无论是理论还是实践,都有差距。
说白了吧,模拟硬件功能我推崇 JIT , Apple 的 OpenGL 已经做了,看着别人一个个实现新功能,不如自己把脚下的路走平。 并行的道理很简单,但把他落到实处,或者说把并行发挥到什么程度,考虑的问题和方面就比较多了.
回复 #29 system888net 的帖子
如:常规的:
class A {
private:
int count;
public:
A();
~A();
int get_count();
........................
};
A *p=new A; //由同一个程序执行段(或同一时刻只能有一个CPU)来执行这100个A()
并行的:
//代码没有变,但可以变成并行了,这是编译器的相对优势.
class A {
private:
int count;
public:
A();
~A();
int get_count();
........................
};
A *p=new A; //可有多个CPU同时来执行这100个A()