company_banner

Анонс C++ AMP — открытой платформы построения гетерогенных (GPU+CPU) приложений на C++

    image

    Привет, Хабрапользователи! Сейчас я нахожусь в США, город Белвью, на конференции AMD Fusion 11 Developer Summit. Про впечатления о городе и конференции я напишу позднее, когда обобщу все накопленные материалы. Пока же мне хотелось рассказать вам про важный анонс, который был сделан сегодня в ходе пленарного доклада Microsoft.

    Microsoft представила свое видение разработки приложений для работы в гетерогенной среде с использованием всех возможностей многоядерных процессоров и GPU. Была представлена новая платформа, которая станет частью следующей версии Visual Studio.

    Новая платформа получила название C++ Accelerated Massive Parallelism или C++ AMP. Цели данной платформы следующие: дать возможность использовать преимущества параллельных вычислений и GPU однвременно на языке C++, так же как сегодня эти преимущества используются на языке С (или его подобии) в разных платформах разработки: OpenCL, CUDA, DirectCompute.

    В ходе пленарного доклада было наглядно продемонстрировано использование новой платформы для разработки приложений, которым требуются высокие вычислительные мощности. Так с помощью возможностей, которыми обладает C++ AMP были достигнуты отличные результаты по использованию имеющихся GPU и многоядерных CPU даже на нетбуке, который смог выдать десятки гигафлопс для решения демонстрационной задачи рассчета взаимодействия множества тел в пространстве. Более мощная система с двумя GPU позволила использовать тому же коду уже сотни гигафлопс ресурсов (был продемонстрирован результат в 800+ гигафлопс).

    Представители Microsoft особенно подчеркивают перспективы данной платформы для разработки облачных вычислений в будущем. Платформа создавалась с рассчетом того, что уже скоро мы с вами сможем использовать сотни миллионов вычислительных модулей GPU в своих приложениях через облачные сервисы. C++ AMP позволит написать такой код уже сегодня, чтобы завтра он работал на подобных мощностях.

    Важной частью анонса С++ AMP стало объявление Microsoft о том, что новая платформа будет выпущеная под открытой спецификацией, так что ее реализацию может создать любая компания или разработчик для любой из платформ! Microsoft так же объявила, что намерена помогать сторонним реализациям новой платформы и в качестве примера привела сотрудничество с компанией AMD в этом вопросе.

    Немного подробностей о новой платформе можно получить уже сейчас в блоге разработчиков по адресу www.danielmoth.com/Blog/C-Accelerated-Massive-Parallelism.aspx.

    Кроме того, сегодня Microsoft объявила о том, что в следующей версии Visual Studio помимо поддержки С++ AMP будет добавлена поддержка отладки и профилирования кода на GPU!

    На сегодня это все новости с конференции AMD Fusion 11, позднее я напишу подробный обзор мероприятия с анонсами компаний и своими впечатлениями.
    Microsoft
    374.59
    Microsoft — мировой лидер в области ПО и ИТ-услуг
    Share post

    Comments 24

      +1
      Супер!
      Я дилетант в этом профиле, может подскажите?
      Ведь видеокарты разные, GPU у них разные. Есть стандарт по набору общих команд какой-то?
      Что бы у меня на одной карте работало, а у соседа на совсем другой.
      Если стандарт, то с какого года видеокарты его поддерживаю?
      Начиная с каких моделей это все будет работать?

      И еще интересно, как происходит взаимодействие с GPU в целом? Через драйвер?

      Спасибо.
        +1
        Ведь видеокарты разные, GPU у них разные. Есть стандарт по набору общих команд какой-то? Что бы у меня на одной карте работало, а у соседа на совсем другой.
        Что бы у меня на одной карте работало, а у соседа на совсем другой.

        Видеокарты разные, но DirectX то все поддерживают. Вот через него все и работают с GPU (ну есть еще конечно OpenGL). Если видеокарта поддерживает DX10, то всего его возможности должна поддерживать, т.е. если программа вызывает команды DX10 то она должна работать на любой совместимой видеокарте (исключая баги видеодрайверов).
        Если стандарт, то с какого года видеокарты его поддерживаю?

        DirectX существует уже очень давно.
        Начиная с каких моделей это все будет работать?

        Если вы спрашивает про технологию описанную в статью, то насколько я знаю еще не анонсировано. Но мне кажется она будет рассчитаные на видеокарты поддерживающие DX11 и выше.
        И еще интересно, как происходит взаимодействие с GPU в целом? Через драйвер?

        Вы вызываете графическое API (DirectX, OpenGL), API вызывает UM видеодравер который буфферизирует команды, по мере необходимости команды передаются в KM видеодрайвер для отрисовки.
          +2
          да. майкрософт предложит компилятор под windows котрый будет использовать dx. другие ведоры смогут использовать opencl или что-то другое в качестве базы
            0
            Понял, спасибо.
            0
            На сегодня «стандартом де-факто» является, скорее, CUDA — проприетарная технология Nvidia, работающая только на их картах (начиная с 8000-х моделей, кажется). У ATI есть (была?) своя аналогичная технология для их карт, но что-то о ней мало чего слышно. Есть инициативы по стандартизации и унификации этого дела (OpenCL), наверное, будущее за ними, но пока они отстают от проприетарных решений.

            Взаимодействие через драйвер, а как еще-то.

            Это что касается GPGPU, графика-то через OpenGL/DirectX давно везде работает.
              0
              > своя аналогичная технология для их карт, но что-то о ней мало чего слышно
              ATI Stream, но они сами же теперь проталкивают открытый OpenCL 1.1. И правильно делают в общем-то.
            +1
            Молодцы Microsoft! Хотя по началу с CUDA соревноваться будет тяжело, но через пару версий отвоюют свою нишу. Сейчас насколько я знаю CUDA в большинстве тестов выигрывает у DirectCompute, ну в общем-то и не удивительно. У DirectCompute вышла только первая версия, а у CUDA уже 4-ая.
              +2
              как сегодня было сказано, если вам нужна пиковая производительность на конкретном устройстве, то имеет смысл заточиться под конкретную платформу (CUDA). Но в общем случае, только C++ AMP даст возможность юзать все преимущества на C++ и на любом железе (потенциально на любой ОС, пока на Windows)
                +1
                В каком-то блоге эксперимент проводили: написали один и тот же код на OpenCL, CUDA и DirectCompute. Самое удивительное, что каждая технология ходя бы на одной из протестированных систем показывала наилучшую производительность, т.е. если есть желание добиться наилучшей скорости придется опробовать все.
              0
              Я вот только не понял, это по сути конкурент для OpenCL и его предшественников CUDA и Stream? Т.е. наследник DirectCompute? Или он будет как-то работать с OpenCL?
              МС конечно большой партнер, но опять менять api для GPU, причем обоим вендорам сразу, это трагично.
                +6
                это не конкурент текущим технологиям, это расширения для языка C++, которые будут выпущены под открытой спецификацией. Я только что был на специальной сессии посвященной С++ AMP, там пять новых типов, один метод parallel_for_each и еще некоторые добавления. все. реализация всего этого ложится на производителя компилятора, ms реализует на базе DX/DirectCompute, кто-то под линукс напишет на базе opencl.

                фишка в том, что при минимуме нововведений в язык, появляется возможность писать гетерогенные приложения на С++, причем потенциально кроссплатформенные и кроссаппаратные (если так можно сказать)
                  +4
                  да, самое главное, AMP использует лямбды и основан на них
                  0
                  Кажется понял. Будем ждать подробностей.
                    0
                    Так это же thrust получается! Настоящее GPU приложение на этом не написать.
                      0
                      что значит «настоящее приложение» и почему не написать?
                        0
                        Там даже shared памяти нет, а shared память — основа множества эффективных алгоритмов на видеокарте.
                          0
                          кто сказал, что нет shared-памяти?
                  0
                  Лишь бы winamp не пострадал :)
                    0
                    А для C# не планируется?
                    • UFO just landed and posted this here
                      0
                      То есть пользоваться данной технологией можно начиная со следующего релиза Visual Studio? Я правильно понял, или компилятор будет доступен ранее?
                        0
                        Меня тоже интересует этот вопрос. Можно ли попробовать эту технологию уже сейчас?
                        Хочу прямо сейчас компилятор. Пускай бету )
                          0
                          Компилятор пока недоступен публично. О выходе мы обязательно сообщим на Хабре.

                      Only users with full accounts can post comments. Log in, please.