培训主题: CUDA编程
培训时长: 12 小时
课程描述
本课程是为对cuda编程感兴趣的软件工程师设计的。本课程第一部分主要介绍CUDA编程相关的知识。首先本课程将简单介绍GPU编程的基础概念,包括GPU硬件,GPU编程模型(SIMT),以及简单的CUDA程序实例。本课程将进一步介绍GPU程序运行时,包括CUDA初始化,CUDA程序中不同内存的使用,CUDA程序同步机制,多GPU间的通信和进程间的通信。本课程也介绍高级的CUDA编程技术,如协作组(cooperative group),动态并发 (dynamic parallism),虚拟内存 (virtual memory),流(stream),和统一内存模型(unified memory)等。本课程的第二部分涉及CUDA编程的基础设施部分,包括网络和存储。网络部分设计Nivdia NCCL库,存储部分涉及GPU Direct Storage。为了让本课程更加实用,本课程第三部分将介绍开发不同应用程序(数值分析,计算机视觉,自然语言处理等)所需要的CUDA 库。本课程最后一部分是实验部分,主要涵盖典型的CUDA程序例子,用以熟悉CUDA编程的各种模式。
面向的听众: 本课程适合任何有编程开发经验的人
学习目标
理解CUDA编程基本概念:SIMT,CUDA kernel,GPU内存分成结构,GPU线程模型等。
理解GPU CUDA程序运行时系统
掌握GPU CUDA程序性能调优
掌握GPU编程生态中网络和存储相关基础设施
掌握CUDA编程常见范式和多种开发应用程序需要的CUDA库
课程大纲
CUDA编程 (6 hour)
CUDA编程入门(
CUDA程序运行时
高级CUDA编程技术和CUDA性能调优
CUDA生态网络和存储基础设施介绍 (2 hours)
CUDA应用程序开发库介绍 (2 hours)
CUDAc程序开发实践(2 hours)
课程预备知识
学生应该熟悉C/C++编程,并拥有笔记本电脑进行编程,最好能有GPU硬件。
课程名称:CUDA Programming
1:CUDA 编程基础(6 hour)
1.1CUDA编程入门
学习目标:
了解GPU硬件体系架构
掌握GPU编程模型
掌握GPU内存和线程结构
掌握CUDA组成结构
掌握CUDA程序接口,CUDA编译流程,PTX指令等
1.2 CUDA运行时
学习目标:
掌握CUDA程序初始化流程
掌握在CUDA程序中各种GPU内存的使用
共享内存
纹理内存(texture memory)等
内存同步
异步并发执行
多GPU设备编程
1.3 高级CUDA编程及CUDA程序性能调优
学习目标:
CUDA程序协作
CUDA动态并发
虚拟内存管理
流式有序的内存分配
统一内存编程模型
CUDA程序性能调优
最大化GPU使用率
最大化内存/指令
Minizine memory thrashing
2: CUDA生态基础设施(2 hour)
2.1 GPU网络互联
学习目标:
理解NCCL(NVidia Collective Communication Library)的作用
深入理解NCCL实现的通信原语(Ring-allreduce, Tree-Gather, All-to-All, etc).
掌握NCCL API的使用
了解真实GPU互联的案例 – Azure NDv4
熟悉基于网络图的训练系统
2.2GPU直通存储(GPU direct storage)
学习目标:
熟悉GPU Direct Storage 的基本概念
掌握GDS软件栈和legacy存储软件栈的区别
掌握cuFile的API使用
完整的GDS软硬件系统示例
3: CUDA应用程序库介绍 (2 hour)
3.1 CUDA数值分析库
学习目标:学习掌握数值分析需要的CUDA库, 如cuBlas, cuFFT,cuSolver等
3.2 CV-CUDA库使用介绍
学习目标:学习掌握CUDA计算机视觉算法库(CV-CUDA)的使用,比掌握一些基础算法的实现,如自适应阈值处理,2D卷积运算,直方图统计,和SIFT算子提取。
3.3 cuDNN深度学习库
学习目标:学习掌握使用cuDNN库的API和组成部件,掌握如何使用cuDNN实现深度学习网络,理解cuDNN在深度学习框架pytoch的应用。
3.4 CUDA数据科学库
学习目标:学习掌握cuDF的使用,已经应用案例。了解Nvidia DALI系统。
4: CUDA编程实践 (2 hour)
Cuda “hello world” and Monte Carlo模拟(实验)
3D Laplace finite difference solver (实验)
Reduction and Scan operation and recurrence equations (实验)
Streams and OpenMP Multithreading (实验)
CV: edge detection (实验)
NLP: sequence processing and generation (实验)
讲师简介:
焦一正,美国北卡罗来纳大学教堂山计算机科学博士
• 北卡罗来纳大学教堂山博士
• 研究高性能计算对 GPU,RDMA 等有系统研究
• 研究深度学习框架,熟练掌握 Jax,Pyotch,Mindspore 底层设计。
• 纽约州立大学石溪分校硕士
• 从事操作系统方面的研究
• 发表了多篇计算文件系统相关的会议论文。
• 华中科技大学电信系硕士
• 研究计算视觉应用,如人脸识别,自动驾驶等
• 积累了丰富的计算机视觉和深度学习算法。
焦一正博士在计算机系统软件设计和实现方面有丰富的经历。焦博士在国际顶级会议(SOSP,Eurosys, HostStorage, FAST, SC, PACT, SPAA),和著名杂志(TOS,TOPC)上发表有论文 20 余篇。焦博士对 GPU 的体系架构,GPU CUDA 编程,深度学习算法和软件栈(Pytorch/DeepSpeed 等)有深入研究。焦博士对计算视觉应用(如人脸识别,行人检测,视频监控等)有丰富经验;熟练使用CUDA 库高效实现计算机视觉常用算法。
报名咨询: