多核并行计算时代的来临
a worldwide shortage of people experienced in parallel computing
全世界程序员最大短处就是缺乏并行计算经验
当CPU进入双核多核,软件架构进入分布式计算 云计算时代后,他们的共同点并行计算已经成为一个新的热点。
前段时间Ruby On Rails JRuby Grails等新式语言有些热门,但是并行计算却是它们的杀手,新的并行计算DSL(Domain-specific language)语言 Scala Clojure 以及Erlang在这几个月已经成为新的明星。
Scala是一个兼容JVM的并行语言,后台有IBM等大公司支持,而Erlang是最早由爱立信推出的一个开源语言,目前尴尬是缺乏象IBM这样软件巨头支持。2009将有各种有关Clojure语言的介绍。
在这样的背景下,有人就提出:Java是否已经发展到顶了,可能走下坡路了呢?(Dead like COBOL )
最近Yahoo网格云计算小组发布一项惊人性能测试结果:
Java开源Apache Hadoop赢得了TB级别的最快基准测试,Hadoop可以在209秒内完成1 TB数据排序,打破了前期297秒的年度记录(Daytona),成为最快纪录冠军,这是一项1998由Jim Gray创建的基准测试,指定输入数据( 100亿个100字节的记录) ,彻底地排序,并写入磁盘。
Java取得这项测试的胜利,并不是因为Java语言走上了并行语言,而是Java从诞生那天起,就是为网络而生,它是通过多台服务器并行计算取得了这项骄人的成绩,还是那句话:Java在个体上可能拼不过你,但是集成群了就能战胜你,就象蚂蚁个体虽小,但是大量成批蚂蚁也是任何生物的杀手。
Java语言因为其高瞻远瞩的前瞻性取得了生命延续,但是这并意味着其停滞不前,如今单台服务器进入CPU时代,如何在单台PC的微结构中象Scala那样提高多核并发计算性能,将是Java 7推出的新特点。
但是,这并不像以前推出的一些新功能特点,并行计算需要程序员思维方式的改变。其实,从jdon.com讨论来看:程序员相当缺乏并行开发思维,从以往不习惯线程并发 到面对EJB这样分布式组件开发的抓狂,都说明一些人的思维升级换代已经跟不上CPU了(最后机器人会战胜一部分人 悲哀)。
Java线程模型提供了开发者很方便的并发开发,并发展到javaEE的Web,使用Jsp/Serlvet封装多线程,避免一般软件开发者涉及过于复杂的线程编程,当我们开发一个Web应用时,部署到Tomcat/Jetty/JBoss服务器上,如果某个时刻有多个用户同时对这个Web应用发出请求,那么服务器将分派多个线程分别接受处理这些并发请求。这实际上已经是一个多用户并发系统,但是CPU处理并发请求任务时,由于是一个CPU,因此实际上内核是顺序执行的,现在两个CPU多核机器已经开始普遍,如何发挥多核CPU的并行计算模式呢?
这就要对以往计算模式进行颠覆性的修改,并行计算(parallel computation)这个概念的意思应该这样定义:在单台PC机中可以跨多核CPU运行,部署到多台PC机中,能够跨越多台服务器云计算。这样的伸缩性非常类似无所不能的孙悟空了,这样的并行计算模式才是真正可伸缩的Scalable!
而目前唯有Java最有希望做到这点,Java只要补上微结构多核并行运行这一课,而Scala Clojure 以及Erlang要补集群 云计算这一课,这也是Scala非常靠近Java一个原因。
伟大并行计算专家Doug Lea的 Java fork/join framework为java这趟补课提供了及时雨,下面这段代码展示java并行计算方式:
import jsr166y.forkjoin.*;class Fib extends RecursiveTask<Integer> { static final int threshold = 10; volatile int number;Fib(int n) { number = n; } public Integer compute () { int n = number; if (n <= threshold) return sequentialFib(n); else {Fib f1 = new Fib(n - 1);f1.fork();Fib f2 = new Fib(n - 2); return f2.forkJoin() + f1.join();}} public static void main(String[] args) { try { int groupSize = 2; // number of CPUsForkJoinPool group = new ForkJoinPool(groupSize);Fib f = new Fib(40);Integer result =group.invoke(f);System.out.println(“Fibonacci Number: “ + result);} catch (Exception ex) {}} int sequentialFib(int n) { if (n <= 1) return n; else return sequentialFib(n-1) + sequentialFib(n-2);}}
fork/join framework将被整合进入JDK 7版本。
当然,新的语言有更方便简洁的实现,Scala 或 Clojure也许成为替代ROR/Groovy的明日之星,
或者这两个语言有各自的细分市场。在未来某个时刻,也许应该死亡的是PHP/ROR。
多核时代开启了软件编程新时代,我们面临更多挑战和创新,好的工具和平台可以帮助我们更好地进入新时代。
原贴网址: http://www.jdon.com/jivejdon/thread/34917.html
分享到:
相关推荐
- **1996-2002年**:引入了超标量流水线技术和EPIC架构(如Itanium安腾处理器),支持更高效的并行计算。 - **2002-2005年**:超线程技术(如Intel Hyper-Threading)的出现,预示着多核时代的来临。 - **2005年至今...
对于软件开发者而言,多核时代的来临意味着需要适应新的编程模式。传统的单线程程序需要转变为能够充分利用多核优势的并行程序。这涉及到程序执行模型的选择,它是编译器设计人员与系统实现人员之间的接口。正确的...
Hadoop 分布式并行编程框架知识点 Hadoop 是一个开源的分布式并行编程框架,由于分布式存储对于分布式编程来说是必不可少的,这个框架中...* 多核时代:Hadoop 需要适应多核时代的来临,使用多核 CPU 来提高计算性能。
在当代计算机科学领域,随着多核处理器的发展,多核架构的模拟成为了一个重要的研究方向。...随着处理器核心数量的继续增加,ALWP这样的工作负载划分方法,将对未来的并行计算技术发展起到关键性的推动作用。
随着多核时代的来临,拥有成百上千个核心的处理器已成为现实,千核处理器已不再是遥不可及的设想,而是即将普及的现实。在这样的背景下,模拟这样的并行系统成为了一个需要重视的问题。目前大多数可用的模拟器是顺序...
在多核时代,处理器的设计转向了并发处理,如PentiumⅡ和PentiumⅢ,它们能够同时处理多个计算任务,显著提高了处理器的并行处理能力,从而增强了整体计算性能。这种多核技术一直发展到现代的高端处理器,如Intel的...
随着多核处理器时代的来临,本书对于新版本中介绍的多线程多核处理器所采用的最新微架构技术进行了清晰的解释和深入的洞察。书中讨论了芯片多处理器(CMP)的出现,并强调了其在当代计算机体系结构中的重要性。随着...
- CPU的内核数量决定了它能并行处理的任务数量,多核CPU可以同时处理多个任务,提高效率。 - 缓存是CPU内部的快速存储,用于暂时存储常用数据,提高数据访问速度。 【输入/输出设备与接口】 计算机系统还包括各种...
1993年,英特尔推出了Pentium(奔腾)系列,开启了多媒体计算时代。多核CPU在这一时期开始出现,如AMD的Athlon MP,提升了并发处理能力。 ### 7. 第七代CPU:超线程与64位计算(2000-2010) 2000年后,英特尔引入...
2004年,Intel宣布转向多核研发,预示着多处理机时代的来临。IBM、SUN、AMD等业界巨头也纷纷跟进,推动了并行计算和多处理机技术的发展。这一转变主要是为了充分利用微处理器的高性能价格比,以适应不断增长的计算...
- **多核时代的来临**:随着技术的发展,单个芯片内部的时钟周期可触及部分越来越少,多核处理器成为了不可避免的趋势。这不仅影响着计算机硬件的设计,也对软件开发提出了新的挑战。 - **行业的困境**:对于传统...
1978年,英特尔推出了8086,标志着16位微处理器时代的来临。8086拥有16位寄存器和16位数据总线,其精简版8088则采用了8位数据总线,是IBM PC兼容机的基础。随着IBM PC的流行,x86架构成为个人计算机的标准,英特尔和...
在并行和分布式计算方面,MATLAB提供了本地多核并行计算能力和集群上的分布式计算能力。通过MATLAB的分布式计算工具箱(PCT),可以利用计算机集群进行大规模数据处理。此外,MATLAB可与Hadoop和Spark这样的大数据处理...
四是提升系统的可扩展性和并行性,以充分利用多核和分布式计算资源。 总的来说,动态图模式匹配技术是应对大数据时代下图数据处理的关键技术之一,它在理论研究和实际应用中都有着广阔的应用前景。随着技术的不断...