Рассмотрим следующий случай параллельного for
/do
-loop:Что произойдет, если один поток OpenMP завершится с ошибкой?
PARALLEL DO
thread 1 thread 2
line 1 line 1
line k -> line k
-> line l line l
line n line n
Теперь нить 1 встретит исключение или ошибка (сбой сегментации) на линии l
и заканчивается. Что произойдет с потоком 2? Он немедленно остановится? Продолжит ли он также линию l
(независимо от того, содержит ли она там ту же ошибку)? Продолжит ли он следующий шаг синхронизации? Или на следующий шаг, когда он обращается к общей памяти обоих потоков (в частности, к устройствам вывода, таким как стандартная ошибка)?
Я не нашел подсказки в спецификациях OpenMP 4.0.
Возможно, лучше разместить это на форуме OpenMP, где его увидят эксперты. В любом случае, вы захватываете segfault? – Jeff