0

I am preparing to buy a cluster of SOPINE A64 modules for basic (CPU-based) parallel computing, and I noticed that the modules also have GPUs. It wasn't difficult to find that the Mali-400 is not compatible with OpenCL, but I'm having trouble confirming that I would be able to use the OpenGL interface for general-purpose GPU programming. I don't need to do anything fancy; I just want to know if I can offload some of my matrix-heavy tasks to the GPU.

I can find a helpful tutorial on GPGPU programming in OpenGL but it assumes access to GLUT, which isn't available on OpenGL ES 2.0, and the most relevant answer I've found on SE talks about doing what I want on iOS but not with the same GPU.

Is it as simple as using something besides GLUT to set up the OpenGL environment and then following the linked tutorial? Or are there other hardware limitations I need to be aware of?

Nicol Bolas
  • 449,505
  • 63
  • 781
  • 982
KPM
  • 331
  • 1
  • 13

1 Answers1

2

Mali-400 only supports OpenGL ES 2.0, so while you can use it for non-graphical computation beware it comes with some severe limitations.

  • Fragment shaders only support mediump processing, which is FP16 precision.
  • ... but it's not IEEE-754 FP16 - so don't expect full IEEE-754 semantics in the corner cases.
  • Integer processing is more limited than you might expect (i.e. it's just floating point numbers pretending to be integers, so narrower than 16-bit).
  • Outputs have to be via textures, which are some form of 8-bit per channel color format. You can pack wider data into that, but it's not ideal ...
  • Getting that data back on to the CPU is expensive (graphics memory is normally uncached).
Andrea
  • 19,134
  • 4
  • 43
  • 65
solidpixel
  • 10,688
  • 1
  • 20
  • 33