ABB FAN D2D160-CE02-11 多核处理也影响了现代计算软件开发的能力
多核处理也影响了现代计算软件开发的能力。使用新语言编程的开发人员可能会发现他们的现代语言不支持多核功能。这就需要使用数字图书馆来访问用像C和FORTRAN语言,它执行数学计算的速度比较新的语言如C#。英特尔的MKL和AMD的ACML是用这些本地语言编写的,并利用了多核处理的优势。在处理器之间平衡应用程序工作负载可能会有问题,尤其是当它们具有不同的性能特征时。有不同的概念模型来处理这个问题,例如使用协调语言和程序构建块(编程库或高阶函数)。对于每种处理器类型,每个模块可以有不同的本机实现。用户只需使用这些抽象进行编程,智能编译器会根据上下文选择最佳实现。[20]
管理的并发在开发并行应用程序中占据中心位置。设计并行应用程序的基本步骤是:
分割
设计的划分阶段旨在为并行执行提供机会。因此,焦点在于定义大量的小任务,以产生所谓的问题的细粒度分解。
沟通
由分区生成的任务旨在并发执行,但通常不能独立执行。在一个任务中执行的计算通常需要与另一个任务相关联的数据。然后,数据必须在任务之间传输,以便允许计算继续进行。这种信息流是在设计的沟通阶段指定的。
结块
在第三阶段,发展从抽象走向具体。开发人员重新审视在划分和通信阶段所做的决策,以期获得一种能够在某类并行计算机上高效执行的算法。特别是,开发人员考虑组合或聚集由划分阶段确定的任务是否有用,以便提供数量更少、规模更大的任务。他们还决定是否值得复制数据和计算。
绘图
在并行算法设计的第四个也是最后一个阶段,开发人员指定每个任务的执行位置。在提供自动任务调度的单处理器或共享内存计算机上不会出现这种映射问题。