高性能计算平台架构全解析
立即解锁
发布时间: 2025-08-21 02:07:52 阅读量: 1 订阅数: 4 


高性能计算系统优化与应用设计
### 高性能计算平台架构全解析
#### 分布式与共享内存系统
在提升应用程序性能方面,除了在处理器核心内部增加并行工作量,还可以采用分布式和共享内存两种并行方式。作为软件开发人员,这两种方式的主要区别在于处理器对内存的共享和访问方式。
- **共享内存方式**:多个应用线程可以透明地同时访问所有内存。
- **分布式内存方式**:存在本地和远程内存,要处理任何数据,都需先将其复制到线程或进程的本地内存中。
#### 使用同一节点上更多独立线程
这种方法利用属于一个程序的多个线程同时访问相同的内存位置。应用线程可以通过共享内存相互通信,避免数据的冗余复制,是在程序线程之间传递数据的有效方式。不过,要连接多个处理器(每个处理器有多个核心),底层系统需要强大的硬件来支持内存请求的仲裁和排序。
在共享内存系统中,内存对应用程序呈现为统一、连续的地址范围,但不同处理器访问不同部分内存的成本可能不同。现代高性能处理器通常集成了内存控制器,每个处理器都有自己的本地内存,而访问其他处理器的内存则需要通过内部互连,如英特尔快速路径互连(QPI),使系统中的所有内存看起来像一个连续的地址空间。这种访问远程内存可能会增加额外的延迟,具有这种额外延迟的共享内存系统被称为非统一内存访问(NUMA)系统。
NUMA的影响可以用远程和本地内存访问延迟的比率来衡量,这个比率称为NUMA因子。例如,在配备英特尔至强E5 - 2697 v2处理器的双处理器服务器中,本地内存访问延迟(在空闲情况下测量)约为50 - 70纳秒,而远程内存访问延迟为90 - 110纳秒,该系统的NUMA因子约为1.5。共享内存系统越大,NUMA因子通常也越大,这使得为这些系统优化应用程序变得更加困难。
要获取系统的NUMA拓扑详细信息,可以使用适用于所有主流Linux发行版的numactl工具。在工作站上,使用`--hardware`参数执行numactl工具,会显示如下信息:
```
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 28 29 30 31 32 33 34 35
node 0 size: 65457 MB
node 0 free: 57337 MB
node 1 cpus: 12 13 14 15 16 17 18 19 20 21 22 23 36 37 38 39 40 41 42 43 44 45 46 47
node 1 size: 65536 MB
node 1 free: 59594 MB
node distances:
node 0 1
0: 10 21
1: 21 10
```
该输出显示有两个NUMA节点,每个节点有24个处理器(实际上是12个物理独立核心,每个核心有两个线程),每个NUMA节点有64GB的RAM,服务器总共128GB。
与物理内存类似,多处理器系统中的输入/输出子系统和I/O控制器也是共享的,任何处理器都可以访问任何I/O设备。I/O控制器通常集成在处理器中,访问本地和远程设备的延迟可能不同。但由于从外部I/O设备获取数据或向其发送数据的延迟远高于跨处理器网络(如QPI)增加的延迟,因此在大多数情况下可以忽略这种额外的处理器间网络延迟。
#### 不要局限于单个服务器
单个共享内存系统的规模存在实际限制,主要是由于硬件构建成本和内存仲裁逻辑的开销。为了获得比单个共享内存系统更高的性能,可以将多个较小的共享内存系统组合起来,并通过快速网络互连。这种互连方式不会使不同服务器的内存看起来像一个单一的地址空间,因此需要软件隐式或显式地处理数据从一个服务器到另一个服务器的复制。
分布式内存系统中,每个节点的处理器都有自己的专用私有内存和私有I/O。在访问其他节点的私有内存中的数据之前,需要将数据复制到请求数据的节点的私有内存中。这种构建并行机器的硬件方法称为分布式内存,额外的数据复制步骤会带来性能损失,其影响程度很大程度上取决于节点之间互连的特性和编程方式。
#### 多核工作站或服务器计算节点
简单的工作站或台式计算机通常至少有一个处理器,且该处理器很可能有多个核心。核心是独立的硬件单元,与处理器内的其他核心不共享任何硬件资源,它通过执行算术、逻辑、输入/输出等操作来执行计算机程序的指令。支持的指令通常硬连线到核心中,称为指令集,这是处理器的“语言”。主流英特尔处理器的所有指令都基于x86指令集,并带有多个扩展,如MMX、SSE、AES
0
0
复制全文
相关推荐









