不影响numpy平均性能的MKL线程数

时间:2019-03-22 16:38:10

标签: python numpy intel-mkl

我正在尝试优化对numpy.mean()的调用时使用的MKL库线程数(我使用的是针对MKL库构建的numpy)。可以在运行时使用mkl-service库中的mkl.set_num_threads(n)动态控制线程数。尽管这确实可以正确设置线程数,并且实际上已使用htop在CPU使用率中对此进行了验证,但我很困惑地发现它不会对运行时产生任何影响。考虑下面的试用代码,其中tmp是(12,384,320)数组:

for j in range(1000):
    out = np.mean(tmp, axis=(0))

使用单个线程,这大约需要21秒,如果我使用更多线程,则需要花费相同的时间。 CPU使用量确实会随着更多线程的增加而增加,但是并没有提高性能。我还通过对最后一个维度进行平均以提高平均缓存效率来验证了此问题。

关于为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

在如此小的输入问题大小的情况下,

MKL摘要统计功能在1个线程中工作。当问题大小>〜10 K个元素时,将打开线程。