这几个概念是谈到并行时,经常遇到的。说实话,自己一直不是特别的清楚,这篇文章就对这几个概念进行区分。 Continue reading »
相信很多人都听说过:程序80%的运行时间用来执行20%的代码。循环几乎占一般应用程序运行时间的绝大部分。优化程序中有关循环尤其是关键循环的代码将会给程序的性能带来很大的提升。而且这种循环优化是目标机器无关的,任何对循环的一点点优化都会在所有编译器支持的目标机上带来性能提升。所以编译器上的循环优化一直是研究的热点。 Continue reading »
此次讲习班,因为没有资助,没钱参加。所以本博只厚着脸皮蹭了最后的讨论会。会上,来自全国不少地方的学生、老师都在,踊跃发言提问。Godson-T是热点,但因为本博做编译,呵呵,所以当时记录时,着眼这方面的较多。各位看官谅解。 Continue reading »
《关于并行貌似正确的废话》系列文章:
封装这一永恒的主题,在多核的时代还会永恒下去吗?答案是肯定的!
既然四个核的存储一致性都很难通过高效的机制保证,众核时代,更是如此。这众核肯定是若干个小的,结构简单的,功能不同的核的集合体。未来的程序,单单的串行,这么多核,很难充分的利用。功耗已经很高了,多少个核,就至少是多少倍的功耗提升,仅仅依靠投机也是不行的。
《关于并行貌似正确的废话》系列文章:
怎么办?解铃还需系铃人。既然自动的做不了,程序员就需要有并行的头脑,用并行的语言和开发方式,设计,实现。怎么并行?
或许计算机和程序语言的发展史能给我们一些启发。
《关于并行貌似正确的废话》系列文章:
在没有革命性的芯片制造技术之前,咱们必须得接受要想快,只能并行!即使出来了新的CPU制造技术,只要有计算,就需要时间,只要有时间需求,人就想要程序跑的越快越好。这是必须的,除了程序员,没有人会享受程序运行的过程。用计算机的人只想要结果!所以性能,将是永恒的主题。
怎么提升性能?咱们从下往上看。
上篇文章《前瞻-主流处理器中的数据并行支持(SIMD)>和《前瞻-拿起SIMD的武器I》分别介绍了当今主流CPU中的SIMD扩展 ,以及前人是如何利用SIMD来做优化的,本文<前瞻-拿起SIMD的武器II>将探讨如何使用CPU的向量指令为程序做优化
如何实现?
编程环境
在现在CPU设计中都加入SIMD扩展并不是解决应用性能问题的好方法。如果没有很好的利用途径,再强大的SIMD扩展指令集都是徒劳。接下来,我们从编译器技术和编程方法论上探讨如何使用SIMD指令来实现应用加速。 Continue reading »
上篇文章《前瞻-主流处理器中的数据并行支持(SIMD)》 介绍了当今主流CPU中的SIMD扩展,本文将介绍前人是物和利用SIMD来做优化的,下篇<前瞻-拿起SIMD的武器II>将探讨如何使用CPU的向量指令为程序做优化
已有在SIMD上的优化工作:
正如之前提到的,SIMD对具有以下特性的程序性能提升明显:天然数据并行,访存模式重复、在局部数据上重复操作、控制流数据无关。很多应用有这方面的特性,并能通过使用SIMD扩展提高性能,但实际仅有小部分从中获益,接下来将介绍在单核处理器上,利用Intel的SIMD扩展针对某些应用提升性能的研究,如多媒体,数据安全,数据库和一些科学计算应用。
多媒体处理
多媒体处理需要软件和硬件的很多支持。如MPEG-1,MPEG-2,MPEG-4,MPEG-7,H.263,JPEG2000等需要实时做复杂的媒体处理.3D图像和立体视频处理都需要更强劲的实时处理.因为各种媒体都需要不同的处理方式,技术支持、算法和硬件,因此针对他们的SIMD扩展改进也很不同。 Continue reading »
引言部分:
多媒体处理算法应用在很多媒体处理环境中,如对文本,手写数据,2D/3D图形和音频对象的捕捉、制造、存储和传输等。过去 都是使用昂贵的多媒体处理硬件协同工作来加速。现在,通用处理器通过在体系结构上增加媒体处理支持来减少使用协同处理器分配和返回带来的开销。在通用处理 器上一个基本的操作能同时作用多个元素的支持成为SIMD并行处理。通过SIMD扩展,通用护理器通过捕捉多媒体算法中潜在的并行特性来加速应用。


近期评论