GSoC 2019 GPGPU project

Hello,
I’m interested in working on the GPGPU project. I’ve done GPGPU work before, which you can see here. That program is written using the Vulkan API, however I have some experience with OpenGLES.

My questions are:
Can the example programs have some kind of graphical output? Will I be allowed to use the Beagle Board’s video capabilities?
Do Beagle Boards support Vulkan?

Additionally, I don’t think the suggested tasks would take an entire summer to write. Should I also include other GPGPU tasks in my proposal?

Thank you,
Ryan Vazquez

Hello,
I'm interested in working on the GPGPU project. I've done GPGPU work
before, which you can see here <https://github.com/vazgriz/VkColors>. That
program is written using the Vulkan API, however I have some experience
with OpenGLES.

My questions are:
Can the example programs have some kind of graphical output? Will I be
allowed to use the Beagle Board's video capabilities?

Can you clarify what do you mean by this? GLES uses the video capability? Are
you referring to sample programs that show the output on a screen? When I
posted the idea, what I had in mind was an example to show how the GLES
hardware can be used in a headless case for computation. Depending on the
version of the GLES drivers, integration with X11 may not be working. So the
lowest common denominator is to use the direct output EGL and render to a "off
screen" texture. The off screen texture part is nice to have but can be worked
around in HW (i.e. it can be made invisible if the video hw is muxed out).

Consider a possible flow:
- 2D data is captured (say from a USB camera)
- 2D data is loaded as a texture
- Convolve it with a kernel
- The 2D data is retrieve and written out

Prehaps another variant is 1D data going through a similar flow.

It would be nice to be able to repeat the load data to texture, convolve, and
retrieve in a loop for benchmarking.

Do Beagle Boards support Vulkan?

No. The drivers are limited to GLES 2.

Additionally, I don't think the suggested tasks would take an entire summer
to write. Should I also include other GPGPU tasks in my proposal?

I suggest addressing these points and possible others:

- Value of being able to leverage the GPU even with the limited proprietary
drivers (GLES 2 support only).

- How do you plan to deal with getting the GLES drivers? Please search the
Beagle mailling list for reports of various issues.

- Prehaps identifying what is the threshold of processing that is needed to
make the GPU useful for computation. Put it another way, the transfers to and
from the GPU are not cheap so the GPU needs to do amount of work to make it
worthwhile compared to other accelerations on the BeagleBone. The threshold
may be in terms of any combinations of datasize, computations, and prehaps
other factors. At the end of the summer, this should just be a dump of various
shader codes. It should also show this is useful.

I monitor the #beagle-gsoc channel. Discussions there may be helpful.

Thank you for your response. Would you be the mentor for this project?

Hi Ryan,

Possibly. Mentor assignments aren't made til later. A project may be assigned
multiple mentors as each of us has different speciality skills.

Hi Ryan,

I too have done a project realizing GPGPU processing on an embedded system (though the RPi). I also originally intended to realize GPGPU computing with OpenGLES 2.0 on the RPi, though for me at least it proved to be quite difficult/strenous.

I was inspired by Eric Lorimer’s blog post [1] who wrote a general purpose GPU assembler to realize the GPGPU processing and I even expanded upon his assembler quite a bit, including writing a whole documentaiton for this custom GPU assembler. If you are interested in going this way I might document my project a bit better and publish it so you may know what to look out for and it may give you some ideas. Best of luck either way!

[1] https://rpiplayground.wordpress.com/2014/05/03/hacking-the-gpu-for-fun-and-profit-pt-1/