既然GPU适合并行运算CPU适合串行远算,那多核CPU存在的意义是啥为啥不专注于提高主频

恩,你说的是对的。所以现在才有所谓的“异构计算”的大热。目前看来也是未来的发展趋势。那么,为什么会有多核呢?因为,程序员大爷们是很难伺候的,要考虑到编程的便捷性。先回答这么多,实验室要关门了,改天来补充。分割线——————————————————————————————首先说明两点:1、我说的实验室要关门,是实验室到了晚上12点要锁门,不然就出不去了。去年遇到出不去的情况都是到一楼大门旁边的那个实验室敲门,然后从他们的实验室翻窗出去。今年不知道是不是喜欢通宵熬夜的那几个学生毕业了,那个实验室现在晚上没人。叫守门的师傅起来开门吧,人家老大不乐意还得骂人。有时候故意装睡着不给开。所以现在到点就得赶快走人,不然那就只有睡实验室了。自从今年出现过这状况以后我就买了睡袋,以后一不小心被锁了就有睡袋了。不过,前几天同学们流片,我把睡袋借给他们了……到现在还没还给我。在这里特别澄清一下,将来宣传出来问题,说我们实验室关门的要负责!2、有朋友关系我“正式退出通信领域”是什么意思,其实我不做通信好多好多年,现在是完成了一系列官方的手续。不必过度解读。差不多多解释完了,开始补充答题:分割线——————————————————————@某火山解释得很不错,其实CPU和GPU相比是一个更“全能”的选手。所以,很多时候如果只用CPU是可能的,但是只用GPU却是不能的。所以为什么是要“异构”呢,因为CPU确实能效较低,但是只用GPU很多事情又搞不定。但是,能效低是低一点,但是却可以用。从单核到多核的“演进”是一种相对平滑的过渡。对于程序员大爷而言熟悉起来相对简单。怎么个简单法呢?有一种并行编程的方法叫OpenMP,通过一些编译命令就可以实现并行化。当然,OpenMP也是有其局限的,但和后面的那些开发方法比还是简单多了。再到后来发展起来的几种并行模式,什么数据并行、任务并行,无一不是建立在CPU是“全能型选手”这一基础之上的。还有一些什么多程序(Multi-Programming)、多用户的场景,运行某个独立的程序或者服务一个独立的用户也是需要全能的,所以直接堆核心也是最简单粗暴有效的方法。回过头来看看异构计算。异构计算那可就难了。专业的人做专业的事,是很美好的愿望。但是,GPU和CPU是不知道应该做什么事情的,最后还是得靠程序员大爷们去分配任务,去编程开发。而要合理的分配任务并不容易,要从一段代码中分析出可并行的成分再合理的安排到GPU里面去,这难度不是一点半点。按之前AMD中国区楚总监的说法,有这能力的人被叫做“算法优化工程师”,现在AMD中国区好一点的“算法优化工程师”基本都快被BAT挖光了。可见人才之难得。今天还是很忙,做事老是被打断,想到哪里说到哪里。后面空了再更。
■网友
疯狂的提高主频,只会使发热量剧增。看E5 2699 V4 ,主频数只有2.2,但是架构非常先进,核心数的提升也使得程序能以最快速度运行。使得CPU整体运算速度不知比前几代高到哪里去了。其实我也不是很清楚题主具体要问什么,只好解释一下为什么不单纯的纯粹的莽撞的只提高主频。串行运算跟主频没有太大联系。
■网友
首先直接回答CPU为什么不专注高频率,答案是发热量增长得比主频快,发热太大晶体管会损毁,这是硅材料自身的限制。很多年前还是单核时代,CPU主频一年提升1GHz,程序员都在享用免费的午餐。intel当年就吹牛下一年进入4GHz时代,后来遇到"发热墙"没能实现,intel老板(学材料科学的博士)在电视节目里开玩笑下跪道歉。君不见i7 4790k的主频已经达到4~4.4GHz了。现在由于制程的进步才使得风冷能够压住4GHz的发热,而为了绕开"发热墙"提示运算速度,一方面加入了新的指令集,另一方面CPU做成了多核心以塞入更多的晶体管。在材料工艺革新之前,多核心+中低频猛堆晶体管就是主流,这也是一种折中。只不过GPU核心更多(上千),主频更低(小于2GHz),CPU核心更少(几到几十),主频更高(大于2GHz)


推荐阅读