HPC它涉及多个处理器或计算机的使用, 以高吞吐量和高效率完成一个复杂的任务。HPC不仅可以认为是一个计算架构,还可以认为是包括硬件系统,软件工具,编程平台及并行编程范例的一组元素集合。
1.1 并行计算
从纯粹的计算视角来看,并行计算可以被定义为:计算机可以同时进行许多运算。计算原则是一个大问题往往可被划分为很多可以同时解决的小问题。
从程序员角度来说,如何将并发计算映射到计算机上。并行计算可以被定义为同时使用许多计算资源(核心或计算机)来执行并发计算,一个大问题可以被分解为多个小问题,然后在不同的计算资源上并行处理这些小问题。
其中通常涉及两个计算技术领域 :计算机架构(硬件)、并行程序设计(软件)。
计算机架构关注的是结构级别上支持并行性,而并行程序关注充分使用计算机架构的计算能力来并发的解决问题。
大多数现代处理器用到Harvard Architecture架构。它主要由三部分完成:
1.内存(指令内存和数据内存);
2.中央处理单元(控制单元和算术逻辑单元);
3.输入/输出接口;
现在,芯片设计的趋势是将多个核心集成到单一的处理器上,以在体系结构级别支持并行性,通常被称为多核处理器。因此,并行程序设计可以看作是将一个问题的计算分配给可用的核心以实现并行的过程。
1.1.1 串行编程和并行编程
有两种方法用来区分两个计算单元之间的关系:有执行顺序的,必须串行执行;其他的没有执行次序的约束,则可用并发执行。
从程序员的角度来看,一个程序应包含两个基本的组成部分:指令和数据。当一个计算问题被划分成许多小的计算单元后,每个计算单元都是一个任务。在一个任务中,单独的指令负责处理输入和调用一个函数并产生输出。当一个指令处理前一个指令产生的数据时,就有了数据相关性的概念。
如果一个任务处理的是另一个任务的输出,那么它们就是相关的,否则就是独立的。
在并行算法的实现中,分析数据的相关性是最基本的内容,因为相关性是限制并行性的一个主要因素。
在大多数情况下,具有依赖关系的任务之间的独立的关系链为并行化提供了很好的机会。
1.1.2 并行性
在应用程序中有两种基本的并行类型:
1.任务并行;
2.数据并行;
当许多任务或函数可用独立地、大规模地并行执行时,这就是任务并行。任务并行的重点在于利用多核系统对任务进行分配。
当同时处理许多数据时,这就是数据并行。数据并行的重点在于利用多核系统对数据进行分配。

本文介绍了并行计算的基础知识,包括HPC的概念及其组成部分,详细解析了并行计算中的任务并行与数据并行,并介绍了CUDA作为一种通用的并行计算平台和编程模型的应用。
最低0.47元/天 解锁文章
795

被折叠的 条评论
为什么被折叠?



