OpenMP теперь доступен в Clang!

в 4:11, , рубрики: c++, clang, openmp, Блог компании Intel, Компиляторы, параллельное программирование, метки: , ,

Скоро первое сентября. Кто-то собирается в школу, кто-то — в институт. А мы предлагаем начать новые проекты с компилятором clang, который теперь поддерживает OpenMP!

Проект доступен здесь. Сейчас в его основе лежит clang 3.3. Небыстрый процесс ревью уже идет, и скоро код будет залит в транк clang'а, а значит войдет в его новые релизы.

Реализована полная поддержка стандарта OpenMP версии 3.1. Успешно проходятся следующие тесты: набор для валидации OpenMP от OpenUH Research Compiler, SPEC OMP2012 и внутренние тесты Intel. Исполняемый код c OpenMP, собранный clang'ом, демонстрирует производительность, сравнимую с другими компиляторами, поддерживающими OpenMP.
В качестве библиотеки времени выполнения использована библиотека Intel OpenMP Runtime Library, также доступная под свободной лицензией.

Не будем долго расписывать все достоинства спефикации OpenMP, скажем лишь, что это индустриальный стандарт для параллелизации программ с общей памятью. Это свидетельствует о достижении значительного этапа развития clang'а, сфера применения которого стала еще шире.

Проект был начат Mahesha HS и выполнен несколькими инженерами Intel из Москвы, среди которых можно выделить Алексея Батаева. Ревью кода проводили Hal Finkel, Дмитрий Грибенко и Doug Gregor.

Замечания по коду, тесты или найденные ошибки крайне приветствуются (не забываем о том, что github — открытая площадка) — мы будем очень благодарны Вам за это.

И напоследок:

$ cat hello.c
#include <stdio.h>
int main() {
    #pragma omp parallel
    printf("Hello, Habr!n");
}
$ clang -fopenmp hello.c -o ./hello_habr
$ ./hello_habr
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!
Hello, Habr!

Автор: RainM

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js