BeagleBoard/GSoC/2021ProposalGPGPU

=ProposalTemplate = About Student: Mentors: Hunyue Yau? Code: ... Wiki: https://elinux.org/BeagleBoard/GSoC/2021ProposalGPGPU GSoC: ...

=Status= This project is currently just a proposal.

=Proposal= Please complete the requirements listed on the ideas page and fill out this template.

About you
IRC: steven100 Github: StevenSchuerstedt School: Karlsruhe Institute of Technology Country: Germany Primary language (We have mentors who speak multiple languages): German, English Typical work hours (We have mentors in various time zones):5AM - 3PM US Eastern Previous GSoC participation: I love the idea of open source and especially open hardware.

About your project
Project name: GPGPU with OpenGL ES

Description
The beagleboard ARM A8 Processor has an integrated graphics accelerator from PowerVR (SGX530 or 550). As the name implies this chip is mainly used and built for graphics rendering, but as the time shows there exist alot of other applications that profit from the parallel nature of graphic chips, like deep learning, bitcoin mining or analyzing DNA sequences. This is called GPGPU (general purpose computations on graphic processing units) and is done with api's like OpenCL or CUDA. The PowerVR SGX only supports the OpenGL ES 2.0 specification (but there also exist a propiertary openCL driver from IT https://university.imgtec.com/fun-with-beagle-video/ ??), this api is heavily targeted towards graphics rendering, but can also be exploited for general purpose computations. The goal of this project is, to show how to use the mostly unused graphics accelerator chip for general purpose computations using the OpenGL ES api. Therefore I will create samples, showing how to use the GPGPU and also show the timing difference when doing computations on CPU vs GPU. The samples could be convolution or matrix multiplication. The samples and techniques shown, are applicable for all beagleboards, but maybe most relevant for BBAI, as it has the best gpu. IT also released a OpenCL driver for the SGX 530. I will also measure timings between OpenCL / OpenGL for GPGPU. For this project we target the AM335x family of beagleboards (pocketbeagle), why??

- ARM neon intrinsics

- BBAI (SGX 544)

- upstream? what happens after GSoC

- vector addition example (=> sum reduction?)

Implementation: - set up drivers for BB

- GPGPU needs to be done with Vertex / Fragment shader in OpenGL ES

- send data to GPU with textures / uniforms / vertex arrays

- set correct texture type, how to access specific element

- do computation on framebuffers (only off screen rendering)

- read back results with glReadPixel

Timeline
Provide a development timeline with a milestone each of the 11 weeks and any pre-work. (A realistic timeline is critical to our selection process.)

Experience and approach
In 5-15 sentences, convince us you will be able to successfully complete your project in the timeline you have described.

Contingency
I will just keep trying, there is no shame in failure, just in giving up. So if I dont give up I will eventually succed.

Benefit
Enable more people to use the GPU on a beagleboard. Accelerate computations. Free up the main processor to do other stuff. If successfully completed, what will its impact be on the BeagleBoard.org community? Include quotes from BeagleBoard.org community members who can be found on http://beagleboard.org/discuss and http://bbb.io/gsocchat.

Misc
Please complete the requirements listed on the ideas page. Provide link to pull request.

Suggestions
Is there anything else we should have asked you?