Принудительный запуск Renderscript на CPU или GPU (по крайней мере, в целях настройки производительности)

У меня есть несколько базовых алгоритмов (DCT/IDCT и несколько других), перенесенных и работающих (как и ожидалось, по крайней мере функционально) на Nexus 10. Поскольку эти алгоритмы являются первыми реализациями, время их выполнения в настоящее время исчисляется секундами. , что понятно.

Однако, учитывая архитектуру Renderscript, я вижу, что эти алгоритмы работают либо на CPU, либо на GPU, в зависимости от других параллельных действий приложения. Например, в моем приложении есть прокрутка для изображений, и любая активность в этом представлении, по сути, подталкивает выполнение сценария рендеринга к ЦП. Если активности нет, алгоритм работает на GPU. Я вижу это вживую по трассировкам ARM-DS5 Mali/A15.

Эта ситуация представляет собой кошмар отладки/настройки, поскольку дельта производительности, когда алгоритм работает на процессоре (двухъядерном) по сравнению с графическим процессором (Mali), составляет порядка 2 секунд, что очень затрудняет оценку улучшения производительности, которое я испытываю. делаю по моему коду алгоритма.

есть ли способ обойти эту проблему? Одним из возможных решений является, по крайней мере, возможность настройки отладки для выбора целевого типа (ARM, GPU) для кода рендерскрипта?


person mahesh ren    schedule 12.09.2013    source источник
comment
Ба, есть ли хотя бы способ спросить систему, будет ли она выполняться на процессоре или графическом процессоре.   -  person user2023370    schedule 13.09.2014


Ответы (1)


adb shell setprop debug.rs.default-CPU-driver 1

Это заставит выполнение выполняться на эталонной реализации ЦП. Нет эквивалента форсированию работы графического процессора, так как многие условия могут сделать это невозможным во время выполнения.

Также полезно:

adb shell setprop debug.rs.max-threads 1

Что ограничивает количество используемых ядер ЦП до 1 (или любого другого значения, которое вы устанавливаете для количества ЦП устройства).

person R. Jason Sams    schedule 12.09.2013
comment
если мне нужно вернуться к настройкам по умолчанию, установив в adb shell setprop debug.rs.default-CPU-driver 0, он больше не вернется к использованию графического процессора. Мне пришлось вручную удалить данные моего приложения из /data/data/com.*.*.*.*. И переустановите мое приложение. Похоже, что после генерации битового кода не выполняется проверка переменной debug.rs.default-CPU-driver во время выполнения. - person mahesh ren; 04.10.2013
comment
Я столкнулся с той же проблемой на Moto e. Есть ли способ проверить и отредактировать эти свойства с помощью Java-кода? - person Sandeep Dhull; 20.02.2015
comment
После установки adb shell setprop debug.rs.default-CPU-driver 0 вам необходимо закрыть и снова открыть приложение, после чего графический процессор снова будет включен. - person Settembrini; 26.03.2016