Выполнение широкого, линейного и глубокого вывода модели с помощью простого vanilla tf1.11, который поставляется с предварительно созданными образами глубокого обучения версии M9 для графического процессора, показывает гораздо лучшую производительность по сравнению с версией M10 (для вывода процессора)
M9 : TF-последний-cu92
M10 : TF-последний-процессор
На обоих изображениях версия tf — 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
И логгирование инструкции mkl с таймингами. на изображении 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 в чистой виртуальной среде.
Любые идеи о том, как отладить или получить максимальную отдачу от библиотеки Intel MKL.