基于CUDA的异构并行计算介绍

高性能计算(HPC):它涉及多个处理器或计算机的使用,以高吞吐量和高效率来完成一个复杂的任务; HPC不仅可以认为是一个计算架构,还可以是包括硬件系统、软件工具、编程平台及并行编程范例的一组元素列表

并行计算

并行计算目标:提高运算速度
并行计算:同时使用许多计算资源(核心或计算机)来执行并发计算,一个大的问题可以被分解成多个小问题,然后在不同计算资源上并行处理这些小问题。
涉及2个不同的计算技术领域

  1. 计算机架构(硬件方面)
    关注的是在结构级上支持并行性.
    为了在软件中实现并行执行,硬件必须提供一个支持并行执行多线程或多进程的平台.
  2. 并行程序设计(软件方面)
    关注的是充分使用计算机架构的计算能力来并发解决问题.

现代处理器

现代处理器,采用哈佛体系结构(Harvard architecture),其组成如下:
基于CUDA的异构并行计算介绍_第1张图片
高性能计算(HPC)的关键部分是中央处理单元(CPU),通常被称为计算机的核心.

  1. 在早期的计算机中,一个芯片上只有一个CPU,这种结构被称为单核处理器
  2. 现在,芯片设计的趋势是将多个核心集成到一个单一的处理器上,以在体系结构级别支持并行性,这种形式通常被称为多核处理器

并行性

多层次的并行性设计是架构设计的驱动力

任务并行

当许多任务或函数可以独立地、大规模地并行执行,这就是任务并行.
任务并行的重点:利用多核系统对任务进行分配

数据并行

可以同时处理许多数据时,这就是数据并行.
数据并行的重点:利用多核系统对数据进行分配.

数据划分

块划分(block partitioning)

在这里插入图片描述

  1. 在块划分中,一组连续的数据被分到一个块内.
  2. 每个数据块以任意次序被安排给一个线程,线程通常在同一时间只处理一个数据块.
  3. 每个线程作用于一部分数据,通常这些数据具有相同大小
周期划分(cyclic partitioning)

在这里插入图片描述

  1. 更少的数据被分到一个块内
  2. 相邻的线程处理相邻的数据块,每个线程可以处理多个数据块
  3. 为了一个待处理的线程选择一个新的块,就意味着跳过和现有线程一样多的数据块.

计算机架构

弗林分类法(Flynn’s Taxonomy)

根据指令和数据进入CPU的方式,将计算机架构分为4种不同的类型.
基于CUDA的异构并行计算介绍_第2张图片

SISD

指的是传统计算机(一种串行架构),在这种计算机上只有一个核心. 在任何时间点上只有一个指令流在处理一个数据流.

SIMD

  1. 是一种并行架构类型
  2. 在这种计算机上只有多个核心
  3. 在任何时间点上所有的核心只有一个指令流处理不同的数据流
  4. 向量机是一种典型的SIMD类型计算机,现在大多数计算机都采用SIMD架构
  5. 优点:在CPU上编写代码时,程序员可以继续按串行逻辑思考但对并行数据操作实现并行加速,而其他细节则由编译器来负责

MISD

这种架构种,每个核心通过使用多个指令流处理同一个数据流.

MIMD

  1. 是一种并行架构,在这种架构中,多个核心使用多个指令流来异步处理多个数据流,从而实现空间上的并行性.
  2. 许多MIMD架构还包含SIMD执行的子组件

内存组织进行分类

分布式内存的多节点系统

基于CUDA的异构并行计算介绍_第3张图片

  1. 在多节点系统中,大型计算引擎由许多网络连接的处理器构成的.
  2. 每个处理器有自己的本地内存,而且处理器之间可以通过网络进行通信
  3. 一个典型的分布式内存的多节点系统:集群

共享内存的多处理器系统

  1. 多处理器架构的大小通常从双处理器到几十个或几百个处理器之间
  2. 这些处理器要么是与同一个物理内存相关联,要么公用一个低盐城的链路(PCI-EXpress 或 PCle)
  3. 尽管共享内存意味着共享地址空间,但并意味着它就是一个独立的物理内存

基于CUDA的异构并行计算介绍_第4张图片

CPU与GPU的区别

  1. CPU核心比较重,用来处理非常复杂的控制逻辑,以优化串行程序执行
  2. GPU核心较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量.

异构计算

异构架构

  1. 一个典型的异构计算节点包含两个多核CPU和两个或更多个的众核GPU
  2. GPU不是一个独立的平台而是CPU的协处理器

基于CUDA的异构并行计算介绍_第5张图片
在这里插入图片描述

你可能感兴趣的:(cuda)