Представьте, что вы можете запустить одну и ту же программу на любом компьютере, будь то ваш домашний ПК, игровая консоль или даже суперкомпьютер. Звучит фантастично? Intel с 2020 года работает над тем, чтобы сделать это реальностью с помощью платформы oneAPI. Эта инновация обещает не только изменить то, как мы используем искусственный интеллект, но и упростить процесс разработки программного обеспечения. Вместо того чтобы адаптировать код под каждую платформу, разработчики смогут писать универсальные приложения, которые будут эффективно работать на самых различных устройствах, обеспечивая при этом высокую производительность. Более того, уже сейчас на платформу портируют код CUDA, вроде проектов как интерфейс Stable Diffusion 1111.
Но что это значит для обычного пользователя?
▍ Что это такое?
Intel oneAPI — это открытый стандарт и программная платформа для разработки высокопроизводительных приложений, которые могут эффективно работать на различных типах процессоров и ускорителей, включая CPU, GPU, FPGA и другие. oneAPI позволяет разработчикам писать код один раз и запускать его на разных архитектурах без необходимости существенной модификации, обеспечивая переносимость и масштабируемость приложений. Цель oneAPI — упростить процесс разработки и оптимизации программ для параллельных вычислений, используя единый набор инструментов и библиотек.
oneAPI предоставляет разработчикам набор библиотек, компиляторов и инструментов анализа производительности, оптимизированных для различных аппаратных платформ. В состав пакета входят компиляторы Intel oneAPI DPC++/C++, Fortran, библиотеки для математических вычислений, анализа данных, машинного обучения, обработки видео и другие. oneAPI также включает в себя инструменты для миграции кода с CUDA на DPC++, что облегчает переход разработчиков на открытую и кроссплатформенную среду.
▍ Предпосылки к созданию платформы.
Intel — давний игрок на рынке процессоров, их интегрированная графика прошла долгий путь развития, идя в ногу со временем и предоставляя всё новые новвоведения и решения, дабы оставаться конкурентноспобными на рынке. Однако в данной сфере их начали теснить AMD, и теперь им понадобится амбициозный проект, чтобы вырваться вперед.
В конце 2017 года Intel, стремясь конкурировать с Nvidia и AMD, переманила Раджу Кодури, ведущего специалиста по графическим процессорам из AMD, и начала разработку собственных дискретных GPU. После нескольких лет работы, в 2022 году, компания представила линейку видеокарт Arc. Параллельно Intel разрабатывала унифицированную программную платформу oneAPI для различных аппаратных ускорителей. 13 ноября 2020 года состоялся релиз первой версии oneAPI, предлагающей единый интерфейс программирования для CPU, GPU, FPGA и специализированных ускорителей. oneAPI нацелена на упрощение разработки и обеспечение переносимости кода, конкурируя с CUDA от Nvidia и ROCm от AMD, открывая новую эру в параллельном программировании от Intel (ROCm и CUDA также к ней относятся).
▍ Начало развития
13 ноября 2020 года состоялся релиз первой версии платформы, входящей в состав тулкита. С этого момента началась разработка единого интерфейса программирования, который позволил бы разработчикам использовать различные ускорители без необходимости поддерживать отдельные кодовые базы, множество языков программирования, инструментов и рабочих процессов для каждой архитектуры. Самих компонентов огромное множество, от низкоуровневых API и инструментов анализа до модулей для работы с графикой.
Ключевые компоненты платформы:
oneAPI DPC++/C++: язык программирования на базе C++, который позволяет разрабатывать приложения для различных архитектур (CPU, GPU, FPGA) с единым кодом. Он поддерживает параллельное программирование, облегчая создание высокопроизводительных приложений и кросс-архитектурные вычисления.
oneAPI Math Kernel Library (oneMKL): библиотека высокооптимизированных математических функций для научных, инженерных и финансовых вычислений. Ускоряет математические операции на процессорах и графических ускорителях Intel.
Intel Advisor: инструмент анализа производительности для C, C++, Fortran, OpenMP, SYCL, Python и OpenCL приложений. Помогает выявить узкие места в производительности
oneAPI Deep Neural Network Library (oneDNN): библиотека, предоставляющая оптимизированные строительные блоки для глубокого обучения. Ускоряет работу фреймворков глубокого обучения на процессорах и графических ускорителях Intel.
Однако многие библиотеки развивались гораздо раньше: Тулкит появился не из ниоткуда. Некоторые части из них заложили свою основу ещё в 2016м году.
▍ Основные отличия от главного конкурента AMD ROCm
AMD ROCm — это программная платформа, разработанная специально для графических процессоров AMD. Она предоставляет разработчикам инструменты и библиотеки, оптимизированные для архитектуры этих GPU. ROCm позволяет создавать высокопроизводительные приложения, используя различные подходы, включая HIP, который облегчает перенос кода, написанного для NVIDIA CUDA, на платформу AMD. Однако, ROCm не ограничивается только этой функцией, это полноценный набор инструментов для разработки под AMD GPU, но больше всего ассоциируется именно с очень быстрым переносом CUDA-кода.
Intel oneAPI же ставит перед собой более амбициозную цель — создать единую среду для разработки приложений, работающих на различных типах вычислительных устройств. Это включает в себя центральные и графические процессоры Intel, а также FPGA и другие ускорители. В основе oneAPI лежит язык программирования DPC++, базирующийся на открытом стандарте SYCL, а также набор специализированных библиотек для различных задач, например, машинного обучения и анализа данных. OneAPI нацелен на то, чтобы разработчики могли писать универсальный код, который сможет эффективно работать на разных типах оборудования, минимизируя необходимость переписывать или адаптировать его для каждой конкретной архитектуры. Это позволяет использовать вычислительные мощности разных устройств в одном приложении.
▍ Дальнейшие развитие платформы до сегодняшних дней
С 2020 по 2021 год oneAPI претерпел значительные изменения, пройдя путь от бета-версии до стабильного релиза. Ключевые улучшения включали в себя расширенную поддержку различных аппаратных платформ Intel, усовершенствование компилятора DPC++ с поддержкой новых функций SYCL и OpenMP, а также оптимизацию библиотек oneAPI для повышения производительности на различных архитектурах. Кроме того, были представлены новые инструменты анализа производительности и улучшена интеграция с Visual Studio Code. В целом, oneAPI стал более зрелым и функциональным фреймворком.
Помимо технических улучшений, oneAPI расширил свою экосистему, добавив поддержку JupyterLab в DevCloud, а также был обновлён Level Zero для oneAPI, облегчающий интеграцию акселераторов различных производителей.
OneAPI за период с 2021 по 2022 год значительно расширил свою экосистему. Была добавлена поддержка новых платформ, Windows 11, WSL 2, а также расширена совместимость с различными дистрибутивами Linux. Компилятор DPC++ получил множество улучшений, включая новые функции SYCL 2020 и расширенную поддержку OpenMP, а также начался переход на LLVM-based Intel oneAPI DPC++/C++ компилятор. Производительность и функциональность основных библиотек были существенно улучшены. Также были обновлены инструменты анализа производительности, добавлена утилита диагностики и расширения для Visual Studio Code.
Кроме того, Codeplay выпустили плагин для OneAPI для совместимости с NVIDIA и AMD GPU, предоставляя начальную поддержку этих платформ.
В период с 2022 по 2024 год oneAPI сфокусировался на производительности, функциональности и поддержке новых аппаратных средств. DPC++ получил полную поддержку SYCL 2020 и расширенные возможности SYCL Graph. Улучшилась совместимость с OpenMP, обновились многие библиотеки oneAPI. Новая структура каталогов (Unified Directory Layout) появилась в 2024 году наряду со старой, предоставляя выбор разработчикам. Поддержка сторонних GPU NVIDIA и AMD продолжила улучшаться благодаря плагинам Codeplay. Расширения для VS Code также получили обновления. Поддержка oneAPI HPC Toolkit для macOS на x86 была прекращена. Классические компиляторы Intel C++ (icc) и Intel Fortran Compiler Classic (ifort) также были объявлены устаревшимы.
В версии oneAPI 2025, помимо стандартных улучшений, добавления поддержки новых архитектур и так далее, также были представлены новые пакеты C++ и Fortran Essentials, и инструмент DPC++ Compatibility Tool который упрощает миграцию с CUDA.
Важным изменением стало стало удаление классического компилятора Fortran (ifort) и его замена на Fortran (ifx). Диагностическая утилита для oneAPI Toolkits была объявлена устаревшей. Также прекращена поддержка некоторых инструментов и ряда операционных систем.
Также каждый год проводятся саммиты. Благодаря им в сообществе появляется гораздо больше доверия к молодой платформе.
▍ А что на деле?
В коммерческой области Intel oneAPI уже испытывают. Так, в 2022 году в лидеры вышел суперкомпьютер на компонентах Intel — Aurora, а также есть примеры использования на некоторых более скромных установках. Другие компании иногда портируют отдельные библиотеки из этого тулкита. Исследовательские и академические центры активно используют oneAPI и помогают в разработке внутреннего инструментария. Однако можно заметить, что это весьма ограниченный успех, в то время как Nvidia CUDA используется повсеместно, а AMD ROCm задействован примерно в 140 суперкомпьютерах рейтинга top500. Intel oneAPI, хоть и активно развивается, в силу определенных причин, до сих пор отпугивает многие крупные организации.
▍ Кейсы домашнего использования
Итак, если вы не программист, а просто счастливый обладатель видеокарты от Intel, то, в отличие от AMD ROCm, когда дело касается миграции кода с CUDA, выбора у вас особо нет. Реализация oneAPI пока мало где доступна, а вручную у вас вряд ли получится это сделать. Из того, что я нашёл, поддержка oneAPI есть в таких интерфейсах, как a1111 (Stable Diffusion) и KoboldAI (локальный запуск больших языковых моделей). Это, честно говоря, очень скромно. Тот же ROCm, помимо упомянутых, может запускать обучение моделей для апскейлинга ESRGAN, клонирование голосов в RVC, ChaiNNer для апскейлинга и обработки фото и видео. Также существует множество специализированных решений. Более того, иногда удаётся запустить и менее известные проекты, такие как Particular-RIFE для интерполяции кадров.
Что касается других пользовательских кейсов, то фантазировать о создании, например, игр на нём не приходится — это слишком трудоёмкий процесс, и бóльшей части инфраструктуры для этого нет. Пока значительных достижений в охвате общепользовательского рынка не наблюдается, но по двум другим важным направлениям — нейросетям и научным вычислениям — всё хорошо. Например, Autodesk Arnold использует Intel Open Image Denoise, где хорошо проявилась главная суть oneAPI — переносимость кода. Программа дружит с большим числом разных архитектур ГПУ разных производителей.
▍ Как происходит портирование нейросетей с CUDA на OneAPI
Сначала исходный код CUDA анализируется инструментом DPC++ Compatibility Tool (и SYCLomatic, если понадобится), который автоматически преобразует значительную часть кода (до 95%) в SYCL. Затем необходимо вручную доработать оставшиеся части кода, обращая внимание на предупреждения, выдаваемые инструментом. Этот этап включает замену CUDA-специфичных вызовов (функций, типов данных и т.д.) на их SYCL-аналоги, адаптацию структур данных и алгоритмов под модель исполнения SYCL, а также проверку совместимости используемых библиотек. После этого код компилируется с использованием DPC++ компилятора и проводится тщательное тестирование для обеспечения корректности работы и производительности на целевой архитектуре. В процессе потребуется оптимизация кода для достижения наилучшей производительности на выбранном устройстве.
Так что недувительно что поддержка ROCm значительно больше распространнена на некоммерческие проекты, чем oneAPI, ведь в это же время ROCm делает похожую работу, но в автоматическом режиме и развивался значительно дольше, в большинстве случаев добиваясь успеха без внешнего вмешательства и запуская так огромное множество проектов с CUDA-кодом, но и он иногде теперит крах.
Q: Почему можно так просто портировать нейросеть? Они же обучаются на огромных серверных мощностях…
A: Нет, мы «просто» изменяем, иногда даже переписываем код, который реализует вычисления, заданные моделью нейросети в программе, и на этом всё. Происходит переписывание инференса.
▍ Заключение
Intel oneAPI представляет собой амбициозную попытку создать универсальную платформу для разработки высокопроизводительных приложений на различных архитектурах. Эта инициатива направлена на преодоление фрагментации в мире гетерогенных вычислений, предлагая единый инструментарий для работы с разнообразным оборудованием. Ключевое преимущество платформы — возможность написания кода, который может работать на CPU, GPU и FPGA без существенных изменений. Для широкого внедрения oneAPI потребуются значительные усилия со стороны Intel по расширению поддержки в популярных проектах и улучшению инструментов автоматизации переноса кода. Расширение возможностей oneAPI обеспечит разработчикам более гибкие инструменты для оптимизации производительности, что позволит создавать адаптивные решения для работы на различных архитектурах и снизить время и ресурсы на портирование существующих приложений.
© 2024 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
ссылка на оригинал статьи https://habr.com/ru/articles/851166/
Добавить комментарий