Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
doc
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Things to learn for new students in Lab615

Basic Engineering Skills You Have to Master

Software Programming

Learn the following two programing langrages

  • C/C++ (C99/C++11)
  • Python (v3.0)

Do the following projects to practice and learn good habits when programming in C

Here's another good repo that has lots of good projects for you to practice.

Learn the following Good Coding Styles and use them in your research projects:

Some other good projects based on C/C++

Deep Learning Frameworks

Excellent Deeplearning Project Using Pytorch

There are many good examples that we have collected from github, and students can learn how to write "good" pytorch codes by reading and modifying the codes from these example project. A more complete list is here.

How to setup the GPU and Pytorch environment

Pytorch安装说明

Hardware Basic Knowledge

Read the following two books to learn basic concepts for digital circuit design and computer architecture.

Digital Circuit/Logic Design

Important concepts to understand include combinatonal logic and sequential logic (组合逻辑和时序逻辑), register寄存器(Flip-Flop circuit), FSM状态机, counter计数器, decoder/encoder编码器和译码器, FIFO, RAM, etc. Read the following two books:

  • ''数字逻辑设计与计算机组成, 戴志涛等,机械工业出版社''
  • "Digital Logic"

Computer Architecture

Important concepts to understand include pipeline, memory hierarchy, roofline model, Amdahl's law, ILP (instruction level parallelism), TLP (task level parallelism), DLP (data level parallelism), SIMD/VLIW processor, etc. Read the following two books:

More reading:

FPGA Design

After you have basic knowledges on digital circuit and computer architectures, you could learn FPGA design or heterogenours computing (using FPGA as accelerators). We recommand using HLS (High-level Synthesis)-based schemes (C/C++-based HLS or OpenCL) rather than RTL-level programming (i.e., Verilog and VHDL) to design application specific circuit on FPGAs. Read the following book to learn OpenCL programing (GPU/FPGA):

Also, refers to Intel/Xilinx's OpenCL user guide to learn specific techniques that will be used in the project.

Finally, learn our opensource project PipeCNN. Run the examples, such as caffenet, vgg-16, resnet, YOLO on the DE10-nano and DE5-net platforms. Learn how to configure, compile, debug the source codes and profile the performance of the accelerator.

Zhang DeZheng has wrote a good study note on PipeCNN, please read it here.

Information on the FPGA boards used in our lab here.

A list of GOOD FPGA accelerator design can be found here

GPU Design

Learn TensorRT and CUDA programing. Try examples on our TX2/TK1 platforms.

Research Related Topics

First, students should read the following artichles to learn how to write research papers.

Secondly, read the following selected papers in each research topics, which are really good examples in the related fields.

Tutorials for Hardware Architectures for DNN

Students who are working on hardware designs for deep neural networks should read the following tutorials.

FPGA Accelerator Design

  • Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks, FPGA 2015.
  • Throughput-Optimized OpenCL-based FPGA Accelerator for Large-Scale Convolutional Neural Networks, FPGA 2016.
  • An OpenCL Deep Learning Accelerator on Arria 10, FPGA 2017.
  • Improving the Performance of OpenCL-based FPGA Accelerator for Convolutional Neural Network, FPGA 2017.
  • A Framework for Generating High Throughput CNN Implementations on FPGAs, FPGA 2018.
  • An Efficient Hardware Accelerator for Sparse Convolutional Neural Networks on FPGAs, FCCM 2019.

The following survery papers are also worth reading.

  • A Survey of FPGA Based Neural Network Accelerator, ACM TRETS 2017.
  • Deep Neural Network Approximation for Custom Hardware: Where We’ve Been, Where We’re Going, ACM Computing Surveys 2019.

Our own research papers on FPGA accelerators:

  • PipeCNN: An OpenCL-Based Open-Source FPGA Accelerator for Convolution Neural Networks, FPT 2017
  • ABM-SpConv: A Novel Approach to FPGA-Based Acceleration of Convolutional Neural Network Inference, DAC 2019

A more complete paper list is here.

Sparse Convolution Design

A more complete list is here.

Neural network optimization (quantization, pruning, et.al.)

Neural Network Quantization

  • Ristretto: A Framework for Empirical Study of Resource-Efficient Inference in Convolutional Neural Networks, IEEE T-NNLS 2018.
  • 8-bit Inference with TensorRT, Nvidia 2017.
  • Quantizing deep convolutional networks for efficient inference: A whitepaper, Google, 2018.

A more complete list is here.

Network Pruning and Compression

A more complete list is here.

Neural Architecture Search (NAS)

A more complete list is here.

Object Detection

A more complete list is here.

About

Things to learn for new students in Lab611.

Resources

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.