Моя тестовая платформа:Почему очень просто Renderscript работает в GPU в 3 раза медленнее, чем в CPU
Development OS: Windows 7 32-bit
Phone: Nexus 5
Phone OS version: Android 4.4
SDK bundle: adt-bundle-windows-x86-20131030
Build-tool version: 19
SDK tool version: 22.3
Platform tool version: 19
Я написал очень простой Renderscript следующим образом:
#pragma rs_fp_relaxed
uchar4 __attribute__((kernel)) someKernel(uchar4 in, uint32_t x, uint32_t y){
return in;
}
Я также использовал
adb shell setprop debug.rs.default-CPU-driver 1
, чтобы заставить скрипт работать на CPU для сравнения производительности.
Я также использовал сценарий для запуска в течение короткого периода времени для прогрева, прежде чем я посчитаю время работы.
Чтобы убедиться, что я знаю, является ли код работать на GPU или CPU, я могу контролировать следующие две вещи:
- я контролировать LogCat, чтобы увидеть, если отображается этот журнал «успешно загружены выполнения: libRSDriver_adreno. так»
- я контролировать использование процессора
Я бегу этот сценарий с двумя большими изображениями с разрешением 1600by1067 и 1920by1200 соответственно. Так как Nexus 5, использующий Android 4.4, поддерживает вычисления Rendercript GPU, я предположил, что производительность этого простого скрипта будет выше в GPU. Тем не менее, результат последовательно показал, что скорость работы скрипта (многоядерный процессор Nexus 5) почти в 3 раза выше, чем на графическом процессоре Adreno 330.
Я хотел бы спросить, почему это произошло, и если я пропустил что-то, чтобы ускорить этот простой скрипт.
Большое спасибо Стивен, я разместил следующий вопрос здесь: http://stackoverflow.com/questions/20382860/why-does-those-google-image-processing-sample-renderscript-runs-slower-on-gpu Надеюсь, ты поможешь мне. Я отвечу на этот ответ. –