Принуждение Renderscript для работы на процессоре или графическом процессоре (Atleast для настройки производительности)

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

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

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

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

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

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

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

 adb shell setprop debug.rs.max-threads 1 

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