I know that I am late in the game, however, I have some
comments + questions to this patch, i.e. to
r17-2288-gab0dd7d5e16fcd
openmp: Add OMPT entry points for worksharing-loop, single, and
masked constructs
https://gcc.gnu.org/r17-2288-gab0dd7d5e16fcd
First:
This commit addsGOMP_masked_end such that:
#pragma omp masked filter(2)
D.3135 = __builtin_GOMP_has_masked_thread_num (2);
if (D.3135 != 0) goto <D.3136>; else goto <D.3134>;
<D.3136>:
...
__builtin_GOMP_masked_end (); // only with -fopenmp-ompt
<D.3134>:
#pragma omp return(nowait)
Thus, it call num_threads() times the thread_num function and
only once (for the filtered thread) the 'masked_end' function.
[That's fine.]
Now to my question: How can the OMPT runtime distinguish whether
there is a single masked/master call vs. a begin/end
call?
For one version, one has to call the tool with:
ompt_scope_beginend
while for the other version, one needs:
ompt_scope_begin
and
ompt_scope_end
but, currently, there is no way to distinguish the two.
Thus: Can you add a GOMP_masked_begin function in addition?
* * *
Regarding the documentation (current version at ...)
https://gcc.gnu.org/onlinedocs/gcc/OpenMP-and-OpenACC-
Options.html#index-fopenmp-ompt
First, I find the second part/clause of the first sentence in
-fopenmp-ompt-detail in particular confusing:
Like @option{-fopenmp-ompt}, and additionally emit calls into
libgomp, enabling
OMPT dispatch callbacks that get called at the beginning of each
workshare chunk
for statically scheduled @code{for} and @code{distribute}. Requires
@option{-fopenmp}.
Maybe: "On top of -fopenmp-ompt, emit additional calls into libgomp,"
as minimal change - or even smaller change:
"Like -fopenmp-ompt, emit additional calls into libgomp,"
However, I wonder whether the whole should be completely differently
worded;
for instance:
-fopenmp-ompt
For some OpenMP constructs, generate calls before and after the
region instead of only on region entry. This improves the OMPT
tracing at expense of additional calls. In particular, the
additional calls will be added for static worksharing loops,
static worksharing @code{dispatch}, and the @code{single},
@code{masked}, and @code{master} construct.
Requires @option{-fopenmp}.
-fopenmp-ompt-details
Add additional calls into the OpenMP runtime that might affect
the performance but further improves OMPT tracing. In particular,
dispatch callbacks are generated at the beginning of each workshare
chunk for static worksharing loops and
static worksharing @code{dispatch}. This option implies
@option{-fopenmp-ompt}. Requires @option{-fopenmp}.
What do you think?
Tobias