Увидел свет (http://openmp.org/wp/2013/07/openmp-40/) набор спецификаций OpenMP 4.0 (http://openmp.org/wp/openmp-specifications/) (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран. Ключевыми нововведениями OpenMP 4.0 стали поддержка ускорения за счет привлечения мощностей GPU, значительные улучшения в модели выполнения задач, добавление механизмов обработки ошибок и поддержка определенных пользователем редукций.
Новые возможности в API версии 4.0 включают в себя:
- Поддержка ускорения вычислений за счёт задействования дополнительных аппаратных вычислительных устройств, таких как GPU. С рядом производителей была проделана значительная работа для обеспечения поддержки разнообразных вычислительных устройств. Теперь API OpenMP предоставляет механизмы, позволяющие указать, что некая область кода и/или данных должны быть обработаны с использованием другого вычислительного устройства. Уже реализовано несколько прототипов поддержки различных акселераторов.
- Для векторизации последовательных и параллелизированных циклов задействованы инструкции SIMD (http://ru.wikipedia.org/wiki/SIMD). Поскольку в подавляющем большинстве современных процессоров есть SIMD блоки, существует необходимость в кроссплатформенном доступе к подобным возможностям CPU. API OpenMP 4.0 предоставляет механизмы для указания того, как распараллелить циклы с использованием инструкций SIMD и как определить версии функций, которые можно вызывать в блоках, использующих SIMD.
- Обработка ошибок. API OpenMP 4.0 теперь предоставляет средства для обработки ошибок, что должно повысить надежность и стабильность приложений OpenMP при наличии системных ошибок, ошибок времени выполнения ("runtime-level errors") и ошибочных ситуаций, определенных пользователем. Определена возможность прекращения параллельного выполнения, основанная на условной отмене и определяемых пользователем точках отмены выполнения.
- Привязка потоков (Thread affinity). API OpenMP 4.0 предоставляет механизмы для указания где именно выполнять потоки OpenMP. При этом обеспечивается разделение специфики платформ от алгоритмов.
- Параллелизм на уровне задач (Tasking extensions). API OpenMP 4.0 предоставляет ряд расширений для поддержки параллельного выполнения на уровне задач. Задачи можно группировать для обеспечения их глубокой синхронизации. Группа задач может быть прервана целиком, что может применяться для совместно выполняемого набора задач, таких как поиск, в ситуации, когда нахождение желаемого результата завершает всю группу совместно работавших над его получением задач. Также поддерживается синхронизация задачи с задачей, путем определения зависимостей.
- Поддержка Fortran 2003. Стандарт Fortran 2003 вобрал в себя множество возможностей современных языков программирования. Поддержка Fortran 2003 позволяет параллелизировать программы на данном языке программирования. Кроме всего прочего, это включает в себя поддержку взаимодействия Fortran и C.
- Определяемые пользователем редукции (http://ru.wikipedia.org/wiki/%D0%A0%D0%B...) (User-defined reductions). Ранее API стандарта OpenMP поддерживал редукцию с использованием базового языка операторов и внутренних процедур. API OpenMP 4.0 предоставляет средства для определения редукций пользователем.
- Атомарная последовательная консистентность (http://ru.wikipedia.org/wiki/%D0%9F%D0%B...) (Sequentially consistent atomics). Добавлена конструкция, позволяющая программисту принудительно применять последовательную консистентность для областей хранения, поддерживающих атомарный доступ.
URL: http://openmp.org/wp/2013/07/openmp-40/
Новость: http://www.opennet.dev/opennews/art.shtml?num=37635
[сообщение отредактировано модератором]