Mat*_*u G 6 c++ parallel-processing android multicore openmp
我用一些用 JNI 包装的 C++ 代码为 android 编写了一个图像处理应用程序(https://play.google.com/store/apps/details?id=cv.cvExperiments)。为了在多核处理器上获得一些加速,我用 openmp “parallel for” 指令注释了昂贵的循环。
问题是在 x86 上,我在 4cores proc 上获得了从 x3 到 x5 的一些加速,但是在 Android 上,激活 OpenMP(使用 -fopenmp)在 ARM 32 位上没有任何加速,甚至在 64 位 armv8 上减慢代码骁龙810。
我错过了什么 ?有没有人可以观察到与 x86 cpu 相当的 android+arm 加速?
互联网上有很多关于如何激活 OpenMP 的教程,但没有显示加速的基准。任何指针?
我发现的唯一相关信息是 armv8 上 OpenMP 开销的基准测试,他们还注意到一些相当高的开销:https ://wiki.linaro.org/WorkingGroups/Middleware/Graphics/GPGPU/Docs/OpenMPforARMv8PortAnalysis
谢谢,马修
经过一个小型基准测试(https://gist.github.com/matt-42/30b7caf73c345c28e55b7cfd82f5540c)后,我可以观察到 8 核 Armv8 上的速度提升了 2 倍。我认为结论是,如果您可以使用 OpenMP 在桌面 CPU 上获得一些加速,这并不意味着您会在 ARM CPU 上看到类似的加速。
| 归档时间: |
|
| 查看次数: |
995 次 |
| 最近记录: |