我们编写程序时是否要刻意为双核或者多核CPU进行优化

还是说我们仍然像往常一样编写这种工作交给操作系统?操作系统从来不会让你的程序神奇地变成并发。大概只有OpenMP能够用很少的额外工作把程序变成并发,但那也是编译时做的,而且和操作系统关系不大,而且比较局限。通常的做法是:分析程序有哪些同时执行的业务,按照业务本身划分工作线程,使用线程间设施进行同步。
■网友
谢邀使用好的编程语言的话,用户就不需要。代码执行机制会自动完成并行化
■网友
要
■网友
看软件对性能的需求。追求计算性能的程序显然要做多线程的优化。当然多线程的程序在单核CPU上也是可以跑的。
■网友
我就说说MATLAB的情况,因为实验都在用matlab,不过题主估计不关心。Matlab 并行计算工具箱及MDCE介绍这里写的就蛮清楚的,但是一般的硬件执行细节是应该对coding的程序员透明的,对开发语言的程序员来说是不透明的。
■网友
人的智慧,一般高于程序。有意对多核优化的程序,效果一定好于无意识的程序。
■网友
编译代码的时候,自动给你搞定了
■网友
答案取决于程序本身是否有并发。单进程线程的,比如纯运算程序,不优化那程序就在单一个核上跑,就算放到多核上跑或者用多核多线程优化处理,表现也几乎跟单核一样。说是几乎是因为在极端情况下,程序运行前的总计算负载非常高,多核操作系统会自动将程序分配到另一个空闲核上运行,这时多核下表现出来会更快,但这其实是因为系统中其他计算负载拖累的缘故;有并发的,操作系统调度器会为各个进程、线程分配核,一般不需要人工优化就有速度提升。一般的“程序挪到多核上就会“自动”变快”的印象,那是因为一般的应用级程序如桌面程序都是是多线程或进程,只有极少数专业程序是串行计算密集型。因此,准确的答案是加上一个前提:在轻载系统中,无需多核优化;在重载系统中,如果程序本身可并行化,则多核优化有效,否则可能反而更慢。


    推荐阅读