2013-09-12 4 views
8

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

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

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

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

+1

Ба, есть по крайней мере, способ запросить систему, будет ли она выполняться на CPU или GPU. – user2023370

ответ

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

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

Также полезным является:

adb shell setprop debug.rs.max-threads 1 

что ограничивает число ядер процессора, которые будут использоваться до 1 (или любое другое значение настройки к значению счетчика процессора устройства)

+1

, если мне нужно вернуться к умолчанию, установив adb shell setprop debug.rs.default-CPU-driver 0, он не вернется к использованию GPU еще раз. Мне пришлось вручную удалить данные приложения из /data/data/com.*.*.*.*. И переустановите мое приложение. Похоже, нет никакой проверки времени выполнения переменной debug.rs.default-CPU-driver после генерации битового кода. –

+0

Я столкнулся с той же проблемой на Moto e .. есть ли способ проверить и отредактировать эти свойства с помощью Java-кода? –

+1

После оболочки adb setprop debug.rs.default-CPU-driver 0 вам нужно закрыть и снова открыть приложение, после чего снова будет включен GPU. – Settembrini

Смежные вопросы