随着多核处理器在PC机上的普及,PC机上的计算方式也要 “改朝换代”了,串行计算将步入历史,而并行计算时代则逐渐走向主流。并行计算对我们的应用有什么变化呢?实现并行计算的最大障碍是什么呢?
并行时代到来
在单核处理器时代的初期,程序是以独占CPU的方式串行执行。随后,操作系统由DOS 到Windows 的变革,单核处理器在PC机上程序的执行有了里程碑式的进步,操作系统的并发调度和CPU的分时执行让程序执行由串行方式变为并发方式(concurrent),CPU的利用率得到了有效的提升。
为了让大家更容易理解串行和并行的概念,这里举个形象的例子。如果有一座跨河的桥,它只有一个车道,由于承重的问题一次只允许一辆车通行,这样任何需要过河的车辆都要排队等候一辆一辆逐个通过。如果我们多建几座桥梁或者建的新桥有多个车道同时有更大的承重能力,这样多辆汽车就可以并行通过桥梁,通行效率就大为提高了。现在清楚了串行和并行效率上的差别了吧!
多核处理器则进一步让并发执行的多个程序以更高效的并行方式执行(parallel),也可以让一个程序中多个并发执行的线程以并行的方式执行。程序的执行效率有了本质的提升。如果配合虚拟化技术的实现,在不久的将来多个操作系统同时在一台PC机上并行运行也会变得”稀松平常”,毫不稀奇,就像我们今天在Windows 里面可以自由在多个正在运行的程序之间来回切换一样,我们可以在多个操作系统之间自由切换。
越来越多用户的PC系统都具备了双核,甚至四核的处理器,随着处理器核数的增加,程序的并行执行度可以更高,但是目前不少用户觉得多核没有带来很明显的性能提升,这是为什么呢?这是因为现在针对多核开发和优化的应用程序还比较少。其中的主要原因之一就是开发并行执行程序的难度非常大,程序员面临的巨大挑战就是如何把需要执行的任务并行化。
然而,编写并行度超过4路以上的高效率程序,没有经过系统的专业学习和长期并行编程的实践经验,编写的程序就很难充分利用多核处理器带来的并行计算优势。即使是并行编程经验丰富的程序员在编写并行度较高的程序时的效率,相比他/她编写并行度低的程序时的效率要低得多。
多核处理器在PC机上的普及和推广,英特尔无疑是领头人。如果只是硬件就绪,而可以充分利用多核优势的应用程序寥寥可数,那么PC机并行计算时代的到来只是一句空话。
如何加快并行程序设计的速度同时确保程序并行度达到高效率呢?主要方法就是:1. 把程序员编程时需要调用的标准函数库进行重新的并行设计和优化,例如,标准的数学函数库,多媒体函数库等等。 2. 并行优化的编译器,调试工具,优化工具等等。
英特尔高效程序开发工具
在这些方面,英特尔一直在不懈的努力,而且成果在业界也是有目共睹。为了让软件开发人员可以最高效率的设计程序和对程序进行优化,英特尔之前开发了高性能程序设计的套件:
Intel® Compilers —— 英特尔® 编译器,如:Intel C++ 和 Fortran 编译器 11.0
英特尔® 集成性能原件 6.0 (Intel® Integrated Performance Primitives 6.0)
英特尔® 线程构建模块 2.1 (Intel® Threading Building Blocks 2.1)
Intel® Libraries —— 英特尔® 函数库
英特尔® 数学内核函数库10.1 (Intel Math Kernel Library 10.1)
Intel® MPI Library 3.2,性能库
Intel® VTune™ Performance Analyzer ——英特尔® VTune™ 性能分析器
Intel® Thread Profiler For Windows (用于Windows 环境的 英特尔® 线程剖析器)
Intel® Cluster Tools —— 英特尔® 集群工具
英特尔® 跟踪分析器和跟踪采集器7.2带有 MPI正确性检查器(Intel® Trace Analyzer and Collector 7.2 with MPI correctness checker)
英特尔® MPI 性能指标评测 3.2 (Intel® MPI Benchmarks 3.2) 它们用于Windows 平台和Linux平台的软件开发。
Intel® Parallel Studio —— 英特尔® 并行程序开发套件
为了提高并行程序设计的效率,英特尔公司最近还推出了令人激动的并行程序开发套件——Intel® Parallel Studio,它是用于Windows 用户端的并行程序开发包。这套件有三个主要部分组成:
Intel® Parallel Composer(英特尔® 并行设计程序): 用于并行程序编码 & 调试,利用C/C++编译器和全面的线程库开发高效的并行应用程序。
Intel® Parallel Inspector(英特尔® 并行检验程序):检测并行存储与线程错误,以确保应用程序的可靠性。通过快速的代码解析,更快地发现和定位线程错误。
Intel® Parallel Amplifier(英特尔® 并行调优程序):采用直观的性能分析工具和优化工具,快速找到并行执行的瓶颈,对程序的并行性进行优化。
上述工具可以让多线程并行编程更加高效简便,使程序在多核系统上得到了性能的飞跃,达到高能效的最终结果。
为了让中国的编程高手和爱好者熟悉并行编程和这些并行编程工具的使用,由清华大学和863高性能计算机评测中心共同主办, 英特尔中国协办的 2009 “英特尔杯” 全国计算机多核程序设计大赛已经开赛了。主要面向在校学生、软件工程师、以及广大的计算机爱好者。此次竞赛的主要目的,是推动国内的学生和软件工程师使用英特尔公司最新的 Parallel Studio 软件开发套件来简化多线程编程,提升在多核平台上并行程序设计与优化的能力。