CUDA编程(哈工大-苏统华)

特点

  • High throughput computation
  • High bandwidth memory
  • High availability to all

架构

一般多核CPU:若干个核心,每个核心有自己的本地存储,处理器之间访问一个更大的内存。

GPU

各种架构对应算力

Tesla:1.x;Fermi:2.x;Kepler:3.x(GTX680,780);Maxwell:5.x(GTX980);Pascal

另有Tesla计算卡,代表一系列卡,不是架构:k10:Fermi架构,k20,k40:Kepler架构。
GeForce游戏卡,Tesla高性能计算卡。

SM(Streaming Multi-processor)

Fermi GF100有16个SM,每个SM有32个CUDA Cores。每个CUDA core都有独立的计算能力。
指令缓存,指令调度器,分发器。
Load/Store单元,不需要处理器的干预就能完成存储器和寄存器之间数据的交换。
Special Func单元计算超越函数

硬件

该架构GPU能运行的最大线程数为2048,一个线程束warp的线程数为32,所以最大线程束数为2048/32
==共有5个SM(Multiprocessors),每个SM里有128个CUDA核心

  1. 整体架构

  2. SM架构,有4个warp调度器

  3. Warp调度器,每个warp允许两个独立的指令

三大特性

Synchronization

全局同步在CUDA中只有一种办法可以达到:结束一个kernel函数,启动一个新的kernel函数,在第二个kernel函数开始前,第一个kernel函数的所有block就能达到全局同步。
对于Kepler之后的GPU支持Hyper-Q机制:当第一个内核函数启动,但是没有占满所有SM,空闲的SM可以运行第二个内核函数。
线程同步:对同一个Block里面的线程进行同步。

CUDA编程

Map and Gather

并行计算中的通信是关于如何把任务和内存映射到一起
Map:任务读取和写入特定的数据元素。

Gather:每次运算从不同位置收集输入元素,输出一个输出结果。
Scatter:

Transpose:重新排列内存中的元素。
uploading-image-47104.png

posted @ 2021-05-18 15:00  小鸟飞飞11  阅读(432)  评论(0编辑  收藏  举报