В настоящее время, глядя на this руководство по использованию OpenMP с/C программ C++ и интересно, что они подразумевают под creating a magic function
в следующей цитаты:Что такое магия функция в C/C++ (в отношении OpenMP)
Внутренне , GCC реализует это, создавая магическую функцию, и перемещает связанный код в эту функцию, так что все переменные , объявленные в этом блоке, становятся локальными переменными этой функции (и, следовательно, locals для каждого потока). ICC, с другой стороны, использует механизм, напоминающий fork(), и не создает волшебную функцию . Обе реализации, конечно, действительны и семантически идентичны.
Неправильное руководство. ICC также выполняет функцию, обозначающую то же, что и GCC. Рабочая среда Intel OpenMP даже содержит уровень совместимости GCC и может использоваться с программами, скомпилированными с помощью GCC. Компилятор PGI - тот, который этого не делает. –
См. [Этот ответ] (http://stackoverflow.com/a/18789429/1374437) для некоторого понимания. –