MegEngine / MegPeak

Apache License 2.0
247 stars 38 forks source link

Multiple threads for ARM big.LITTLE cpu scheduling #10

Closed zchrissirhcz closed 2 years ago

zchrissirhcz commented 2 years ago

Hi, MegPeak authors:

个人理解为 megpeak 的现有实现,为CPU单线程的程序优化提供了参考的性能上界。这里想讨论下多线程情况。

在 ARM big.LITTLE CPU调度情况下,多线程方式实现的函数,可能被调度分配到不同类型的核心上。此时的性能上界估计,有什么指导方向吗?

例如,在小米11手机上有1个X1超大核,3个A78大核,4个A55小核。对于 OpenCV Android 提供的 cv::resize( ) 函数实现,默认开启了2线程,可能分配到 X1+A78, 也可能分配到 A78 + A55, 或 A55 + A55. 三种情况下的耗时会有较大差异。 考虑到真实场景下 app 通常不能绑定核心, 不知道此时的性能上界估计,有没有什么确定性的方法?

xxr3376 commented 2 years ago

感觉在不能绑定核心的情况下很难有效估计性能,影响因素实在是太多了