多核平台的并行开发

celineshi 2006-08-01 11:04:35
在多核的设计概念出现后,迫使软件开发朝并行化方向发展。目前,在RISC架构的多核系统上已经形成了比较成熟的多线程系统并行处理能力。但是在x86架构下,应用程序的开发者还停留在单线程的开发模式下。

计算机的核心任务就是执行各种应用的计算,双核作为一种突破主频限制、在功耗不变的情况下,实现性能提高的技术,简单理解,就是将两个计算内核集成在一个处理器之中,而多核的出现成为解决计算效率和应用对资源调配的关键。

双核技术的最大特点就在于“高能低耗”。英特尔软件及开发部的营销及设计总监仁达敬做了一个很形象的比喻,由于制造工艺的原因,CPU在未来的发展仍然需要提高主频,降低面积。双核的出现,可以在同样规格的工艺下,突破CPU的主频限制,实现更高性能的运算。

程序开发的并行模式

双核甚至多核处理器需要多线程化的软件应用,但是大多数大规模客户端应用,还是用C或C++编写的,从程序开发之初,就是根据单线程设计,这使得应用的多线程优化是一个需要耗费大量劳动力的改写过程,也是一个重头再来的过程。

在多核的设计概念出现后,迫使软件开发朝并行化(将单个任务拆分成多个小块以便分别处理之后再重新组合的能力)方向发展。目前,在RISC架构的多核系统上已经形成了比较成熟的多线程系统并行处理能力。但是在x86架构下,应用程序的开发者还停留在单线程的开发模式下。

虽然多核能够带来诸多的好处,但在程序员眼中,并行编程中将会面临三大挑战:程序是否具备扩展性、程序能否更精确、产品是否易于编程和维护。

其实,为应用程序做并行化处理,并不是一件十分困难的事情。并行开发模式需要打破串行的编程过程“一步一步”的模式,首先要进行分析和拆解,然后才能进行程序的编写。

程序开发人员应当在程序设计中做好规划,目前为双核开发,将来向四核、八核、十六核等更多核芯规模发展的时候,才不会遇到瓶颈。英特尔软件产品部业务发展经理林巍对于多核的应用开发问题表示,目前双核占据主流,不应当只作好基于双核的编程,要做到能适应不同的模式和架构。

在底层进行并行分析

针对多核的开发过程与传统的开发模式有所不同,英特尔推出了VTune(可视化性能分析器),可以通过图形用户界面轻松优化应用性能,而且支持在Windows和Linux系统环境下的分析。AMD等厂商也在应用这套平台对多核系统进行调试,期望获得更为理想的应用性能。

在中石化胜利油田黑油模拟项目中,需要探测地下石油的准确位置的计算中心。中石化所遇到的难题是海量数据在数据计算慢,以前做一次计算需要花费几个月时间。现在他们已经把程序从Unix架构下的大型主机放到Lunix架构下的并行主机进行运算,并在274个安腾处理器上做了服务器集群。

中石化通过Vtune和Trace Collector & Trace Analyzer帮助识别出了并行代码中的瓶颈和错误,并对核心函数进行编辑,Compiler和Math Kernel Library帮助应用的性能提升了30%的效果。原来需要10多天的工作任务,现在可能在一周之内完成。虽然仅节省了30%的效率,但是对项目来说,意义是巨大的。

红旗Linux在开发阶段,采用了英特尔的C++ Compilers软件编辑器,用来提高系统稳定性,通过专门的测试工具对用英特尔C++版编辑器编辑的程序进行了测试,结果是MySQL性能提高了近25%。

规避并行开发风险

串行的编程方式会产生错误,多线程程序也不例外,同时还会导致任务定位不准确的问题。仁达敬对此解释,这些问题我们也都曾经遇到过,后来对多线程的开发平台进行了全面的优化和处理。用户在开发的过程中,除了需要使用VTune分析器以外,还需要分析各个线程之间的运行情况,各个线程的负载是否均衡以及需要继续优化的位置。

由于在多线程的程序中,很多错误是不容易发现的,所以针对多线程中所出现的程序错误,可以通过专门的多线程处理工具进行准确定位。它不仅可以准确定位出源代码中错误的位置,也可以帮助开发者节省资源,并且实时检查线程的工作状况和效率状况。

