Почему сообщество HPC так одержимо идеей «переносимости производительности»?

В области высокопроизводительных вычислений (HPC) разработчики почти фанатично относятся к «переносимости производительности». Это явление возникает из-за необходимости эффективной работы компьютерных программ и приложений на разных платформах. Поскольку технологии продолжают развиваться, а аппаратная архитектура меняется, надежность и актуальность высокопроизводительных вычислительных приложений оказываются под угрозой, что вынуждает разработчиков сосредоточиться на повышении производительности и переносимости.

Переносимость производительности относится к способности компьютерных программ и приложений эффективно работать на разных платформах. Когда разработчики разрабатывают приложения с учетом переносимости производительности, они надеются обеспечить поддержку нескольких платформ без снижения производительности и минимизировать объем платформенно-зависимого кода.

Важность переносимости производительности

Поскольку разнообразие оборудования растет, разработка программного обеспечения, способного работать на широком спектре машин, стала необходимостью для поддержания жизнеспособности приложений. По данным Конференции по переносимости производительности Министерства энергетики США (DOE) 2016 года, отрасль в целом согласна с тем, что переносимость производительности можно интерпретировать как «способность запускать одно и то же приложение на нескольких аппаратных платформах и достигать одинаковой производительности на этих платформах». производительности."

Например, Джон Пеникюк из Intel заявил на той же конференции, что «приложение считается производительно переносимым, если оно может достигать одинаковых уровней производительности на разных платформах». Это означает, что так называемая переносимость касается не только самого приложения, но и также о переносимости исходного кода.

В настоящее время не существует общепринятого способа измерения переносимости производительности, и отдельные команды могут определять эту концепцию на основе собственных критериев.

Измерение переносимости производительности

Точная количественная оценка переносимости производительности — сложная проблема, решение которой в первую очередь зависит от двух факторов. Первый — это переносимость, которую можно измерить, сравнив общее количество строк кода, используемых на нескольких архитектурах, с общим количеством строк кода, написанных специально для одной архитектуры. Вторым показателем является производительность, обычно сравниваемая между оптимизированными версиями для конкретной платформы и портативными версиями.

В настоящее время не существует универсального стандарта для того, что считается переносимым кодом или приложениями. Эта неоднозначность определения приводит к разным критериям оценки для разных команд. По словам докладчика на конференции 2016 года, считать проект переносимым или нет — это целиком и полностью дело команды разработчиков.

Фреймворковые и нефреймворковые решения

Чтобы помочь программистам добиться переносимости производительности, в настоящее время существует множество приложений и систем программирования, которые позволяют достичь этой цели. Такие фреймворки программирования, как OpenCL, SYCL и Kokkos, утверждают, что поддерживают функциональную переносимость и облегчают параллельное программирование на нескольких платформах. Кроме того, существуют некоторые нефреймворковые решения, такие как технология самонастройки и специализированные языки, которые также могут улучшить производительность и переносимость.

Разработчикам необходимо искать способы достижения переносимости производительности в постоянно меняющейся вычислительной архитектуре, что связано не только с текущими потребностями, но и с будущим выживанием.

Взгляд в будущее

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

Это изменение означает, что обязанности, которые должны нести программисты при разработке приложений, постепенно перейдут к реализации модели программирования и лежащего в ее основе компилятора, что существенно изменит технический стиль разработки программ. Эти исследования и обсуждения будут и дальше способствовать прогрессу и развитию высокопроизводительных вычислений.

Итак, в этом постоянно меняющемся технологическом контексте, как разработчикам эффективно сбалансировать противоречие между характеристиками платформы и производительностью и переносимостью?

Trending Knowledge

Скрытые проблемы высокопроизводительных вычислений: знаете ли вы, как сложно измерить переносимость производительности?
В мире высокопроизводительных вычислений (HPC) переносимость производительности — цель, которую преследуют многие разработчики. Однако с диверсификацией вычислительных платформ эта цель сталкивается с
nan
Определение и применение пассажирских железных дорог значительно различаются в каждом регионе.Эти различия отражают не только развитие систем общественного транспорта в различных местах, но и местное
Переносимость производительности: как обеспечить бесперебойную работу вашей программы на разных аппаратных платформах?
В сегодняшнюю эпоху взаимосвязанных цифровых технологий переносимость производительности стала важной проблемой при разработке программного обеспечения. Переносимость производительности означает спосо

Responses