Pull to refresh
13
0
Илья Крюков @ikryukov

Senior Software Engineer

Send message
Отлично, то, что нужно! Можно ли собрать под PlayStation 4 и XBox One?
Результат — FPS?
Спасибо большое за идею исследовать масштабируемость данного приложения. Мы решили провести «усложненный» тест производительности. Демонстрационное приложение из статьи вычисляет взаимодействие 192 коробок, падающих на плоскость. Мы заставили наше устройство попотеть — увеличили число коробок в 16 раз — 3072 штуки.
image
ARM версия — 2 fps
x86 версия — 4 fps
Замеры проводились на одном и том же устройстве Samsung Galaxy tab 3 10.1, брали средний FPS за минуту работы приложения.
Чтобы убедиться, что данное приложение является CPU-bound, то есть львиная доля работы приходится именно на вычислительную составляющую мы воспользовались возможностью Intel GPA — Disable Draw Calls (данный эксперимент эмулирует бесконечно быстрый драйвер и GPU) в результате FPS не изменился, следовательно можно предположить, что данное приложение CPU-bound.
Да, вы поняли правильно — под ARM взята версия из коробки, а под х86 потребовались небольшие изменения, но они окупились. :)
Для того чтобы ответить на ваше вопрос нужно сначала проанализировать какой ассемблер генерится компилятором, если он не векторизует критические к производительности участки кода, то тогда необходима ручная модификация, например, переписывание на интринсики или ассемблерные вставки. Такой анализ мы еще не проводили.
Мы исключили компоненты самой библиотеки, оптимизированные под ARM:
src/base_level/solver/pfx_constraint_row_solver_neon.cpp
include/vecmath/neon/vectormath_neon_assembly_implementations.S

Да, сэмплы удалили тоже :)
Версия 2.6.29 используется в эмуляторе, который идет с Android SDK. Если этой версии не достаточно, можно попробовать собрать более новую. Процесс точно такой же — единственное отличие это конфигурационный файл.
Она там как раз воткнута. Согласен, что пример не самый удачный. Вместо поддержки мыши, можно включить опцию профилирования или другую на ваш выбор.
Именно. Для отладки на новом железе все это и требуется.
Рекомендовано проектом AOSP.
1. Профилирование. Подразумевается низкоуровневое профилирование с помощью профилировщиков: Oprofile, Perf. Все они требуют включения опции в ядре.
2. Сборка собственных модулей может потребоваться для поддержки аппаратной части. Например, собрать отладочную версию видеодрайвера.

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity