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

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动