基本上,麒麟650 ARM核心是华为荣耀5c手机中的核心。我试图直接在我拥有的root电话上填充C ++代码。此代码正在执行Neon指令并具有OpenMP并行化。当我在手机上执行OpenMP功能时,它会返回:
Num Procs = 8
Num Threads = 1
Max Threads = 8
Num Devices = 0
Default Device = 0
Is Initial Device = 1
这些信息似乎是连贯的,因为麒麟650有8个核心。然而,在手机技术细节中还指出,麒麟可以拥有4核高达1.7GHz(节能核心)和4核高达2GHz(性能核心)。
OpenMP如何处理这些因为我理解它们是异步的?使用我的基准测试,当我针对No OpenMP
和OpenMP - 2 threads
测试OpenMP - 4 threads
时,我会看到加速,但我的OpenMP - 8 threads
结果是灾难。
这些内核是否共享相同的时钟(我使用Hayai库中的clock_gettime
指令来处理所有内容)?在这些平台上使用OpenMP执行操作时,您有什么建议吗?