0%

HPC(1)

并行计算

Programming Languages:

  • MPI
  • OpenMP
  • Pthread
  • CUDA
  • Hadoop & Spark (Java & SCALA)

课程内容

image-20230419133905269

并行计算的发展

image-20230419201500259

异构计算(Heterogeneous Computing)指的是将多个不同种类的计算资源(如CPU、GPU、FPGA等)组合起来,形成一个统一的计算系统,并利用它们各自的优势,来完成特定的计算任务。相对于传统的同构计算(Homogeneous Computing),异构计算在处理高性能、大数据、人工智能等领域的计算任务时,具有更高的计算效率、更低的能耗和更小的空间占用。

在异构计算中,不同类型的计算资源通常都有各自独特的优势。例如,GPU在并行计算方面具有出色的性能,而FPGA在处理特定类型的计算任务(如信号处理、加密解密等)时具有优势。通过将它们组合起来,可以充分发挥它们各自的优势,提高整个系统的性能和效率。

并行计算机分类

Flynn的经典分类法

image-20230419204006761

基于内存的分类

image-20230419223116444

Shared memory
image-20230419223932734

UMA和NUMA是与计算机内存架构相关的术语。

UMA(Uniform Memory Access)指的是一种内存访问模式,在这种模式下,处理器可以在同等的时间内(即具有相同的延迟)访问任何一个内存地址。这种架构通常用于单处理器系统或者小型的对称多处理器(SMP)系统,其中所有处理器都可以访问相同的物理内存。

NUMA(Non-Uniform Memory Access)则是一种非均匀内存访问模式。在NUMA架构中,不同的处理器可以访问到不同的物理内存区域,而且不同的内存区域可能与不同的处理器相连。这意味着,访问某些内存区域的延迟可能比访问其他区域的延迟更长。NUMA架构通常用于大型的多处理器系统,其中各处理器之间需要共享内存资源。

总之,UMA和NUMA是两种不同的内存访问模式,它们的适用范围和使用场景也不同。UMA通常用于小型系统,而NUMA则更适用于大型的多处理器系统。

并行计算编程分类

image-20230419230352291

但是编程模型不受机器或内存体系结构的限制

消息传递模型可以在SHARED内存上支持机器: 例如,单个服务器上的MPI

分布式内存机器上的共享内存模型:例如,分区全局地址空间

image-20230420113250979

举个例子,SHARED MEEORY PROGAMMING MODEL 有两种实现

image-20230420114212027

image-20230420114121227

两种编程模型分类

image-20230420114356341

总结

编程模型(programming model) 和并行系统(parallel system)的设计和流行程度是相互影响的。
OpenMP、MPI、Pthreads、CUDA只是供用户进行并行编程的一些并行语言。

高性能计算

基本工具

ssh

rsync

开发工具

想在超算集群中开发一些程序所要用到的库

SIMD

SSE/AVX

SIMT

CUDA/ROCm

OpenCL

Multi-Thread

OpenMP

性能调优

GPU

CPU

RDMA