Skip to content

相关论文与研究

本页将项目中的设计决策追溯到学术基础。每条引用将内核优化或架构选择与其理论或实证来源联系起来。

内存层次优化

这些论文解释了为什么分块和瓦片化是矩阵乘法性能的基础。

[Goto2008]Anatomy of High-Performance Matrix Multiplication — Kazushige Goto, Robert A. van de Geijn (2008), ACM TOMS

理解矩阵乘法性能为何由内存层次主导的基础论文。本项目的内核阶梯遵循相同的分块哲学,适配到 CUDA 的共享内存和寄存器堆层次结构。

[Hong2012]GPU Performance Optimization: A Case Study with Matrix Multiplication — Taesoo Hong, Hyesoon Kim, Sang-Woo Park (2012), IEEE TPDS

针对 GPU 的 GEMM 优化研究。有助于理解 CUDA 的执行模型如何改变分块策略,与 CPU BLAS 形成对比。

Bank 冲突消除

这些来源解释了共享内存 bank 冲突问题以及本项目使用的填充解决方案。

[Ruetsch2009]Optimizing Matrix Multiply on GPUs — Gregory Ruetsch, Massimiliano Fatica (2009), GPU Computing Gems

共享内存 bank 冲突消除的实践方法。消除 Bank Conflict 内核中的填充策略遵循此方法。

[Nvidia2007]CUDA Programming Guide: Shared Memory — NVIDIA Corporation (2007)

共享内存 bank 冲突、访问模式和现代 GPU 上 32-bank 架构的官方文档。

双缓冲与延迟隐藏

这些来源解释了双缓冲内核中使用的重叠策略。

[Harris2007]Optimizing Parallel Reduction in CUDA — Mark Harris (2007), NVIDIA Developer Technology

虽然聚焦于归约操作,但此白皮书引入了双缓冲概念,用于重叠内存传输与计算。双缓冲内核将其应用于 GEMM 的瓦片加载-计算周期。

Tensor Core 与混合精度

这些来源解释了 WMMA API 和混合精度性能特征。

[Jia2018]Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking — Zhe Jia, Marco Maggioni, Jeffrey Smith, Daniele P. Scarpazza (2018), arXiv

Volta Tensor Core 的微基准测试研究。有助于理解 Tensor Core WMMA 内核背后的实际吞吐量和延迟特征。

[Nvidia2017]Programming Tensor Cores in CUDA 9 — NVIDIA Corporation (2017)

WMMA API 的官方介绍。这是本项目中使用的片段类型、形状约束和混合精度语义的主要参考。

性能建模

这些来源提供了理解基准测试结果的理论框架。

[Williams2009]Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures — Samuel Williams, Andrew Waterman, David Patterson (2009), CACM

原始 Roofline 模型论文。提供了讨论算术强度、内存带宽限制和计算上限的词汇,这是 Benchmark 纪律的基础。

如何使用本页

  1. 阅读内核前:打开对应的引用以理解优化原理。
  2. 阅读内核后:使用引用检查你的心智模型是否与已发表的解释匹配。
  3. 面试准备:这些引用为解释每个优化为何有效提供了学术支撑。

BibTeX 导出

用于 LaTeX 文档或学术写作:

bibtex
@article{Goto2008,
  author    = {Kazushige Goto and Robert A. van de Geijn},
  title     = {Anatomy of High-Performance Matrix Multiplication},
  journal   = {ACM Transactions on Mathematical Software},
  year      = {2008},
  volume    = {34},
  number    = {3},
  doi       = {10.1145/1391989.1391995}
}

@article{Hong2012,
  author    = {Taesoo Hong and Hyesoon Kim and Sang-Woo Park},
  title     = {GPU Performance Optimization: A Case Study with Matrix Multiplication},
  journal   = {IEEE Transactions on Parallel and Distributed Systems},
  year      = {2012},
  volume    = {23},
  number    = {6},
  doi       = {10.1109/TPDS.2012.279}
}

@inbook{Ruetsch2009,
  author    = {Gregory Ruetsch and Massimiliano Fatica},
  title     = {Optimizing Matrix Multiply on GPUs},
  booktitle = {GPU Computing Gems},
  year      = {2009},
  publisher = {Morgan Kaufmann}
}

@article{Williams2009,
  author    = {Samuel Williams and Andrew Waterman and David Patterson},
  title     = {Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures},
  journal   = {Communications of the ACM},
  year      = {2009},
  volume    = {52},
  number    = {4},
  doi       = {10.1145/1498775.1498785}
}

下一步

MIT Licensed