ece408

ECE408 MPs 详细讲解
MP2 - 矩阵乘法 (Matrix Multiplication)

做什么: 最基础的 GPU 并行计算 - 矩阵乘法 C = A × B

原理:

为什么重要: GPU 编程入门,学习如何启动 kernel、分配内存、数据传输


MP3 - 分块矩阵乘法 (Tiled Matrix Multiplication)

做什么: 优化版的矩阵乘法,使用 shared memory 加速

原理:

关键技术:

为什么重要: 学习 GPU 内存层次结构和优化技术


MP4 - 3D 卷积 (3D Convolution)

做什么: 对 3D 数据(如视频、医学影像)进行卷积操作

原理:

应用场景:

关键技术:


MP5 - 列表归约 (List Reduction)

做什么: 计算数组所有元素的和(或其他归约操作)

原理:

关键技术:

应用场景: 求和、求最大值、求平均值等


MP6 - 并行扫描 (Parallel Scan / Prefix Sum)

做什么: 计算前缀和(累加和)

原理:

应用场景:

关键技术:


MP7 - 直方图均衡化 (Histogram Equalization)

做什么: 图像增强技术,改善图像对比度

原理:

  1. RGB → 灰度: 彩色图像转灰度图
    - Gray = 0.21R + 0.71G + 0.07*B
  2. 计算直方图: 统计每个灰度值出现的次数
    - histogram[0-255] = 每个灰度值的像素数量
  3. 计算 CDF: 累积分布函数(使用 scan)
    - CDF[i] = histogram[0] + ... + histogram[i]
  4. 均衡化: 重新映射灰度值
    - new_value = (CDF[old_value] / total_pixels) * 255

效果: 让暗的图像变亮,提高对比度

应用场景:

关键技术:


MP8 - 稀疏矩阵向量乘法 (Sparse Matrix-Vector Multiplication, SpMV)

做什么: 计算稀疏矩阵与向量的乘法 y = A × x

什么是稀疏矩阵:

为什么需要特殊处理:

JDS 格式 (Jagged Diagonal Storage):

应用场景:

关键技术:


学习路径

  1. MP2: 基础 - 学会写 GPU 程序
  2. MP3: 优化 - 学会用 shared memory
  3. MP4: 进阶 - 学会用 constant memory 和 3D 数据
  4. MP5: 归约 - 学会树形算法
  5. MP6: 扫描 - 学会前缀和算法
  6. MP7: 应用 - 综合运用多种技术
  7. MP8: 实战 - 处理真实世界的稀疏数据

核心概念

GPU 内存层次(从快到慢):

  1. 寄存器 (Registers): 最快,每个线程私有
  2. Shared Memory: 很快,block 内共享
  3. Constant Memory: 快,只读,所有线程共享
  4. 全局内存 (Global Memory): 慢,但容量大

优化原则: