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



我正在尝试优化对numpy.mean()进行调用时使用的MKL库线程的数量(我使用的是针对MKL库构建的Numpy)。可以使用MKL服务库中的mkl.set_num_threads(n)在运行时动态控制线程的数量。虽然这确实正确设置了线程数,并且实际上用htop在CPU使用中验证了这一点,但我很困惑地发现它对运行时没有任何影响。考虑此试验代码,其中tmp为(12、384、320)数组:

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

使用一个线程,这占用大约21秒,如果我使用更多的线程,则占用相同的数量。CPU消耗确实会增加更多线程,但是没有性能提高。我还通过在最后一个维度上取平均值来验证了这个问题,以使平均缓存更有效。

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

mkl摘要统计函数在1个线程中起作用,在如此小的输入问题大小的情况下。当问题大小> 〜10 k元素时,线程将打开。

最新更新