zhengxuan-luan / ai-system-lab3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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数目) 8 Intel(R) Core(TM) i5-8300H CPU
@ 2.30GHz
GPU(型号,数目) GeForce GTX 1050 Ti Mobile
软件环境 OS版本 ubuntu 18.04
深度学习框架
python包名称及版本
pytorch-gpu 1.5.0
CUDA版本 cuda 10.01

实验结果

实现方式(Linear层为例)         性能评测


CPU only

 


With CUDA

 

参考代码

代码位置:Lab3/mnist_custom_linear_cuda.py

运行命令:

cd mylinear_cuda_extension
python setup install --user
cd ..& python mnist_custom_linear_cuda.p

参考资料

About


Languages

Language:Python 84.2%Language:Cuda 9.9%Language:C++ 5.9%