Discussion about OpenMP supprot for Linux

What are your thoughts about support of OpenMP for Linux.
What comes into my mind is:

  • Multithreading, as ArduPilot stresses one core already a lot
  • Vectoring
    I initially, I wanted to push some of this stuff into AP_Math, but there was a strong opposition, which I partially understand.
    However, there are other parts in the library which may also profit from OpenMP.
    The clear benefit would that the execution time of a function decreases, so that the chance that the scheduler misses a function gets minimized.
    I think if the RPi has already several cores, it would be nice if the user could decide how processing time is distributed.
    Disadvantage would be dependent on the function a small overhead and maybe slightly increased complexity of the code.

I don’t know OpenMP very much (juste look at it after reading you post and try some example).
I don’t know if we will have much gain at using it, as far as I remember it only take between 20-40% of beaglebone black single CPU. So we are far from overload a cpu.
Just thinking now, that it could be beneficial for optical flow or avoidance system by setting better RT constraint…

About your AP_Math, I was in favor (even if I am not in the dev team) …but you know, in opensource, most job part is to convice other that your changes are beneficials ! I hope to push more beneficials c++11/17/etc. too
An hard work could be to finish Test and Performance frameworks, in that way, it should be easier to point out improvements to all !

Developpement section lacks of answer generally… don’t forget to say about it in gitter channel to trigger more attention !