并行计算的前世今生

忘了那该死的并行(前世篇)

  Linus Torvalds(传奇式人物,写出Linux的原型,并一直致力于推广和发展Linnx系统)在一次发言中说道:

需要多么奇葩的思想力才能想象出并行的用武之地?

并行计算只有在图像处理和服务端编程2个领域才能使用,并且在这两个领域确实有着大量的用武之地。但在其他任何地方,并行计算毫无建树。

   看完之后可能你会有所感受。与串行程序相比,并行程序的设计与实现异常复杂,不仅在功能分离上,多线程的协调性、乱序性都会成为执行的障碍。只要你稍不留神,就会差之千里!是简单问题复杂化的典例。

   但Linus也提出在图像和服务端是可以的,需要并行的技术。But that's why?

   与客户端程序不同。处理一张1024*768的像素图片,多达76万6千个像素。遍历一遍得花不少时间,跟何况还牵扯矩阵运算。对于如此大的计算就是在考验CPU的性能,为此引入了多核计算。

   再与服务端比较。服务端需要承受很大的用户访问压力,双十一一天,支付宝核心数据库集群就处理了几十亿个事务,执行几百亿SQL,生成15TB的日志,访问了1931亿次内存数据块,13亿的物理读。任何一台单机都是无法完成的,并行程序是你唯一解决方式。毕竟我们的世界就是并行的,每个人扮演着不同角色,该时间段你只有在扮演好每个特定角色,才能是你这个人更出色,更有效率,这就如同每个角色就是一个线程,每个线程各司其职,才能发挥最大性能。

   同样的如java虚拟机的main函数,JIT编译还是垃圾回收,虚拟机都为此实现单独的线程。

   综上述并行程序解决大量计算,可维护性,以及自身内存一种不错的编码方式。

山穷水复疑无路 柳暗花明有一村(今生篇)

  现阶段自然法则和物理定律制约了目前CPU性能的提升,遇到了暂时不可逾越的瓶颈。虽然CPU的性能几近止步,摩尔定律轰然倒地。但天无绝人之路,正可谓:

山穷水复疑无路 柳暗花明有一村

  科学家与工程师不在追求单核的计算速度,而是着迷于如何将多个独立的计算单元整合在一个单独的CPU上,这就是现在经常说的多核CPU。不久摩尔定律侧面生效,每隔不到两年CPU的核心数就会翻一番。

  根据我男神唐纳德.尔文.克努斯的观点,摩尔定律应该由硬件人员维持但是,他们已无计可施。为了让性能继续高速发展,他们脑洞大开的将多个CPU内核塞进一个CPU中。由此,并行程序也由应而生。此时迎来了程序猿的黑暗时代。简化硬件设计必等于软件设计的复杂性。

  让多个CUP有效并正确地工作也就成为了一门艺术。如,多线程如何保证多线程间线程安全,如何理解线程间的无序性,可见性,题高并行程序的效率,串行改造为并行程序。

  对于并行的研究一直没有停歇,这是希望我们能在希望中带来光明。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值