我的dev env如下:
Device: Nexus 5
Android: 4.4.2
SDK Tools: 22.6.1
Platform Tools: 19.0.1
Build tools: 19.0.3
Build Target: level 19
Min Target: level 19
我在做一些图像处理应用程序。基本上,我需要对图像进行预处理步骤,然后使用卷积5x5对图像进行过滤。在预处理步骤中,我成功地使脚本在GPU上运行,并取得了良好的性能。因为Renderscript提供了一个5x5的卷积内部函数,所以我想使用它来使整个管道尽可能快。然而,我发现在预处理步骤之后使用5x5卷积内部函数非常慢。相反,如果我使用adb工具强制所有脚本在CPU上运行,5x5卷积内部函数的速度要快得多。在这两种情况下,预处理步骤所消耗的时间基本相同。因此,是内部函数的性能造成了差异。
另外,在我使用的代码中
Allocation.USAGE_SHARED
在创建所有分配时,希望共享内存将促进CPU和GPU之间的内存访问。
既然我知道内部函数是在CPU上运行的,那么这种行为是正常的吗?还是我错过了什么?有没有办法让GPU脚本/CPU内部混合代码变得更快?非常感谢!
发布于 2014-04-01 03:23:12
5X5卷积内部(默认的android的CPU驱动程序)使用霓虹灯。这非常快,我的测量结果也证明了这一点。通常,我没有找到任何rs apis,然后在两个5x5矩阵上使用5x5卷积。这是一个问题,因为它阻止了编写更复杂的内核。
考虑到您注意到的性能差异,您设备上的GPU驱动程序很可能支持5X5卷积固有特性,其运行速度可能比使用霓虹灯的CPU5x5 convolveIntrinsic慢。因此,强制使用渲染脚本的CPU可以提供更好的性能。
https://stackoverflow.com/questions/22770284
复制相似问题