Снижение производительности тензорного потока с Intel MKL

Выполнение широкого и линейного и глубокого вывода модели с простым ванильным tf1.11, который поставляется с предварительно собранными изображениями глубокого обучения, версия M9 для графического процессора показывает гораздо лучшую производительность по сравнению с версией M10 (для вывода процессора)

M9: tf-latest-cu92

M10: самый последний процессор

На обоих изображениях версия 1.11 имеет встроенную версию с оптимизированными двоичными файлами Intel MKL. Я включаю подробное ведение журнала для инструкций MKL и на изображении M10 я вижу много настроек, связанных с MKL

 KMP_AFFINITY=granularity=fine,verbose,compact,1,0
 KMP_BLOCKTIME=0
 KMP_SETTINGS=1
 OMP_NUM_THREADS=32

И логирование мкл инструкции с таймингами. на изображении M9 я не наблюдаю ничего подобного, хотя оба изображения показывают информацию о версии как:

MKL_VERBOSE Intel(R) MKL 2019.0 Product build 20180829 for Intel(R) 64 architecture Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors, Lnx 2.20GHz lp64 intel_thread
MKL_VERBOSE SDOT(2,0x5622b7736500,1,0x5622b7736500,1) 2.54ms CNR:OFF Dyn:1 FastMM:1 TID:0  NThr:16
1.11.0

Я вижу в 2-4 раза худшую производительность при использовании инструкций intel mkl, чем при использовании образа M9. Примечание: несмотря на то, что изображение M9 предназначено для графических процессоров, я переключился на видимость устройства cuda и тестирование производительности только для процессора. То же самое наблюдение сделано на другом Linux-боксе с pip-установкой tf 1.11 в чистом virtualenv.

Любые идеи о том, как отладить или получить максимум от библиотеки Intel MKL.

0 ответов

Это поведение было исправлено в M16+ (с TF 1.12).

Другие вопросы по тегам