TensorFlow:CPU选择AVX-512 AMD,英特尔?

TensorFlow:CPU选择AVX-512 AMD,英特尔?,tensorflow,cpu,cpu-architecture,Tensorflow,Cpu,Cpu Architecture,我的大部分培训都是使用RNN(LSTM或GRU)完成的,我发现CPU承担了大部分负载。 我正在寻找一个新的系统来进行测试,我还没有看到任何关于哪个体系结构更有利于使用TensorFlow的ML的文章。这似乎可以归结为Intel Core-X系列有AVX-512,而AMD没有(具体来看i9-7900X和Threadripper 1950X,因为它们的价格相似)。 所以我有两个问题: TensorFlow是否使用AVX-512扩展,以及 这些扩展是否足以弥补1950X->7900X的6核缺陷 ~z~

我的大部分培训都是使用RNN(LSTM或GRU)完成的,我发现CPU承担了大部分负载。 我正在寻找一个新的系统来进行测试,我还没有看到任何关于哪个体系结构更有利于使用TensorFlow的ML的文章。这似乎可以归结为Intel Core-X系列有AVX-512,而AMD没有(具体来看i9-7900X和Threadripper 1950X,因为它们的价格相似)。 所以我有两个问题:

  • TensorFlow是否使用AVX-512扩展,以及
  • 这些扩展是否足以弥补1950X->7900X的6核缺陷

  • ~z~还有什么我没有考虑的因素吗?TF针对英特尔处理器而不是AMD进行的任何专门性能优化?

    我投票将这个问题作为离题回答,因为这是一个硬件问题,而不是指南中定义的编程问题。Tensorflow非常喜欢FMA吞吐量,不是吗?采用AVX512的英特尔CPU的每核每时钟FMA吞吐量是AMD的4倍,因为AMD将256b FMA拆分为两个128b UOP,每个核心有两个128b FMA执行单元。但Intel在每个核心中有两个512b FMA单元。当然,饱和会占用大量内存带宽,并且运行512b指令会关闭port1上的向量ALU,因此任何实际工作负载都不会像那样剧烈。我不知道Tensorflow对Skylake-X上的FMA单元的饱和程度有多接近于任何类型的工作负载,所以请寻找基准。@PeterCordes我在AVX上看到过这一点,但我从未在同一篇文章中提到Tensorflow和AVX512。《性能指南》介绍了一些性能测试。我见过的每一个基准测试都是关于GPU性能的,但仍然没有理由解释为什么。这就是为什么我不同意你肯-我在寻找Tensorflow数据,而不是意见。AVX512可能工作:。SKX和Ryzen的缓存/内存体系结构有着显著的不同,这可能也会产生很大的影响。(例如,Ryzen的每个核心集群有多个L3缓存,因此集群之间的共享速度较慢)。您肯定需要对工作负载进行基准测试,就像您在两个CPU上所做的那样,以便进行可靠的比较;从配置文件结果推断Skylake或Haswell桌面上的瓶颈是什么是很困难的(而且你必须是CPU架构/性能调优专家)。我走了英特尔路线,我还没有组装,但一旦组装,我将使用和不使用avx512 gcc opt进行编译。4.9有avx512,但不是4.8,所以我将确保使用4.9或更高版本,这不是世界上最具决定性的研究,但作为关键的区别之一,它将为其他人提供一个很好的数据点,我将很快回到这里。