Skip to content

Instantly share code, notes, and snippets.

@Pratham-Bot
Last active November 11, 2023 18:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Pratham-Bot/8eaa15df3d49d2f6a89b2f1d1f606124 to your computer and use it in GitHub Desktop.
Save Pratham-Bot/8eaa15df3d49d2f6a89b2f1d1f606124 to your computer and use it in GitHub Desktop.

GSoC 2023 Final Report: OpenGLES Acceleration for DL

OpenGLES Acceleration for DL

This report summarises the project that I have worked with BeagleBoard.org to accelerate as many layers types as possible using OpenGLES and Darknet as Deep Learning framemork.

Project Overview

The main goal of the project is to accelerate as many types of layers as possible using OpenGLES and Darknet as deep learning frameworks. Accelerating the performance of deep learning models is crucial for real-time applications. GPUs are widely used to accelerate the computations in deep learning models, as they can perform many operations in parallel.OpenGLES is a widely used graphics API that provides a framework for performing computations on GPUs. By using OpenGLES to perform computations, we can leverage the parallel processing power of the GPU to accelerate the performance of deep learning models.

Project Objectives

  • Adding as many layers as possible using Opengles to the darknet framework

Mentors

  • Shreyas Atre
  • Deepak Khatri

Summary

Midterm Evaluation

  • Bechmarked darknet on Host and Beagleboard AI-64
  • Added code for matrix multiplication using shaders.
  • Added compute shader code for im2col, fill_gpu, add_bias and activation function used in forward propogation in convolution nueral network.

Final Evaluation

  • Added convolution layer and generated the output
  • Added Maxpool and Region layer.

Matrix Multiplication Output

Screenshot from 2023-10-22 21-10-00

Convolution layer output

Screenshot from 2023-10-10 19-06-43

My Learnings

  • Understanding of darknet framework.
  • Understanding Opengles.
  • Understanding the need of parallel computing capabilities, improving performance and making it suitable for large-scale neural network training and inference.

Project Status

  • Although the maxpool layer previously verifies the boundary conditions, the output of the layer surpassed the boundary check conditions during printing. Therefore, in order to guarantee correct output values, this function needs to be constructed more effectively.
  • There is some work to be done on the region layer logic. Even though I've included the logic in the shader, the entry_index function code still has to be added. Boundary checks must also be performed for this layer.
  • Benchmarking needs to be done for this layers in CPU as well as in GPU.
  • It is necessary to add more neural network layers with Opengles.

Acknowledgement

I am deeply grateful to the BeagleBoard Community for giving me the incredible opportunity to participate in the Google Summer of Code (GSoC) program. My mentors, Shreyas Atre, Deepak Khatri, and Kumar Abhishek, have been instrumental in guiding and supporting me throughout this project. Their expertise and dedication have been invaluable.

I would also like to extend my appreciation to the entire BeagleBoard Community for their open-source contributions and collaborative spirit. This experience has been a significant stepping stone in my journey as a software developer, and I look forward to continued contributions to this vibrant community.

Future Scope

  • Adding region layer and maxpool layer(some part of it is completed till now).
  • Adding other layers in the neural networks framework.

Contact

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment