Количество потоков MKL, не влияющих на производительность среднего значения - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь оптимизировать количество потоков библиотеки MKL, используемых при вызове numpy.mean() (я использую numpy, созданный для библиотеки MKL).Количество потоков можно динамически контролировать во время выполнения, используя mkl.set_num_threads(n) из библиотеки mkl-service .Хотя это правильно устанавливает количество потоков, и фактически это подтверждается при использовании процессора с помощью htop, я удивлен, обнаружив, что это не оказывает никакого влияния на время выполнения.Рассмотрим этот пробный код, где tmp - это массив (12, 384, 320):

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

В одном потоке это занимает примерно 21 секунду, а при увеличенииколичество потоков.Потребление ЦП увеличивается при увеличении количества потоков, но улучшения производительности нет.Я также проверил эту проблему, усредняя по последнему измерению, чтобы сделать усреднение более эффективным кешем.

Есть идеи, почему это может происходить?

1 Ответ

0 голосов
/ 26 июня 2019

MKL Сводные статистические функции работают в 1 потоке в случае таких небольших размеров входных проблем. Нарезание резьбы будет включено, когда размер проблемы> ~ 10 K элементов.

...