Для компилятора Clang (http://clang.llvm.org/), развиваемого в рамках проекта LLVM, подготовлена (http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/03159... реализация поддержки стандарта OpenMP (http://ru.wikipedia.org/wiki/OpenMP) (Open Multi-Processing), позволяющего задействовать методы параллельного программирования в программах на языках Си и Си++. В настоящее время полностью реализована поддержка спецификаций OpenMP 3.1 (https://www.opennet.ru/opennews/art.shtml?num=31153) и частичная поддержка OpenMP 4.0 (https://www.opennet.ru/opennews/art.shtml?num=37635). Разработка была начата работником AMD и доведена до конца сотрудниками Intel, которые проделали большую часть работы.
В настоящее время наработки проекта OpenMP/Clang доступны в виде патчей (https://github.com/clang-omp/) для Clang 3.3. В будущем планируется выпускать обновления для всех новых выпусков Clang, синхронизировать патчи OpenMP с состоянием trunk-ветки Clang и добиться их включения в основную кодовую базу Clang/LLVM. Для работы собранных в Clang OpenMP-приложений требуется установка открытой runtime-библиотеки Intel OpenMP Runtime Library (http://www.openmprtl.org/). Реализация OpenMP 3.1 успешно проходит все известные тесты на совместимость с OpenMP, в том числе SPEC OMP2012, проверочный пакет OpenUH и тестовый набор Intel.
По производительности и масштабируемости поддержка OpenMP для Clang находится примерно на одном уровне с другими компиляторами, поддерживающими данную спецификацию. В GCC поддержка OpenMP была интегрирована (http://gcc.gnu.org/projects/gomp/) в компиляторы Си, Си++ и Фортран начиная с ветки 4.2 (http://gcc.gnu.org/gcc-4.2/changes.html), выпущенной в 2007 году. Отсутствие поддержки OpenMP в Clang долгое время упоминалось в качестве существенного недостатка данного компилятора, теперь проблема со сборкой параллельно выполняемого кода в Clang осталось в прошлом.
URL: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/03159...
Новость: https://www.opennet.ru/opennews/art.shtml?num=37790