大模型一出,各类企业的各类“模型”竞赛般的亮家伙,算力时代抢先到来。2023年4月超算互联网的正式部署,标志着,很快,越来越多的应用都需要巨大的计算资源。这给传统的计算机体系结构带来了巨大的挑战,计算领域的革命性技术将持续涌现。而基于CUDA的GPU并行程序优化正引领着这场变革的浪潮! CUDA对于加速模型训练和部署有着显著的积极影响:CUDA提供了强大的并行计算能力,可以大幅度减少训练和推理深度学习模型所需的时间,同时可以帮助开发人员进行大规模的计算和优化模型的部署过程。 使用CUDA的优点显而易见,更创新,更速度、高质量。 技术人的科技嗅觉永远都是最敏锐的,也是最爱学习、不断进修的。自从我们的CPU并行程序优化实战课程面世之后,催更GPU并行程序优化的声音就越来越多、越来越多不同行业的朋友关注到了高性能计算。 终于,不负众望,我们精心研发的GPU并行程序性能优化实战课程将如期和大家见面。先睹为快(《基于CUDA的GPU并行程序优化实战课程》课程大纲)→
CPU并行程序优化大纲
|
大模型一出,各类企业的各类“模型”竞赛般的亮家伙,算力时代抢先到来。2023年4月超算互联网的正式部署,标志着,很快,越来越多的应用都需要巨大的计算资源。这给传统的计算机体系结构带来了巨大的挑战,计算领域的革命性技术将持续涌现。而基于CUDA的GPU并行程序优化正引领着这场变革的浪潮!
CUDA对于加速模型训练和部署有着显著的积极影响:CUDA提供了强大的并行计算能力,可以大幅度减少训练和推理深度学习模型所需的时间,同时可以帮助开发人员进行大规模的计算和优化模型的部署过程。
使用CUDA的优点显而易见,更创新,更速度、高质量。
技术人的科技嗅觉永远都是最敏锐的,也是最爱学习、不断进修的。自从我们的CPU并行程序优化实战课程面世之后,催更GPU并行程序优化的声音就越来越多、越来越多不同行业的朋友关注到了高性能计算。
终于,不负众望,我们精心研发的GPU并行程序性能优化实战课程将如期和大家见面。先睹为快(《基于CUDA的GPU并行程序优化实战课程》课程大纲)→
第一章:GPU并行计算导论 | ||
类型 | 内容 | 知识点 |
课堂教学 | CUDA导论及课程介绍 | 并行计算、GPU、CUDA导论 |
课程内容介绍 | ||
课堂教学 | CUDA软件结构 | 异构编程模型 |
课堂实战,第一个CUDA程序:Hello World | CUDA软件结构 | |
kernel函数定义与调用 | ||
CUDA函数前缀 | ||
nvcc编译 | ||
第二章CUDA编程模型 | ||
类型 | 内容 | 知识点 |
课堂教学 | CUDA 内存管理 | CUDA编程模型 |
课堂实战:CUDA实现向量相加 | GPU存储层次 | |
device和host数据传输 | ||
CUDA内存管理API | ||
cudaMalloc() | ||
cudaMemcpy() | ||
cudaFree() | ||
课堂教学 | CUDA线程层次 | thread |
课堂实战:GPU加速模拟信号降噪:一维卷积平滑滤波 | block | |
grid | ||
一维、二维、三维索引 | ||
课堂实战 | CUDA 存储模型 | 寄存器 |
课堂实战:一维卷积平滑滤波程序性能优化(常量内存+共享内存优化) | 共享内存 | |
本地内存 | ||
常量内存 | ||
全局内存 | ||
纹理内存 | ||
第三章CUDA进阶使用 | ||
类型 | 内容 | 知识点 |
课堂教学 | CUDA硬件结构与调度 | SM的结构 |
线程调度机制: | ||
硬件Core、SM、Device到线程层次的映射 | ||
SIMT | ||
线程束 | ||
延迟隐藏 | ||
课堂实战 | CUDA常用编程接口 | 流 |
流和事件 | 事件 | |
课堂实战:流和事件演示实验 | 异步传输 | |
原子操作 | ||
设备管理 | ||
错误管理 | ||
内置数据类型 | ||
原子操作 | ||
课堂实战 | 多GPU数据传输 | Peer-to-Peer Memory Access |
课堂实战:演示实验 | 大数据向量点积运算 | |
第四章 CUDA进阶项目(一) 高性能计算经典问题:基于CUDA的归约及求和优化 |
||
类型 | 内容 | 知识点 |
课堂教学 | 归约算法实现及优化 | 访存优化、线程调度优化 |
课堂实战 | 前缀求和算法实现及优化 | 内存优化、线程调度优化 |
课堂实战 | SN递归算法实现及优化 | |
第五章 CUDA进阶项目(二) 高性能计算经典问题:基于CUDA的矩阵乘优化 |
||
类型 | 内容 | 知识点 |
课堂教学 | 矩阵乘算法SGEMM实现及优化 | 分块算法、存储、cudaMallocPitch()、分支消除等优化 |
课堂实战 | 稀疏矩阵向量乘算法实现及优化 | 矩阵存储格式CSR、ELL等优化 |
第六章 CUDA进阶项目(三) 基于GPU的人工智能/深度学习框架与图像处理 |
||
类型 | 内容 | 备注 |
课堂教学 | CUDA深度神经网络库cuDNN部署与应用 | cuDNN安装 |
轻量级神经网络库Darknet介绍与安装 | darknet安装、参数调优 | |
课堂教学 | 深度学习推理库TensorRT+CUDA加速Pytorch模型 | 利用TensorRT对Pytorch模型推理加速 |
课堂教学 | 基于GPU的图像处理算法优化 | CUDA+CV处理大图像数据 |
CPU并行程序优化大纲
一级模块名称 | 二级模块名称 | 二级模块名称 |
超算平台开发环境与基础优化技术 | 超级计算机平台简介 | 超级计算机体系结构 |
天河超算平台登录使用 | ||
Linux操作系统开发环境 | Linux常用命令 | |
编辑器VIM/编译器GCC/工程构建工具Make/调试器GDB入门 | ||
超算平台任务管理系统slurm | ||
高性能算法 | 稀疏矩阵压缩存储格式 | |
稀疏矩阵向量乘算法SpMV优化 | ||
基础性能分析 | 静态分析工具understand | |
动态分析工具gprof | ||
计时函数辅助方式 | ||
基础性能优化 | 流水线 | |
循环展开 | ||
循环分块 | ||
连续访存 | ||
并行编程模型简介 | 分布式并行模型-MPI | |
共享内存式并行模型-OpenMP | ||
单指令多数据并行模型-SIMD | ||
MPI | MPI基本概念 | 进程与MPI程序基本编程方式、编译、运行 |
MPI四个基本接口 | ||
并行模式 | ||
点对点通信(阻塞式) | 发送MPI_Send与接收MPI_Recv | |
消息标签tag及MPI_ANY_TAG和MPI_ANY_SOURCE | ||
jacobi并行化-阻塞消息通信版本 | ||
组织进程通信避免死锁 | ||
接口MPI_Sendrecv | ||
jacobi并行化-基于捆绑消息发送接收版本 | ||
点对点通信(非阻塞式) | 接口MPI_Isend与MPI_Irecv | |
非阻塞通信的等候与检测 | ||
jacobi并行化-非阻塞消息通信版本 | ||
重复非阻塞通信 | ||
jacobi并行化-重复非阻塞消息通信版本 | ||
集合通信 | 广播bcast | |
分散scatter | ||
收集gather | ||
规约reduce | ||
全互换alltoall | ||
路障barrier | ||
通信模式和虚拟进程拓扑 | 四类通信模式 | |
虚拟进程拓扑 | ||
OpenMP | OpenMP基本概念 | 线程概念 |
OpenMP基本编程方式、编译、运行 | ||
OpenMP并行程序基础设计 | openMP并行域与指令parallel | |
变量作用域与私有、共享属性 | ||
线程竞争、临界区和指令critical | ||
OpenMP的循环体for结构 | 循环迭代并行和指令for | |
循环调度策略与子句schedule | ||
变量作用域属性与子句private、shared、default | ||
变量规约属性与子句reduction | ||
嵌套循环与子句collapse | ||
OpenMP的分段section与task结构 | 代码段并行和指令section | |
任务池并行和指令task | ||
OpenMP的其他指令 | 单线程指令single、master | |
路障指令barrier | ||
原子指令atomic | ||
缓存一致性 | 缓存、缓存一致性与伪共享 | |
SIMD | SIMD基本概念及编程入门 | SIMD与向量化概念 |
程序向量化思路与编程基础方式 | ||
向量寄存器、ARM架构与NEON | ||
自动向量化 | 编译选项自动向量化 | |
编译指导语句自动向量化 | ||
NEON-intrinsic指令集(命名规则及存取操作) | intrinsic的向量数据类型和函数命名规范 | |
向量寄存器初始化函数 | ||
交叉存取技术-以RGB转换为例 | ||
存储、加载操作函数 | ||
NEON-intrinsic指令集(算术、比较、逻辑及其他操作) | 算术操作函数 | |
比较操作函数 | ||
逻辑操作函数 | ||
其他操作函数 | ||
SVE指令集简介(选修) | Z、P寄存器 | |
命名规则及常见intrinsic函数 | ||
聚集加载和分散存储 |