OpenMP and Allocate

I can imagine multiple sources of variability:

  • threads have different workloads
  • frequency differences between cores (say, as a result of AVX instructions)
  • the CPU’s have different (for example mobile devices have fast and slow cores),
  • latency due to the non-uniform memory system (measured here: Core to Core Latency Data on Large Systems – Chips and Cheese)

If your tasks are very heterogeneous, perhaps adding schedule(dynamic) to the work-sharing constructs could help? I’ve found these four presentations, all from Ruud van der Pas, very informative:

(Edit: since it’s SC23 week, there is a nice series of OpenMP booth talks newly available here: Supercomputing 2023 - OpenMP)

@ivanpribec
Another source of variability you did not list is the OpenMP Version that is supported by the Fotrtran compiler being used.
Understanding which Ver 5+ is available is both confusing and disheartening, as I have put off progressing my understanding the implication of Heap being shared between threads many times.
I have not been able to locate my earlier work on management of new arrays to heap or stack via compiler options, which I did a few years ago.