使用预置深度学习镜像的普通tf1.11运行宽范围、线性和深度模型推理,用于gpu的M9版本显示出比版本M10 (用于cpu推理)更好的性能。
最新:tf- M9 -cu92
cpu:tf- M10 -cpu
在这两个镜像中,tf版本都是1.11,它们都预置了英特尔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当使用英特尔mkl指令而不是M9镜像时,我发现性能下降了2-4倍。注意:尽管M9镜像是针对图形处理器的,但我将cuda设备可见性和基准测试仅限于cpu推断。同样的观察也发生在另一个linux机器上,在一个干净的virtualenv中安装了tf 1.11的pip。
关于如何调试或最大限度地利用英特尔mkl库的任何见解。
发布于 2019-01-20 04:29:37
此行为已在M16+ (具有TF 1.12)中修复。
https://stackoverflow.com/questions/52980437
复制相似问题