如果有线程没有运行,呈等待状,会发出红色信号,提醒开发者对源代码进行调整,以便做到真正的并行化。

VTune可以支持4000个以上CPU的操作,可以适用于大规模的高性能集群运算环境。在Open MP编辑器中,可以帮助正在运行的程序进行优化。大规模的集群环境下,还可以进行库函数分析。
...全文
406 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccwls 2006-08-03
  • 打赏
  • 举报
回复
支持一个
ztony007 2006-08-03
  • 打赏
  • 举报
回复
学习
李世东 2006-08-03
  • 打赏
  • 举报
回复
不错,支持
sncp_pluto 2006-08-03
  • 打赏
  • 举报
回复
不错,支持
光电经纬仪是最早、最广泛应用于飞行器测控领域的光电跟踪测量设备,它 的组成部分包括大地测量光学经纬仪、激光跟踪测量系统、微机控制系统与图像 处理系统组成。光电经纬仪通过记录飞行过程中的目标图像,并测量传动机架的 角度,从而获得目标飞行参数,它在飞行实况记录中发挥重要的作用 [1] 。此外, 它还可以实现迅速定位目标位置和自动跟踪高速目标,已被广泛地应用于诸如航 天发射、飞行器测控等光电测量领域 [1] 。 随着数字图像处理等技术的发展,光电经纬仪由胶片式成像向数字式成像转 变。此外,高帧速率、高分辨率成像传感器技术已被广泛应用于光电经纬仪。这 些给光电经纬仪实时图像处理平台的发展带来新的挑战:复杂图像处理算法的实 现和数据吞吐量的巨大需求 [1-2] 。 DSP 作为一种密集型数据运算与实时信号处理的微处理器,能够很好的满足 复杂图像处理算法、实时性处理的需求。DSP 技术经过多年的发展,被广泛应用 在信号、图像、通信等技术领域,尤其是高性能计算、高速实时图像处理、超大 数据量处理的军用电子领域 [2] 。现今的图像处理平台由于芯片单片运算能力受到 限制,绝大部分使用了多个 DSP + FPGA 的架构,才能勉强实现实时图像处理任 务 [3] 。但是这样的平台带来的困难是显而易见的: 1. 系统结构复杂。采用多片 DSP+FPGA 的架构,系统的整体处理性能受片 间(DSP 与 FPGA 之间、DSP 与 DSP 之间)通信带宽瓶颈而下降。 2. 系统功耗大。多片 DSP 在单块电路板上的集成度越高,带来了单板整体 功耗的增加和散热的问题,导致单板多片 DSP 整体处理性能的可靠性和稳定性。 3. 系统调试困难。由于系统结构的复杂,导致系统的调试异常的困难。芯 片之间的任务分配、数据传输、并行处理非常复杂,使得产品在设计、调试、生 产阶段的难度加大。 本文研究的课题来源于光电经纬仪图像处理平台由多片 DSP 架构升级到多 核 DSP 架构而提出的系统应用需求。结合实验室的项目情况,本文将重点放在 多核 DSP 并行的以下相关技术: 1. DSP+FPGA 架构下图像数据流的设计。光电经纬仪的图像处理系统需要 兼容前端的多种图像输入格式,包括 CameraLink、SDI 以及光纤接口,DSP+FPGA载板搭配不同的子板就可以实现输入的灵活性;此外,DSP+FPGA 图像处理系 统中的高速 SRIO 接口用于图像数据通信。本文在 CameraLink 和 SRIO 这两个关 键接口做了一定的研究工作。 2. 多核环境下并行访问共享/外部存储器的性能研究和设计原则分析。多核 DSP 中存在多个主设备,包括多个 DSP 内核、多个 EDMA 设备等,它们并行访 问存储器的数据带宽,对于应用程序存储资源的安排、软件结构的设计是至关重 要的。 3. 多核 DSP 并行调度方案的研究。多核 DSP 图像处理平台,一方面要实 现复杂的图像处理算法,另一方面要满足超大运算量对实时性处理的需求。基于 多核的系统应用开发关键的一步,就是选择合适的处理模型实现任务并行调度。 本文将介绍多核 DSP 并行调度的几种方案,并以算法实例对主从模型进行分析。

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