Skip to content

Latest commit

 

History

History
86 lines (54 loc) · 2.5 KB

README.md

File metadata and controls

86 lines (54 loc) · 2.5 KB

Lab 3 - CUDA实现和优化

实验目的

  1. 理解DNN框架中的张量运算在GPU加速器上加速原理。
  2. 通过CUDA实现和优化一个定制化张量运算。

实验环境

  • PyTorch==1.5.0

  • CUDA 10.0

实验原理

  1. 矩阵运算与计算机体系结构
  2. GPU加速器的加速原理

实验内容

实验流程图

具体步骤

  1. 理解PyTorch中Linear张量运算的计算过程,推导计算公式

  2. 了解GPU端加速的原理,CUDA内核编程和实现一个kernel的原理

  3. 实现CUDA版本的定制化张量运算

    1. 编写.cu文件,实现矩阵相乘的kernel

    2. 在上述.cu文件中,编写使用cuda进行前向计算和反向传播的函数

    3. 基于C++ API,编写.cpp文件,调用上述函数,实现Linear张量运算的前向计算和反向传播。

    4. 将代码生成python的C++扩展

    5. 使用基于C++的函数扩展,实现自定义Linear类模块的前向计算和反向传播函数

    6. 运行程序,验证网络正确性

  4. 使用profiler比较网络性能:基于C++API,比较有无CUDA对张量运算性能的影响

  5. 【可选实验,加分】实现基于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

参考资料