Есть много ответов на другие сообщения, связанные с проблемой стекового пространства, OpenMP и как с этим бороться.Однако я не смог найти информацию, чтобы по-настоящему понять, почему OpenMP настраивает параметры компилятора:
Какова причина, по которой -fopenmp
в gfortran подразумевает -frecursive
?
В документации сказано:
Разрешить косвенную рекурсию путем принудительного размещения всех локальных массивов в стеке
Однако у меня нет контекста, чтобы это понять.Почему для распараллеливания требуется косвенная рекурсия?
Почему при распараллеливании все локальные массивы должны находиться в стеке?
Я хочу понять, чтобы я знал о последствиях переопределения этих опций, скажем, с помощью -fmax-stack-var-size=n
, чтобы избежать проблем с переполнением стека.