The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпущены спецификации OpenMP 4.0

10.08.2013 14:47

Увидел свет набор спецификаций OpenMP 4.0 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран. Ключевыми нововведениями OpenMP 4.0 стали поддержка ускорения за счет привлечения мощностей GPU, значительные улучшения в модели выполнения задач, добавление механизмов обработки ошибок и поддержка определенных пользователем редукций.

Новые возможности в API версии 4.0 включают в себя:

  • Поддержка ускорения вычислений за счёт задействования дополнительных аппаратных вычислительных устройств, таких как GPU. С рядом производителей была проделана значительная работа для обеспечения поддержки разнообразных вычислительных устройств. Теперь API OpenMP предоставляет механизмы, позволяющие указать, что некая область кода и/или данных должны быть обработаны с использованием другого вычислительного устройства. Уже реализовано несколько прототипов поддержки различных акселераторов.
  • Для векторизации последовательных и параллелизированных циклов задействованы инструкции 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.
  • Определяемые пользователем редукции (User-defined reductions). Ранее API стандарта OpenMP поддерживал редукцию с использованием базового языка операторов и внутренних процедур. API OpenMP 4.0 предоставляет средства для определения редукций пользователем.
  • Последовательно консистентные атомарные операции (Sequentially consistent atomics). Добавлена конструкция, позволяющая программисту принудительно применять последовательную консистентность для областей хранения, поддерживающих атомарный доступ.


  1. Главная ссылка к новости (http://openmp.org/wp/2013/07/o...)
Автор новости: Аноним
Тип: К сведению
Ключевые слова: openmp
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (19) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, Аноним (-), 22:36, 10/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    позитивно =)
    то, чего ТАК долго ждали - вышло-таки )
    *ушел пилить*
     
  • 1.2, Толстеннный троллль (?), 22:50, 10/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    В какой версии gcc ждать полную поддержку?
     
     
  • 2.12, Аноним (-), 01:47, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    4.9.х ? :)
     
  • 2.14, Аноним (-), 09:09, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    в Clang 3.4
     
     
  • 3.15, Аноним (-), 12:29, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да ты шутник, однако. Clang на данный момент совсем не поддерживает OpenMP, и это является его единственным недостатком, ведь в остальном он идёт вровень с GCC.
     
     
  • 4.19, Алексей (??), 09:56, 12/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А по генерируемому bloatware уже далеко впереди.
     

  • 1.4, Аноним (-), 23:47, 10/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    GPU очень интересно, особенно в счязи с прогрессом Galluim Cmpute, Clover. Подозреваю что из за того что он на тормозном распиареном llvm, OpenMP там не будет еще лет 10. Но на gcc по определению такого нет, на ставслась задача. Выходит что одна сплошная блобная проприетарщина будет.
     
     
  • 2.7, BratSinot (ok), 00:43, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Для начала либо почините клавиатуру, либо выпрямите пальцы.

    Для продолжения, при чем здесь llvm и OpenMP? Вы хоть понимаете, что llvm это JIT-компилятор и там он используется чтоб компилировать OpenCL код в инструкции GPU? В том-же OpenMP llvm может использоваться для таких-же целей.

     
     
  • 3.17, kurokaze (ok), 22:11, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ути-пути, любимый llvm-чик обидели, хнык-хнык. Гггг
    Я llvm использую, но делать из него фетиш подобно вам, чтобы потом отлаживать кирпичи - увольте
     
     
  • 4.18, Куяврик (?), 23:59, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    и в чём сейчас модно кирпичи отлаживать? gdb?
     

  • 1.5, Аноним (-), 00:16, 11/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    clang все еще не работает с ним
     
     
  • 2.10, Аноним (-), 01:41, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > clang все еще не работает с ним

    FAIL, чо :).

     
  • 2.13, Аноним (-), 05:45, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    кто ?
    оно - часть тулчейна GCC. меджится туда AMD-ой и SGI/Rackspace/Cray-ями с IBM напополам )
     

  • 1.6, Аноним (-), 00:27, 11/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Пятилетка стандартописательства в разгаре. Кто только это все делать будет?
     
  • 1.8, BratSinot (ok), 01:02, 11/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как эта связка с GPU называется то? В PDF'ке про GPU ни слова не сказано.
     
     
  • 2.9, anonymous (??), 01:29, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если я правильно понял, то для взаимодействия с ускорителями (в т.ч. GPU), ввели понятие устройста (device).
     
  • 2.11, povlinux (?), 01:41, 11/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    OpenMP API provides mechanisms to describe regions of code where data and/or computation should be moved to another computing device. Several prototypes for the accelerator proposal have already been implemented.
     
  • 2.20, Andriy (??), 11:52, 12/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > А как эта связка с GPU называется то? В PDF'ке про GPU
    > ни слова не сказано.

    Хм, а еще есть OpenACC и он вроде на GPU ориентирован.

     

  • 1.21, Аноним (-), 12:00, 15/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что бы код вычислялся на ГПУ нужны оригинальные видео драйверы от АМД например?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру