LLM Part 2: GPU & Kernel Optimization
Lecture05介绍了GPU的基本架构与工作原理,并且介绍了几种提升计算效率的方法,比如Kernel Fusion, Memory Coalescing Tiling 等,并且在课程最后介绍了Flash Attention的原理及其实现细节。在Lecture06中,主要介绍了Triton,一个用于编写高性能GPU代码的开源编译器。内容涵盖了Triton的基本概念、编程模型以及如何使用Triton编写高效的GPU内核。通过实际示例,展示了Triton在深度学习中的应用和优势。
On this page
在Lecture05和Lecture06课程中,我们讲主要探讨GPU的架构以及如何利用GPU进行高效计算。在Lecture05中,我们首先介绍了GPU的基本架构和工作原理,接着讨论了几种提升计算效率的方法,如Kernel Fusion、Memory Coalescing和Tiling等。最后,我们还介绍了Flash Attention的原理及其实现细节。在Lecture06中,我们会先介绍如何Profiling GPU代码,接着介绍Triton,一个用于编写高性能GPU代码的开源编译器。我们将探讨Triton的基本概念、编程模型以及如何使用Triton编写高效的GPU内核。通过实际示例,我们将展示Triton在深度学习中的应用和优势。
在Lecture05的目标就是读懂下面这张图:
接下来,我们先来了解一下GPU的基本框架。
1 GPUs in depth
1.1 Different from CPU
CPU 和 GPU 的设计目标从一开始就不一样。
CPU的目标是:
- 尽可能快地执行一条条操作序列,也就是把一个“线程”做得很快。
- 它擅长处理逻辑复杂、步骤多、分支多的任务。
- 一般只能同时高效处理几十个线程左右,但每个线程都很强。
与CPU不同的是,GPU的设计目标是:
- 同时执行成千上万个线程。
- 它不追求单个线程特别快,而是追求大规模并行。
从图 Figure 2 中可以看出,CPU的核心数量较少,但每个核心都非常强大,适合处理复杂的任务。而GPU则拥有大量的核心,虽然每个核心相对较弱,但它们可以同时处理大量的线程,非常适合进行大规模并行计算。


