The OpenNET Project / Index page

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

В проект LLVM вошла разработанная в Intel runtime-библиотека OpenMP. Red Hat представил OpenMP 4.0 для GCC

08.10.2013 23:21

Компания Intel передала проекту LLVM код runtime-библиотеки OpenMP, которая послужит началом для формирования полнофункциональной OpenMP-системы на базе LLVM. Код библиотеки отныне будет развиваться в качестве официального подпроекта LLVM с использованием репозиториев и инфраструктуры LLVM. Код библиотеки открыт под двойной лицензией (MIT + BSD-подобная лицензия UIUC), полностью совместимой с LLVM. Кроме того, проекту переданы права по использованию всех связанных с библиотекой патентов Intel.

Runtime-библиотека является одной из составных частей реализации стандарта OpenMP (Open Multi-Processing), позволяющего задействовать методы параллельного программирования в программах на языках Си и Си++. Библиотека связывается с итоговыми OpenMP-приложениями и выполняет функции диспетчеризации потоков в процессе выполнения OpenMP-программы. Из особенностей библиотеки отмечается высокая производительность и совместимость на уровне ABI с GCC и проприетарными OpenMP-компиляторами Intel.

Компания Intel также развивает проект по интеграции в компилятор Clang поддержки OpenMP. Работа над проектом ещё не завершена, но уже обеспечена полная поддержка спецификаций OpenMP 3.1 и частичная поддержка OpenMP 4.0. Заявлено о намерении включить код данного проекта в основную кодовую базу Clang/LLVM, после того как будет проведена синхронизация OpenMP-патчей Intel с состоянием trunk-ветки Clang. Развитие в рамках проекта LLVM runtime-библиотеки OpenMP поможет ускорить интеграцию поддержки OpenMP в компилятор Clang. В текущем виде реализация уже успешно проходит все известные тесты на совместимость с OpenMP 3.1, в том числе SPEC OMP2012, проверочный пакет OpenUH и тестовый набор Intel.

