[Bug libgomp/63700] New: Is is impossible to set the OpenMP stack size from inside a program
walter.zimmer at dlr dot de
gcc-bugzilla@gcc.gnu.org
Fri Oct 31 15:17:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63700
Bug ID: 63700
Summary: Is is impossible to set the OpenMP stack size from
inside a program
Product: gcc
Version: 4.9.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgomp
Assignee: unassigned at gcc dot gnu.org
Reporter: walter.zimmer at dlr dot de
CC: jakub at gcc dot gnu.org
We have a binary which uses a lot of stack due to external libray we have no
control over. Single threaded, this is no problem, setrlimit() works fine. But
for OpenMP, setting OMP_STACKSIZE seems to be the only option so set the stack
size for OpenMP threads.
Unfortunately, it can't be set from within the program, as the libgomp code is
always executed before the main program code. We also tried __attribute__
((constructor)) and section(".init"), but for shared links, the libgomp code is
always called before we can set rlimit or OMP_STACKSIZE (nice to see with
OMP_DISPLAY_ENV).
We really want to avoid having external dependencies, so we try to avoid having
to set external environment variables.
Having a small routine which sets the OpenMP internal stack size before the
first threads are created would solve this problem. Such a routine is not
specified in the standard, but it might be implemented as a gomp routine to
account for that.
Or did I miss something? Is this behaviour maybe intentional? What would be the
best solution to set the OpenMP stack size inside a program?
More information about the Gcc-bugs
mailing list