Tensorflow针对CPU的编译优化加速-解决Not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

本文主要是介绍Tensorflow针对CPU的编译优化加速-解决Not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文介绍Tensorlfow 针对 CPU SSE4.1 SSE4.2 AVX AVX2 FMA 的编译优化,以提升Tensorflow在CPU上的计算速度,实测可以提升两倍以上的速度。

1、问题

在用 pip 安装tensorflow的CPU版本后,在运行的时候通常会出现如下提示:Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

该提示说明你的CPU支持AVX扩展,但是你安装的TensorFlow版本无法编译使用。而AVX的利用可以大大提升线性代数运算。

由于AVX不是所有CPU都支持(实际上08年以后的intel  CPU都支持...),所以通过 pip install 安装的 tensorflow CPU 版本是不支持AVX的。

---------------

所谓AVX,全称为高级矢量扩展(Advanced Vector eXtensions,AVX)是英特尔在2008年3月提出的英特尔和AMD微处理器的x86指令集体系结构的扩展,英特尔首先通过Sandy Bridge处理器在2011年第一季度推出,随后由AMD推出Bulldozer处理器在2011年第三季度.AVX提供了新功能,新指令和新编码方案。

特别是,AVX引入了融合乘法累加(FMA)操作,加速了线性代数计算,即点积,矩阵乘法,卷积等。几乎所有机器学习训练都涉及大量这些操作,因此将会支持AVX和FMA的CPU(最高达300%)更快。该警告指出您的CPU确实支持AVX。

---------------

2、AVX编译优化

 Tensorflow使用谷歌开源的 Bazel 自动化构建工具编译项目,有一定的学习成本。

但是可以借助github上编译好的版本进行安装。 

(1)linux/Mac OS 编译

github地址: https://github.com/lakshayg/tensorflow-build

下表为开源项目中的一部分,根据Tensorflow、Ubuntu、GCC、和python版本选择对应的下载链接。

实际上版本并没有表中那么严格的限制,比如tensorflow版本,版本 1.4.0~1.13.0的主要API变动不大,假如表格中没有对应版本的话,可以选最近的版本,实测是可以通过的。

同样的,GCC版本假如高于表中的版本,也选最近的低版本即可

操作系统也不一定是Ubuntu,应该Debian系的都可以。

TFHWOSGCCPythonSupports 
1.9.0CPUUbuntu 16.045.43.6.6FMA, AVX, AVX2, SSE4.1, SSE4.2Download
1.9.0CPUUbuntu 16.045.43.5.2FMA, AVX, AVX2, SSE4.1, SSE4.2Download
1.9.0CPUUbuntu 16.045.42.7.12FMA, AVX, AVX2, SSE4.1, SSE4.2Download
1.9.0CPUUbuntu 18.047.33.6.5FMA, AVX, AVX2, SSE4.1, SSE4.2Download
1.10.0CPUUbuntu 18.047.33.6.5FMA, AVX, AVX2, SSE4.1, SSE4.2Download
1.10.0CPUUbuntu 18.047.32.7.15rc1FMA, AVX, AVX2, SSE4.1, SSE4.2Download

下载后得到 tensorflow-1.9.0-cp36-cp36m-linux_x86_64.whl 类似的文件,然后直接在对应的环境中:

pip install tensorflow-1.9.0-cp36-cp36m-linux_x86_64.whl

或者:

conda install tensorflow-1.9.0-cp36-cp36m-linux_x86_64.whl

然后再运行项目,AVX 相关的警告就消失了,而且模型训练和测试速度应该有大幅提升。

(2)windows 编译

github 地址:https://github.com/fo40225/tensorflow-windows-wheel

方法同上,找到对应的版本 pip install 或者conda install 即可

 

这篇关于Tensorflow针对CPU的编译优化加速-解决Not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101106

相关文章

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t