我的天哪!!!!!
押宝多核失败了!!
这是吹捧7350k么?手动滑稽
稍微严肃一点
多核非常成功,在高性能计算领域没有单核啥事了,连定制计算都讲并行化,你想想显卡多少核
桌面也非常成功,zen这次非常好,希望干掉牙膏厂骗钱的双核系列
如果你感受不到多核的好处,请多开几个复杂网页
至于某些老游戏,呵呵
不评价策略问题,仅说说线程并行的难点:
1、并非所有问题都能并行化
串行(单线程)计算在时间上和逻辑上是线性的,第二步计算一定在第一步之后,这和我们的物理法则是吻合的。而并行计算(多线程)在时间和逻辑上不是线性的,可能要求第二步与第一步同时进行。可问题是很多时候第二步计算需要第一步的结果,例如计算这么一个数组:
a(i+1)=a(i)+1
不考虑用解析法求出通项公式的情形,那么求a(1)必然要知道a(0)。这种情况下想要同时计算,只能先用线程0算出a(0),然后用时间机器将a(0)的值返回到计算前,再用线程1同时计算a(1)。
我要是有时间机器,还要啥并行啊,一次性算完返回结果不是更好么。
2、n线程并行的计算速度低于单线程的n倍
计算1+2+3+4+5+6,串行和并行处理的过程一般如下图:
串行算法总共需要5次加法,假设每次加法耗时1s,那么串行算法需要5s完成。
并行同样需要2x2+1=5次加法,由于前面四次加法分发给两个线程,最后一次加法只能由单个线程完成,所以并行算法需要2+1=3s完成。
你看,2线程的效果并不简单的等于单线程的2倍。更重要的是,上述并行算法的最后一步还需要对两个线程之间的数据进行通信,而线程间通信通常是很慢的,一不小心就会变成计算耗时3s通信耗时30s,导致实际上并行的效率并不高。
3、并行化开发成本高于串行,性价比不一定划算
从上面的例子就能看出来了,并行编程的幺蛾子太多,一个不小心反而比串行更慢,所以对计算速度要求不高的软件(把0.01s的响应时间变成0.001秒也没什么ruan用),以及付不起程序员工资的公司,都不会采用并行化编程。
并行编程使用最广泛的还是科学计算领域。一个用单线程1天才能跑完的任务,用2颗e5 24核暴力计算1小时多就搞定了,能大大的减少刷知乎的时间。