- 理解DNN框架中的张量运算在GPU加速器上加速原理。
- 通过CUDA实现和优化一个定制化张量运算。
-
PyTorch==1.5.0
-
CUDA 10.0
- 矩阵运算与计算机体系结构
- GPU加速器的加速原理
-
理解PyTorch中Linear张量运算的计算过程,推导计算公式
-
了解GPU端加速的原理,CUDA内核编程和实现一个kernel的原理
-
实现CUDA版本的定制化张量运算
-
编写.cu文件,实现矩阵相乘的kernel
-
在上述.cu文件中,编写使用cuda进行前向计算和反向传播的函数
-
基于C++ API,编写.cpp文件,调用上述函数,实现Linear张量运算的前向计算和反向传播。
-
将代码生成python的C++扩展
-
使用基于C++的函数扩展,实现自定义Linear类模块的前向计算和反向传播函数
-
运行程序,验证网络正确性
-
-
使用profiler比较网络性能:基于C++API,比较有无CUDA对张量运算性能的影响
-
【可选实验,加分】实现基于CUDA的卷积层(Convolutional)自定义张量运算
硬件环境 | CPU(vCPU数目) | |
GPU(型号,数目) | ||
软件环境 | OS版本 | |
深度学习框架 python包名称及版本 |
||
CUDA版本 | ||
实现方式(Linear层为例) | 性能评测 |
CPU only |
|
With CUDA |
|
代码位置:Lab3/mnist_custom_linear_cuda.py
运行命令:
cd mylinear_cuda_extension
python setup.py install --user
cd .. && python mnist_custom_linear_cuda.py
- CUDA Programming model: https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html
- An Even Easier Introduction to CUDA: https://devblogs.nvidia.com/even-easier-introduction-cuda/
- CUSTOM C++ AND CUDA EXTENSIONS: https://pytorch.org/tutorials/advanced/cpp_extension.html