- CUDA安装
- cudnn安装
- 在vscode中配置自己task, launch, C/C++扩展
- 测试自己的配置,提供案例代码
- 下次直接复制就好了
- g++ 1.1 g++ 介绍 1.2 g++编译的过程 1.3 预处理 1.4 汇编 1.5 编译 1.6 链接
- C++编译链接 / 编译时和运行时 2.1 C++编译链接流程图 2.2 C++声明和实现的区别
- C++编译过程
- C++链接过程
学习使用maikefile建立自己的工程模板
- Makefile初探
- makefile基本语法(够用就行)
- 代码域: 变量定义域,依赖项定义域,command(shell语法)
- 基础语法
- 写一个小demo
- 逐行解释这个小demo
- 往下走
- 完整学习整个makefile文件
- 定义源码路径
- 定义名称参数
- 定义头文件,库文件和链接目标
- 定义编译选项
- 合并选项
- 把合并后的选项给到编译器选项
- 定义cpp cuda编译方式
- 在workspace下编译出可执行文件
- 定义伪标签, 作为指令
- 完整的makefile文件
- 为什么学习TensorRT需要学习CUDA编程
- 先验知识:
- 为什么要学习Driver-API?
- CUDA驱动API-初始化: cuInit
- cuInit案例完整代码
- CuInit案例解析
- 字符串的复习
- CUresult
- CUresult CUDAAPI cuDriverGetVersion(int *driverVersion);
- CUresult CUDAAPI cuDeviceGetName(char *name, int len, CUdevice dev);
- 不带Cuinit的整体
- 带Cuinit的整体结构
- 案例(Cuda-Driver API 1.2)
- 完善check功能(Cuda-Driver API 1.3)
- 完善版本的整体解读
- 通过这个案例复习宏定义
- 完整自己理解注释版
- CUcontext上下文管理
- 从两段代码看context的效率
- 还是复杂,继续简化 cuDevicePrimaryCtxRetain
- 代码
- 整体代码流程解析
- 思路
- 整体代码
- CUDdeviceptr以及复习数据结构
- 锁页内存
- cuMemset
- 释放锁页内存
- CUDA Driver API和CUDA Runtime API
- 两种API的区别
- 第一个CUDA RunTime API 程序Hello CUDA
- 分解这个案例
- 流的定义
- 同步和异步
- 注意的地方
- 代码案例
- 核函数的定义
- main.cpp文件及详细解释
- kernel.cu文件及其详细解释
- 共享内存的引入
- CU文件
- cpp文件
- 代码解析解析
- demo1(静态共享内存和动态共享内存)
- demo2(共享变量)
- 知识点
- 图解知识点
- main.cpp文件
- cu文件
- 代码拆解
- cu文件解读
- 整体代码
- 单个流串行
- 向量相加相乘的kernel function
- 多个流的异步
- 多个流之间互相等待的操作
- 知识点
- main.cpp文件
- 案例.cu文件
- 知识点
- main.cpp文件详细注释版本
- kernel.cu文件解读
- 核函数内部
- 仿射变换
- 双线性插值
- 代码的整体思路
- 原版代码main.cpp文件
- 原版affine.cu
- 拆解代码
- warp_affine_bilinear()详细注释版
- 知识点和先验知识
- kernel函数的简单了解
- main.cpp 中的int main()
- load_file
- cpu decoder
- gpu decoder
- gpu_decode.cu文件 void decode_kernel_invoker()
- kernel函数decode_kernel
- fast_nms_kernel
- box_iou
- 总结