company_banner

Intel oneAPI Project: архитектур много, API один



    На проходившем в июне Intel Software Technology Day ведущие инженеры компании рассказали о софтверном проекте под названием «Intel oneAPI» — унифицированной модели программирования для облегчения разработки ПО под разнообразные вычислительные архитектуры, включающей в себя новый язык программирования. В этом посте мы приведем краткое описание данного проекта — как говорится, to be continued…

    oneAPI — это проект, в рамках которого разрабатывается унифицированный набор средств для разработчиков производительного ПО. Парк вычислительных платформ в последнее время сильно расширился за счет специализированных ускорителей. Intel предоставит программные решения, которые позволят разработчикам выжать из разнородного железа максимум производительности.
    Билл Сэвэдж, вице-президент Intel, генеральный директор подразделения Compute Performance Developer Products

    Как мы замечаем, задачи, которыми мы нагружаем доступные нам вычислительные мощности, становятся более разнообразными — так же как и архитектуры этих самых мощностей, разделяющиеся на Скалярные (CPU), Векторные (GPU), Матричные (AI accelerators) и Пространственные (FPGA). Весь этот комплекс архитектур, называемый в Intel СВМП (SVMS), требует эффективную модель программирования для получения максимальной производительности. Задача oneAPI — обеспечить простоту использования и эффективность, избавляя от необходимости вести архитектуро-зависимые варианты кода, использовать для них разные языки программирования и средства разработки.

    Примером того, как Intel уже сейчас реализует кросс-платформенность разработки, является Intel OpenVINO — набор средств для разработчика ПО, обеспечивающий последовательный, оптимизированный процесс инференса для deep learning алгоритмов на базе любых СВМП архитектур Intel.

    oneAPI поддерживает прямое программирование и API программирование, предоставляя единый язык программирования и унифицированные библиотеки, обеспечивающие максимальную производительность нативного кода на различных платформах СВМП.

    • Прямое программирование. oneAPI содержит новый язык программирования Data Parallel C++ (DPC++) — открытую, всеобъемлющую альтернативу проприетарным языкам под конкретные архитектуры. DPC++ обеспечивает удобство и производительность, используя привычную для разработчиков модель программирования. DPC++ создан на базе C++, включает в себя SYCL от The Khronos Group, а также расширения, разработанные в открытом сообществе.
    • API программирование. Библиотеки oneAPI позволяют развернуть несколько доменов нагрузки, для которых возможно провести оптимизацию. Функции библиотек кастомизированы под конкретные архитектуры.

    Кроме того, Intel предоставит улучшенные версии средств анализа и отладки (Intel VTune Amplifier, Intel Advisor), поддерживающие DPC++ и весь набор архитектур СВМП.

    Бета-версия oneAPI для разработчиков, а также дополнительные детали, его касающиеся, будут доступны в конце 2019 года.
    • +12
    • 2,7k
    • 4
    Intel
    178,86
    Компания
    Поделиться публикацией

    Комментарии 4

      +2

      Много "белых пятен".
      Если это некий "кроссплатформенный ассемблер" (что вряд ли) — зачем здесь С++, язык с огромным числом сложностей?
      Если это очередное "всеобъемлющее API" — опять же, каким боком С++ (другие языки за бортом)? И как это будет сочетаться с OS-specific API? Чем это лучше LLVM-like бэкендов? Как это будет совместимо с существующими решениями?

        0
        *картинка про новый универсальный стандарт, который заменит все предыдущие стандарты
        P.S. Вы уже определитесь — либо все аббревиатуры на английском, либо на русском.
          +2
          Ребята, сначала посмотрите, что предлагают Intel Software сейчас, а потом будем критиковать. Написано да, немного невнятно.

          Основная идея — они дают среду разработки (C, Pyton) с минимальным дополнительным API, а среда исполнения вас интересовать не должна — исполняющая система (набор библиотек), которую компилятор добавит к итоговому исполняемому модулю, сама выберет, какие части исполняемого кода грузить для данной архитектуры, как исполнять и прочее.
          Сейчас они так делают для процессоров Intel — в зависимости от версии процессора исполняется разный код. В итоге одна и та же СКОМПИЛИРОВАННАЯ программа на разных процессорах исполняет разные куски кода (машинных команд), выбирая те, которые «удачнее» ложатся на архитектуру текущего процессора.

          One API просто расширяет список этих процессоров, не только архитектуры x86/x86_64, но и другие.
            +1
            В принципе всё что описано должен был сделать OpenCL. Но видимо Intel'у порог вхождения в него показался высоким и они хотят сделать что-то более простое типа CUDA под все устройства. Каждый год появляются новые API для вычислений, но если оглянуться вокруг в поисках чего-то для своего проекта — опять кроме OpenCL и CUDA ничего нет. У AMD была попытка чего-то подобного (а на самом деле — поддержать CUDA на AMD) под названием HIP — и она как-то не популярна у профессионалов в силу некоторых своих принципиальных ограничений. Ещё одна, более ранняя, попытка от AMD называлась HSAIL. Пиши на чём угодно, исполняется на чём угодно. Даже хотели java-код на GPU почти автоматом запускать в 2013. Сейчас как анекдот, смешно, а когда GCN только появился думали всерьёз сейчас java будет на GPU ускоряться за просто так, без участия программиста. Я даже расстраивался, столько мучались с этими оптимизациями на VLIW, клаузами, условными операторами — и тут раз, можно было на жаве писать а оно на GPU потом заработает. Чуда не произошло. HSAIL тоже не стал таким вот oneAPI, даже не знаю поддерживает ли его сейчас хоть кто-нибудь.
            Надеюсь у Intel выйдет лучше. Надеюсь, но не верю. Разработчиков под такие высокопроизводительные штуки ну может несколько тысяч в мире. И больше их всё равно не будет, нет таких разных задач на всех. Линейная алгебра, БПФ, кодеки, майнеры, библиотеки машинного обучения, обработка изображений. Несколько разработчиков написали это всё на любом API — и обычные программисты могут лихо использовать готовые библиотеки, концентрируясь на предметной области а не что там за API под капотом.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое