https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96844
rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rsandifo at gcc dot gnu.org
Last reconfirmed| |2023-01-16
See Also| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=44833
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #2 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org>
---
I got an internal Arm report about the same behaviour. Like you say, they
don't see the problem with LLVM's and Intel's libraries.
https://github.com/xianyi/OpenBLAS/pull/3546#issuecomment-1153914479 is a
discussion about the same problem in an OpenBLAS context.
Some other places where the question has come up:
- https://stackoverflow.com/a/52821175
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71781
I suppose the question is what to do instead. As
[https://github.com/xianyi/OpenBLAS/pull/3546#issuecomment-1154817082]
says, past behaviour isn't necessarily an indication of future behaviour, so a
simple counter- or time-based reaping heuristic is likely to create unexpected
cliff-edges.
>From my reading of the LLVM libomp sources, it looks like it doesn't reap
threads until:
- library shutdown
- omp_pause_resource(omp_pause_hard, ...) or
omp_pause_resource_all(omp_pause_hard) is called
(__kmp_allocate_team also reaps teams that are too small for the request, but
the comments indicate that that's temporary.)
I could well be wrong: there could well be other situations in which LLVM reaps
threads too.
Still, would it be OK/useful to have an environment variable that selects the
same behaviour in libgomp?