• 其他语言



多线程编程的具体细节
页面和feed选项
打印
收藏此页
Digg此页 | 添加到您的del.icio.us帐号
目录

介绍
作者:Tim Mattson

了解并行算法和并行编程 API 的基本信息,以及开始编写您自己的并行程序所需要的工具。

当前领先的硬件设计依赖于并行性,也就是说,多个活动在同一时间运行。CPU 内部性能依赖于指令级并行性。所有主要的 CPU 厂商在每个硅核上都采用多个内核,典型的服务器每个机箱内都有多个插座。覆盖全球的服务器集群和系统网格正在迅速普及。并行已成为主流,所以,如果软件开发人员想与时俱进,最好学会如何运用它。

最好的切入点是深入地了解并行性硬件。80年代初期,超级计算的设计者们通过将小型计算机连接构建成较大的系统,设计出了高性能的电脑。大部分的设计的都归属于两大阵营之一:分布式内存多指令多数据流(MIMD)架构或共享式内存 MIMD 架构。在 MIMD 中,每个处理单元都有其自己的指令流和数据流。如果系统中所有处理元件共享一个地址空间时,我们把这种系统称为“共享式内存”系统。而如果内存不同,每个处理元件只能通过网络连接相互作用,我们则称为“分布式内存”系统。

这两种架构都很重要,取决于需要解决的问题,软件开发人员应选择一个更加合适的架构。然而,在近几年内,共享式内存系统的数量将会突飞猛进。随着英特尔在一块芯片上置入两个内核,以及多插槽系统的持续增长,共享式内存系统将会越来越普及。笔记本电脑以至掌上电脑都将采用多核 CPU,并为程序员提供一个并行的硬件平台。

那么,程序员应如何运用这些并行系统呢?根据工作量以及目标用户的需求,他们有两种选择:第一种选择的目标是,在更少时间内完成收集独立的任务。也就是说,这种选择着重系统的生产能力或集合能力。这种情况下,每个单独的任务都可以在单个处理器上运行。软件开发商需要做的只是确保任务调度(通常在操作系统内)能有效地控制工作量。当需要在更少的时间内完成单个任务时,就有了第二种选择。比如,当今的业务环境经常要求电脑迅速响应,以支持实时的决策制定。这种情况下,单个任务需要更少的时间运行。根据当前问题的范围,在单个任务中采用并行性,以使其运行更短的时间,我们把这种情况叫做“并行编程”。

多年来,并行编程都是硬件内核高性能计算(HPC)的软件开发人员潜心研究的领域。然而今天,所有的软件开发人员都需要理解并行编程。有时,当您轻松地创建了一个并行程序,您会很庆幸,但在大部分情况下这很具有挑战性。

幸运的是,HPC 的程序员已经研究并行性几十年了,他们已经掌握很多关于并行算法和并行编程 API 的相关知识,并了解使程序员的工作更轻松、工作效率更高所需要的工具。本文将就这些问题进行概述,希望能够为您开始编写自己的并行程序指出正确的方向。

我们首先从一些并行编程领域的计算机科学背景知识入手。然后再对编程共享式内存 MIMD 计算机上具体的 API 和编程环境进行阐述。最后,我们做一总结,并列出您可以获得更多知识的资源。

上一部分上一部分2  3  4  5  下一部分

第 1 页, 共 6 页