Что такое аппаратное ускорение на Android и зачем оно нужно
Аппаратное ускорение — это специальная опция, которую вы, возможно, замечали в меню различных приложений на многих своих устройствах, включая смартфон на Android. Хотя оно и не всегда доступно в большинстве мобильных приложений, аппаратное ускорение используется в ряде популярных Android-приложений, включая YouTube, Chrome, Facebook и других.
Варианты использования для аппаратного ускорения варьируются от более эффективного рендеринга видео и обработки звука до сглаживания текста и ускорения 2D-графики, а также анимации пользовательского интерфейса. Короче говоря, если у вас есть такая возможность, лучше использовать аппаратное ускорение, если только оно не вызывает какие-либо проблемы или ошибки.
Что такое аппаратное ускорение
Название говорит само за себя — аппаратное ускорение использует специальное аппаратное обеспечение для ускорения определенной задачи, чтобы она выполнялась быстрее и/или более эффективно, чем это происходит при использовании одного лишь центрального процессора (CPU). Чаще всего в игру при таком сценарии вступает графический процессор (GPU), цифровой сигнальный процессор (DSP), или какой-либо другой аппаратный блок, который специализируется на выполнении какой-то конкретной задачи.
Все это очень сильно напоминает гетерогенные вычисления. Однако широко используемые типы ускорения часто предоставляются через операционную систему разработчикам приложений, а не полагаются на выделенную платформу SDK для доступа к различным вычислительным компонентам. При отключенном ускорении процессоры все еще могут запускать необходимую функцию в конкретном приложении, хотя и медленнее, чем на выделенном оборудовании.
Одним из наиболее распространенных вариантов использования аппаратного ускорения является кодирование и декодирование видео. Например, вместо того, чтобы декодировать видеопоток на центральном процессоре (ЦП), который не очень эффективен, видеокарты или другое оборудование часто содержат выделенные блоки кодирования/декодирования видео, которые могут выполнять задачу намного более эффективно. Аналогично, распаковка аудиофайла часто может выполняться быстрее на DSP или звуковой карте, чем на процессоре.
Другое очень распространенное использование для аппаратного ускорения — ускорение 2D-графики. Например, пользовательские интерфейсы часто содержат много графики, текста и анимации для рендеринга. Все это может быть выполнено центральным процессором, но графический процессор (GPU) или дисплейный процессор намного быстрее справятся с таким типом операции. Задачи могут включать применение фильтра сглаживания к тексту, чтобы он выглядел более плавным, или наложение полупрозрачного слоя поверх другого элемента, такого как видео. Другие примеры продвинутой графики включают оптимизацию физики и трассировку световых лучей.
Почему аппаратное ускорение важно
Процессор является главной рабочей лошадкой любой компьютерной системы. Он разработан для решения практически любых задач, которые могут быть ему поставлены, но эта гибкость означает, что зачастую это не самый эффективный способ выполнения конкретных задач, особенно тех, которые требуют много повторяющихся сложных вычислений, таких как декодирование видео или рендеринг графики.
Аппаратное ускорение переносит обычные задачи с ЦП на специализированное оборудование, которое может не только выполнять задачу быстрее, но и гораздо более эффективно. Это означает, что устройства нагреваются меньше, а батареи работают дольше. Таким образом, при использовании выделенного блока видеодекодера вы сможете смотреть гораздо больше видео в высоком качестве на одной зарядке по сравнению с запуском того же алгоритма на процессоре. Держим в голове ещё то, что это также освобождает ваш процессор для выполнения других задач, делая приложения более отзывчивыми.
Компромисс состоит в том, что включение дополнительного оборудования для обработки для определенных функций имеет свою стоимость, как с точки зрения затрат на разработку, так и с точки зрения высокой стоимости самого кремния, из которого изготавливаются процессоры. Необходимо принять решение о том, какие функции стоит поддерживать с помощью аппаратного обеспечения, например, очень популярных видеокодеков, а какие не вполне соответствуют желаемому соотношению цена/качество.
Аппаратное ускорение стало важным инструментом в компьютерных системах — от высокопроизводительных ПК до смартфонов. Ведь последние, ввиду своей компактности, требуют низкого энергопотребления. Варианты использования выделенного оборудования только растут с появлением приложений, задействующий технологию машинного обучения. Тем не менее, большую часть времени аппаратное ускорение используется только для экономии заряда аккумулятора, например, при воспроизведении видео с YouTube.
Делитесь своим мнением в комментариях под этим материалом и в нашем Telegram-чате.
Источник
Что такое GPU-ускорение на платформе Android
Одной из многочисленных возможностей, присутствующих на современных Android-устройствах, выступает GPU-ускорение, доступное в специальном системном разделе. По ходу статьи мы расскажем о том, что это за функция и в каких случаях может повлиять на работу смартфона.
Что такое GPU-ускорение на Android
Сама аббревиатура GPU на смартфонах расшифровывается точно так же, как и на других устройствах, включая компьютеры, и означает «Графический процессор». Поэтому при активации ускорения вся нагрузка телефона переходит с ЦПУ на видеокарту, едва ли задействованную в повседневных задачах.
Примечание: Во время работы описываемого режима может значительно повыситься нагрев телефона, но, как правило, без вреда для компонентов.
Главное назначение GPU-ускорения заключается в принудительном переносе рендеринга с процессора устройства на GPU с целью повышения производительности. Как правило, особенно если брать в расчет современные мощные смартфоны или планшеты и весьма требовательные игры, подобная возможность положительно повлияет на скорость обработки информации. Кроме того, на некоторых телефонах можно получить доступ к дополнительным настройкам рендера.
Иногда ситуация может быть полностью противоположной, в связи с чем включение принудительного рендеринга двухмерного рисования может стать причиной невозможности запуска того или иного приложения. Так или иначе, функцию можно включать и отключать без ограничений, что делает большинство проблем легко разрешимыми. К тому же, как можно понять по вышесказанному, большинство приложений все же отлично работают при включенном GPU-ускорении, позволяя использовать ресурсы устройства на максимум.
Включение и отключение
GPU-ускорение можно контролировать в определенном разделе с настройками. Однако для доступа к данной странице потребуется выполнить ряд действий. Более подробно процедура была нами разобрана в отдельной статье на сайте по следующей ссылке.
После перехода к странице «Для разработчиков» в системном приложении «Настройки» воспользуйтесь свайпом вверх и найдите пункт «GPU-ускорение» в блоке «Аппаратное ускорение визуализации». В некоторых случаях функция может иметь другое название, например, «Рендеринг принудительно», но практически всегда остается неизменным описание. Ориентируйтесь именно по нему, обратив внимание на представленный ниже скриншот.
Эта процедура не станет проблемой, так как все действия легко обратимы. Таким образом, чтобы отключить принудительный рендеринг, деактивируйте пункт, указанный выше. Кроме того, данная тема напрямую связана с ускорением Android-устройства, детально рассмотренным нами также в отдельной инструкции.
Как видно из представленной в статье информации, GPU-ускорение на Android-устройствах можно включать и отключать в зависимости от конкретной ситуации, будь то запуск требовательных игр или приложений. С этим не должно возникнуть проблем из-за отсутствия ограничений на работу функции, не считая ситуаций, когда телефон по умолчанию не предоставляет нужных настроек.
Помимо этой статьи, на сайте еще 12473 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник
Аппаратное ускорение Canvas в Android
Предположим мы решили написать новое Android приложение. В силу же дизайнерских соображений, стандарные UI компоненты нам не подходят и мы будет рисовать много графики через Canvas или OpenGL ES. Последний способ несколько более трудоемкий, поэтому мы его пока рассматривать не будем. Нас интересует производительность вывода графики на Canvas. Можно ли её ускорить? Если зайти на официальный сайт андроида или блог разработчиков, то можно заметить, что начиная с Android 3.0 (API level 11), в платформе появилась возможность включать аппаратное ускорение Canvas для вывода 2D графики.
Вы можете подумать: «Супер! Я сейчас же добавлю флаг аппаратного ускорения в мое приложение!«. Тем более, некоторые сайты утверждают, что приложение спокойно будет работать на Android 2.x — такие приложения просто будут игнорировать флаг ускорения. Другие же сайты говорят, что аппаратное ускорение включено по-умолчанию начиная с Android 4.0. На самом же деле все не так.
И конечно же нас интересует вопрос, насколько повысится производительность приложения при включении аппаратного ускорения.
Первое на что я наткнулся при включение флага аппаратного ускорения, так это то, что приложение напрочь отказалось запускаться на Android 2.x. «Синтаксическая ошибка. При анализе пакета возникла проблема.» При этом, приложение нормально стартует на Android 3.x.
Идем дальше. В приложениях с динамичной графикой, как правило, создается цикл (app/game loop), в котором выполняется логика приложения и отрисовка графики. На андроиде цикл можно реализовать через таймер с задержкой в 1 мс c вызовом postInvalidate() или же для этих целей создать новый поток. Однако, как оказалось, аппаратное ускорение Canvas не поддерживает работу в отдельном потоке.
Интересно, насколько же все-таки повышается скорость при включении ускорения? Чтобы ответить на этот вопрос, я написал простенькое Android приложение, которое рисует картинку 128×128 на Canvas 100 раз в случайном месте, плюс показывает FPS. Дополнительно пользователь может выбирать отрисовку в главном потоке или в дополнительном, а также включать или выключать установление флага аппаратного ускорения.
Перво-наперво код был модифицирован, чтобы он мог запускаться на Android 2.x. Флаг аппаратного ускорения был убран из AndroidManifest.xml и добавлен в activity, т.е. мы будем включать ускорение программным способом, выставляя флаг FLAG_HARDWARE_ACCELERATED.
В следующем блоке показывается как идет отрисовка картинок. В нем же находится блок для Android 3.x или выше с вызовом isHardwareAccelerated(). На более низкой версии вызывать этот метод нельзя, т.ч. производится проверка на версию операционной системы.
FPS вычисляется довольно просто и вызывается перед отрисовкой картинок.
Ниже представлена сводная таблица тестирования производительности для 3-х имеющихся в наличии устройств и эмулятора. Последние две колонки — результат выполнения методов isHardwareAccelerated() для View и Canvas соответственно.
Платформа/Устройство | Графическая Модель | FPS | View ускорено? | Canvas ускорен? |
---|---|---|---|---|
Android 2.2 Emulator 800×480 | 1. Главный поток, ускорения нет | 4 | нет | нет |
2. Дополнительный поток, ускорения нет | 20 | нет | нет | |
Android 2.2.2 HTC Desire 800×480 | 1. Главный поток, ускорения нет | 7 | нет | нет |
2. Дополнительный поток, ускорения нет | 50 | нет | нет | |
Android 3.2.1 Acer A500 1280×800 | 1. Главный поток, ускорение по-умолчанию | 20 | нет | нет |
2. Главный поток, флаг ускорения установлен | 28 | да | да | |
3. Дополнительный поток, ускорение по-умолчанию | 30 | нет | нет | |
4. Дополнительный поток, флаг ускорения установлен | 30 | да | нет | |
Android 4.0.3 HTC Sensation XE 960×540 | 1. Главный поток, ускорение по-умолчанию | 26 | нет | нет |
2. Главный поток, флаг ускорения установлен | 39 | да | да | |
3. Дополнительный поток, ускорение по-умолчанию | 26 | нет | нет | |
4. Дополнительный поток, флаг ускорения установлен | 26 | да | нет |
Результаты впечатляют! Честно говоря, я такого не ожидал.
- Если нужна поддержка Android 2.x, следует использовать дополнительный поток для цикла логики/отрисовки.
- Установка флага аппаратной поддержки на Android 3.x с использование главного потока показывает такие же результаты, как и без ускорения, но в дополнительном потоке.
- Аппаратное ускорение выключено по-умолчанию на Android 4.x, и показывает значительное ускорение вывода графики в главном потоке при его включении.
- Эмулятор работает в 5 раз быстрее, когда отрисовка производится в отдельном потоке.
Исходный код проекта доступен для скачивания тут.
Источник