В 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»).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.