并行计算
Programming Languages:
- MPI
- OpenMP
- Pthread
- CUDA
- Hadoop & Spark (Java & SCALA)
课程内容
并行计算的发展
异构计算(Heterogeneous Computing)指的是将多个不同种类的计算资源(如CPU、GPU、FPGA等)组合起来,形成一个统一的计算系统,并利用它们各自的优势,来完成特定的计算任务。相对于传统的同构计算(Homogeneous Computing),异构计算在处理高性能、大数据、人工智能等领域的计算任务时,具有更高的计算效率、更低的能耗和更小的空间占用。
在异构计算中,不同类型的计算资源通常都有各自独特的优势。例如,GPU在并行计算方面具有出色的性能,而FPGA在处理特定类型的计算任务(如信号处理、加密解密等)时具有优势。通过将它们组合起来,可以充分发挥它们各自的优势,提高整个系统的性能和效率。
并行计算机分类
Flynn的经典分类法
基于内存的分类
Shared memory
UMA和NUMA是与计算机内存架构相关的术语。
UMA(Uniform Memory Access)指的是一种内存访问模式,在这种模式下,处理器可以在同等的时间内(即具有相同的延迟)访问任何一个内存地址。这种架构通常用于单处理器系统或者小型的对称多处理器(SMP)系统,其中所有处理器都可以访问相同的物理内存。
NUMA(Non-Uniform Memory Access)则是一种非均匀内存访问模式。在NUMA架构中,不同的处理器可以访问到不同的物理内存区域,而且不同的内存区域可能与不同的处理器相连。这意味着,访问某些内存区域的延迟可能比访问其他区域的延迟更长。NUMA架构通常用于大型的多处理器系统,其中各处理器之间需要共享内存资源。
总之,UMA和NUMA是两种不同的内存访问模式,它们的适用范围和使用场景也不同。UMA通常用于小型系统,而NUMA则更适用于大型的多处理器系统。
并行计算编程分类
但是编程模型不受机器或内存体系结构的限制
消息传递模型可以在SHARED内存上支持机器: 例如,单个服务器上的MPI
分布式内存机器上的共享内存模型:例如,分区全局地址空间
举个例子,SHARED MEEORY PROGAMMING MODEL 有两种实现
两种编程模型分类
总结
编程模型(programming model) 和并行系统(parallel system)的设计和流行程度是相互影响的。
OpenMP、MPI、Pthreads、CUDA只是供用户进行并行编程的一些并行语言。
高性能计算
基本工具
ssh
rsync
开发工具
想在超算集群中开发一些程序所要用到的库