Дополнение: Разработчики из компании Red Hat опубликовали запрос на включение в состав основного репозитория набора компиляторов GCC кода с реализацией поддержки спецификации OpenMP 4.0. Поддержка OpenMP 4.0 пока доступна для языков C и C++, для языка Фортран фронтэнд для OpenMP 4.0 пока не создан. Также пока недоступна поддержка ускорения вычислений (offloading) за счёт задействования дополнительных аппаратных вычислительных устройств, таких как GPU. Напомним, что в GCC поддержка OpenMP была интегрирована в компиляторы Си, Си++ и Фортран начиная с ветки 4.2, выпущенной в 2007 году. Текущая реализация OpenMP, доступная в GCC 4.7, ограничивается поддержкой спецификаций OpenMP 3.1.

  1. Главная ссылка к новости (http://blog.llvm.org/2013/10/o...)
  2. OpenNews: Выпущены спецификации OpenMP 4.0
  3. OpenNews: Проект по добавлению поддержки OpenMP в LLVM
  4. OpenNews: Для компилятора Clang реализована поддержка OpenMP
  5. OpenNews: Опубликован стандарт OpenMP 3.1, определяющий API для параллельного программирования
  6. OpenNews: Основанные на GCC проекты JIT-компилятора и расширения, использующего GPU для вычислений
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: openmp, intel, compile, llvm, clang
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (34) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:27, 09/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Объясните ламеру: зачем нужен этот openmp когда можно создать пачку std::thread, и спокойно посчитать что требуется без каких-то левых рантаймов и поддержек?
     
     
  • 2.3, Аноним (-), 00:33, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +15 +/
    Ждем рассказов на тему: "Как я провел лето, портируя Fortran код на std::thread" и "Теория большого кода переписанного за 20 минут на std::thread"
     
  • 2.13, vitalif (ok), 01:48, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    А это для тех, кто не умеет. А на тредах оно и работает побыстрее всегда.
     
  • 2.14, Dcow (ok), 01:50, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А ты посмотри код с OpenMP - категории разные
    сделать треду нужно очень часто, но иногда нужно просто распараллелить пару циклов, и OpenMp подойдет куда больше.
     
  • 2.17, pavlinux (ok), 02:33, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > зачем нужен этот openmp когда можно создать пачку std::thread,

    [code]
    #pragma omp parallel
    {
    #pragma omp for  
        for (i=0; i < X ; i++)
               X *=X;
        #pragma omp for  
             for (k=0; k < Y; k++)  
                Y *= Y;
             #pragma omp critical
             {
               if (Y == X)
                   Y = 2*X;
              }
    }
    [/code]

    Угадай сколько строк займет код на С иль даже на C++?

     
     
  • 3.32, Не понял (?), 11:42, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >for (i=0; i < X ; i++)
    >           X *=X;

    Подскажите, а что должен делать данный код для первоначального X=2?
    Особенно при параллельных вычислениях?

     
     
  • 4.35, Andrey Mitrofanov (?), 13:13, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>for (i=0; i < X ; i++)
    >>           X *=X;
    > Подскажите, а что должен делать данный код для первоначального X=2?
    >  Особенно при параллельных вычислениях?

    Считать до 5. Павлин это распараллеливает и замегакодировает.

    user@bash:~$ X=2;for((i=0;i<X;i++)); do echo $i $X; let X=X*X; done
    0 2
    1 4
    2 16
    3 256
    4 65536
    5 4294967296
    user@bash:~$ gawk 'BEGIN{X=2; for (i=0; i < X ; i++){X=int(X*X); print i,X}}'|head -30_

     
     
  • 5.40, Не понял (?), 16:26, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Считать до 5. Павлин это распараллеливает и замегакодировает.

    У Вас сильно упрощенный подход. Скорее до 0, если X целое, если нет то возможны варианты.
    Количество кругов при целочисленном X зависит от разрядности. Но это все при линейном выполнении.
    Не говоря о том, что операция *= не атомарна и при выполнении в параллельных потоках это будет нехило. С трудом могу себе представить чему должен быть равен X на выходе.

     
     
  • 6.41, pavlinux (ok), 00:45, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > С трудом могу себе представить чему должен быть равен X на выходе.

    Я тоже. Ваще от балды написал :)


     
  • 2.24, Vkni (ok), 06:13, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для повышения производительности труда программиста.
     
  • 2.27, Archer73 (ok), 09:34, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Posix threads трудно переносить + требуется больше кода писать. Производительность у мня получалась примерно одинаковая.
     
     
  • 3.30, all_glory_to_the_hypnotoad (ok), 10:39, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    так не нужно же их переносить, на то они и POSIX
     
  • 3.39, Аноним (-), 15:24, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А кто говорит о posix threads? std::thread - стандарт C++
     
  • 2.29, ДяДя (?), 09:42, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >позволяющего задействовать методы параллельного программирования

    Потоки не совсем это.

     

  • 1.4, Аноним (-), 00:38, 09/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Подозреваю, что все это делается по заказу Apple.
     
     
  • 2.6, Аноним (-), 00:40, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Загнется GNU, загнется линукс
    Поднимутся *BSD
    Ничего страшного
     
     
  • 3.12, all_glory_to_the_hypnotoad (ok), 01:45, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    им сейчас никто не мешает подниматься. Но не поднимаются. Не будут подниматься и без GNU.
     
  • 3.15, vitalif (ok), 01:52, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Загнется GNU, загнется линукс
    > Поднимутся *BSD
    > Ничего страшного

    Да никто там не загнётся и никто не поднимется. От смены GPL компилятора на BSD система лучше не станет :)

    А с закрытием по идее самое страшное, что может быть - это начнут распространять какие-нибудь плагины к LLVM в виде блобов. Но пока и это маловероятно, тьфу-тьфу-тьфу.

     
  • 3.18, Led (ok), 03:02, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Да, трупы обычно через время разбухают и всплывают. При этом выглядят ужасно и жутко воняют.
     
     
  • 4.20, Аноним (-), 04:00, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ты нашел жену Райзера у себя в ванной? Что ты с ней делал всё это время?
     
     
  • 5.26, анон (?), 07:57, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > нашел
    > делал всё это время

    facepalm.tar.gz

     
  • 5.43, kurokaze (ok), 16:32, 11/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    зачем ты её откопал и спрятал у Led в ванной?
     
  • 3.36, Аноним (-), 14:31, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Загнется GNU, загнется линукс

    Влажные мечты бсдшников - они такие.

    > Поднимутся *BSD

    То-то бзди на 10 лет древнее пингвина, а сливают ему по всем фронтам. Поднимутся, как затонвушая подлодка. Чтобы на металлолом переработать.

     
  • 2.9, Аноним (-), 00:47, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Подозреваю, что все это делается по заказу Apple.

    У Apple GCD есть

     
     
  • 3.16, Dcow (ok), 01:58, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    По мне так OpenMP куда удобней, если нужно что-то мелкое вычислить побырому, а если нет, то отдельный thread куда лучше будет в любом случае
     
  • 3.38, annulen (ok), 15:19, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >У Apple GCD есть

    Область применения GCD никак не пересекается с OpenMP.

     

  • 1.5, Ivan_83 (?), 00:39, 09/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Потом вдруг окажется что на процессорах АМД эта библиотека работает особенно медленно, ибо интел как обычно не знала что АМД там у себя нагородили и на всякий случай на процессорах АМД выключили все оптимизации и расширенные наборы инструкций.
     
     
  • 2.31, Аноним (-), 11:31, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Breaking news! Каждый раз, когда AMD пытается закомитить свой код в OpenMP, злые фошшызды из Intel'а больно бьют их по рукам! Доколе! Ставьте свои подписи под петицией против Intel'я на сайте Спортлото!
     

  • 1.7, 3draven (ok), 00:41, 09/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот объединят это с openacc...и будет торт.
     
     
  • 2.21, Yaisis (?), 04:32, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    OpenMP 4 GPU поддерживает.
     

  • 1.33, Аноним (33), 11:50, 09/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    параллельное программирование - это вынос мозга
     
     
  • 2.37, Аноним (-), 14:32, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слабак.
     
  • 2.42, IZh (ok), 14:41, 11/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "Лошади едят овёс и сено"
     
  • 2.44, PereresusNeVlezaetBuggy (ok), 00:25, 28/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > параллельное программирование - это вынос мозга

    Тогда неэвклидовое программирование лучше вообще не пробуйте.

     

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



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

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