新闻中心

EEPW首页 > 消费电子 > 设计应用 > 为计算密集型应用选择最佳多核架构

为计算密集型应用选择最佳多核架构

作者: 时间:2018-09-03 来源:网络 收藏

本文引用地址:https://www.eepw.com.cn/article/201809/388262.htm

  对于SMP架构的编程来说,同样有好多种选择。在这种情况下,同一个 OS Domain内包含了多个相同架构的CPU.选择之一是采用操作系统内部可用的线程模式。在标准线程的OS环境中,通常有多种语言可供选择,例如:OpenMP、OpenCL和Cilk/Cilk++等。每种编程环境都有不同的语法,有些比较简单,但提供的控制水平有所差异。相对于典型的C语言语法,有些需要扩展性的改变。有些则并不支持所有的架构,所以你需要仔细检查所选的语言、编译器与操作系统是否可以很好地相互匹配和支持。

  如果你有兴趣和能力将编程技艺发挥到极致,以便充分调动系统中的每一个“门”,可以考虑采用GPGPU (通用GPU编程,General Purpose GPU programming)。那么你需要注意到这些因素:语言、驱动程序和带宽。GPU是专门设计用来在像素级对图形进行操作,计算数据矢量,以及复杂的3D视图高帧速处理。因此,它们具备针对小数据集快速进行复杂计算的能力。

  驱动程序对于GPGPU来说,绝不是无关紧要的琐事,必须从操作系统方面获得很好的支持。许多GPU提供商并不提供源代码,因为这属于他们知识产权的一部分。同时,他们通常也只是针对比较流行的操作系统才提供驱动程序。可能有些操作系统他们并不支持。

  接下来你要考虑GPGPU语言的选择。OpenCL出自 Khronos标准。CUDA专用于Nvidia GPU。它们都采用了类似的方法来实现并行编程,而性能基准测试指标则有所不同,在不同硬件环境中的表现有些差异。由于OpenCL是一个开放标准,所以在大多数平台中都可以使用,它带有编译器,而且不需要修改代码就可以应用于CPU与GPU混合的系统。这显然是值得注意到的优势。

  最后,远程GPU需要处理的数据量有多大,需要经过何种类型的总线,也会影响你的决定。越是数据密集型的应用,GPU就应该越靠近CPU。如果两者之间必须经过PCIe 总线,那就必须与外设分享带宽,这很可能会使性能受到较大的影响。如果GPU与CPU比较接近,由此造成的影响会相对降低。

  特别是对于消费电子产品来说,如可穿戴设备、移动手持设备、数字成像设备、家用网关以及宽带接入等设备,面临的一个重要挑战就是以小体积、低功耗的运行环境来处理越来越大量的图像、声音甚至人体生理特征数据。为了针对这类运行环境在较短的时间内开发出优异的多核系统,开发平台如何选择就显得尤为关键。

  风河公司最近针对最新版的VxWorks 7实时操作系统推出了面向各个行业的行业领域。这些Profile针对VxWorks 7扩充了一系列非常有价值的功能,帮助客户满足不断演变的市场和技术要求,从而抓住物联网所带来的新的市场发展机遇,其中就包括消费电子领域,专门针对小体积联网设备,如可穿戴设备、移动手持设备、数字成像设备、家用网关以及宽带接入设备等,提供快速启动、小体积、低功耗的运行环境,还特别强调对于GPU和2D/3D图形用户界面的支持能力,因而可以将多核处理器的优势最大限度地发挥出来。

  总之,在这里并不存在点石成金的魔法棒。你必须深入研究每一种架构选择,包括硬件、软件、语言以及编译器,才能准确地评估每一部分对整体性能的影响,才能针对特定的算法进行最佳的优化。一劳永逸,这在高性能计算系统中是不存在的,至少到目前为止是如此!

  

  图2:MCAPI 是一个消息传递应用的接口,带有协议和语义规范,规定了其功能特性在任何应用实现中都必须遵循的行为规范。


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