Tensorflow AVX支持

6
有人知道Tensorflow编译的可执行文件(此处)是否包含AVX支持吗?我一直在Google Compute Engine上运行那个编译版本的Tensorflow,速度很慢。非常慢。像冷糖浆一样慢。像洛杉矶交通拥堵一样慢。这篇文章说,在Google Compute Engine上使用AVX支持编译可以显著提高性能,但是当我按照该网站上的编译过程时,它失败了。只是想知道是否已经在可执行文件中包含了AVX?

2
使用类似于 objdump -d 的工具进行反汇编,并查找 %ymm。如果您在寄存器名称中看到该字符串,那么代码正在使用 AVX。(Intel 语法不使用“%”前缀来分隔寄存器名称和符号名称,因此只需查找 ymm0 到 ymm15)。当然,这不会检测到 AVX 128 位指令,例如 vmulps %xmm0, %xmm1, %xmm2,因此您还可以查找 vmulps。前导的“v”和(通常)3 个操作数意味着它是一个 AVX 指令,而不是传统的 SSE。 - Peter Cordes
2个回答

5
不,TensorFlow默认发行版是没有CPU扩展的,例如SSE4.1、SSE4.2、AVX、AVX2、FMA等,因为这些版本(例如从pip安装的版本)旨在与尽可能多的CPU兼容。另一个论点是,即使使用这些扩展,CPU的速度也比GPU慢得多,而且中大型机器学习训练通常会在GPU上进行。请参见此处的相关讨论
文章是正确的,AVX和FMA指令显着(高达300%!)加速线性代数计算,即点积、矩阵乘法、卷积等。如果您想利用它,我需要通过编译TensorFlow源代码来实现,这在此问题中有所讨论。

3

这是最简单的方法。只需要一步。

它很容易实现并且对速度有显著影响。可以使训练速度提高3倍。

参考 tensorflow的自定义版本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接