В Clang обеспечена полноценная поддержка OpenMP

Разработчики проекта LLVM объявили о реализации в компиляторе Clang полной поддержки стандарта OpenMP 3.1 (Open Multi-Processing), предоставляющего средства для применения методов параллельного программирования в программах на языках Си и Си++. OpenMP открывает перед пользователями Clang возможность использования всей мощи современных многоядерных процессоров с блоками векторизации. Доступны как средства обеспечения параллелизма на уровне задач (распараллеливание функций и циклов), так и параллелизма на уровне данных (векторизация, распараллеливание типовых операций над массивами данных). В том числе реализованы комбинированные директивы, такие как »#pragma omp parallel for» и »#pragma omp parallel sections», а также элементы стандарта OpenMP 4.0. Частично реализованы атомарные операции (»#pragma omp atomic») и средства векторизации последовательных и параллелизированных циклов на процессорах с поддержкой инструкций SIMD (»#pragma omp simd»).

Реализация OpenMP в Clang базируется на открытой компанией Intel runtime-библиотеке OpenMP, которая связывается с итоговыми OpenMP-приложениями и выполняет диспетчеризацию потоков в процессе выполнения OpenMP-программы. Из особенностей библиотеки отмечается поддержка различных аппаратных архитектур (x86, x86_64, PowerPC, ARM), высокая производительность и совместимость на уровне ABI с GCC и проприетарными OpenMP-компиляторами Intel.

Для сборки программы с задействованием OpenMP достаточно указать при компиляции опцию »-fopenmp», а также пути к заголовочному файлу (»-I путь к omp.h») и библиотеке (»-L путь к библиотеке openmp»).

©  OpenNet