现在在 Windows 上使用最新版本的 Tensor Flow,我正试图让一切尽可能高效地工作。但是,即使从源代码编译,我似乎仍然无法弄清楚如何启用 SSE 和 AVX 指令。
默认过程: https ://github.com/tensorflow/tensorflow/tree/r0.12/tensorflow/contrib/cmake 没有提到如何做到这一点。
我发现的唯一参考是使用 Google 的 Bazel: 如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?
有谁知道使用 MSBuild 打开这些高级指令的简单方法?我听说他们提供了至少 3 倍的加速。
为了帮助那些寻找类似解决方案的人,这是我目前收到的警告,如下所示: https ://github.com/tensorflow/tensorflow/tree/r0.12/tensorflow/contrib/cmake
我在 64 位平台上使用 Windows 10 Professional、Visual Studio 2015 社区版、Anaconda Python 3.6 和 cmake 版本 3.6.3(更高版本不适用于 Tensor Flow)
原文由 Aerophilic 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,我试图解决这个问题,但我不确定它是否真的有效。
在
CMakeLists.txt
你会发现以下语句:在 MSVC 平台上,测试失败是因为 MSVC 不支持
-march=native
标志。我修改了如下语句:通过这样做,cmake 将检查
/arch:AVX
是否可用并使用它。根据 MSDN 和 MSDN ,默认情况下为 x86 编译启用 SSE2 支持,但不适用于 x64 编译。对于 x64 编译,您可以选择使用 AVX 或 AVX2。我上面使用了AVX,因为我的CPU只支持AVX,如果你有兼容的CPU,你可以试试AVX2。通过使用上面的
CMakeLists.txt
编译,编译过程比官方发布的要慢得多,关于 ‘AVX/AVX2’ 的警告消失了,但关于 SSE/SSE2/3/4.1⁄4.2 的警告仍然存在。我认为这些警告可以忽略,因为 x64 MSBuild 没有 SSE 支持。我现在正在测试新的 pip 包。它可能比以前更快,但我不想写一个新的基准……
任何对此感兴趣的人,请测试新包是否真的更快。
我在最后一个 git master 分支上做了所有这些,2017-3-12。 pip 包名显示是 tensorflow 1.0.1