TensorFlow如何充分使用所有CPU核数,提高TensorFlow的CPU使用率,以及Intel的MKL加速
TensorFlow如何充分使用所有CPU核数,提高TensorFlow的CPU使用率,以及Intel的MKL加速
转载链接:http://nooverfit.com/wp/tensorflow%E5%A6%82%E4%BD%95%E5%85%85%E5%88%86%E4%BD%BF%E7%94%A8%E6%89%80%E6%9C%89cpu%E6%A0%B8%E6%95%B0%EF%BC%8C%E6%8F%90%E9%AB%98tensorflow%E7%9A%84cpu%E4%BD%BF%E7%94%A8%E7%8E%87%EF%BC%8C%E4%BB%A5/
TensorFlow如何充分使用所有CPU核数,提高TensorFlow的CPU使用率,以及Intel的MKL加速
许多朋友使用服务器时,碰巧服务器没有安装GPU或者GPU都被占满了。可是,服务器有很多CPU都是空闲的,其实,把这些CPU都充分利用起来,也可以有不错的训练效果。
但是,如果你是用CPU版的TF,有时TensorFlow并不能把所有CPU核数使用到,这时有个小技巧David 9要告诉大家:
- with tf.Session(config=tf.ConfigProto(
- device_count={"CPU":12},
- inter_op_parallelism_threads=1,
- intra_op_parallelism_threads=1,
- gpu_options=gpu_options,
- )) as sess:
在Session定义时,ConfigProto中可以尝试指定下面三个参数:
- device_count, 告诉tf Session使用CPU数量上限,如果你的CPU数量较多,可以适当加大这个值
- inter_op_parallelism_threads和intra_op_parallelism_threads告诉session操作的线程并行程度,如果值越小,线程的复用就越少,越可能使用较多的CPU核数。如果值为0,TF会自动选择一个合适的值。
David 9亲自试验,训练似乎有1倍速度的提高。
另外,有的朋友的服务器上正好都是Intel的CPU,很可能需要把Intel的MKL包编译进TensorFlow中,以增加训练效率。这里David 9把MKL编译进TF的关键点也指出一下。
官方的指导是如下3 步:
- Run “./configure” from the TensorFlow source directory, and it will download latest Intel MKL for machine learning automatically in tensorflow/third_party/mkl/mklml if you select the options to use Intel MKL
- Execute the following commands to create a pip package that can be used to install the optimized TensorFlow build.
- PATH can be changed to point to a specific version of GCC compiler:
export PATH=/PATH/gcc/bin:$PATH - LD_LIBRARY_PATH can also be changed to point to new GLIBC :
- export LD_LIBRARY_PATH=/PATH/gcc/lib64:$LD_LIBRARY_PATH.
- Build for best performance on Intel Xeon and Intel Xeon Phi processors:
- bazel build --config=mkl --copt="-DEIGEN_USE_VML" -c opt //tensorflow/tools/pip_package:
- build_pip_package
- PATH can be changed to point to a specific version of GCC compiler:
3. Install the optimized TensorFlow wheel
- bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/path_to_save_wheel
- pip install --upgrade --user ~/path_to_save_wheel /wheel_name.whl
与官网编译TF的大致流程类似,就是先./configure,再用bazel编译TensorFlow。
最后用编译好的bazel工具生成whl的包,用来安装pip TensorFlow。
唯一的不同要注意用–config=mkl的选项编译TensorFlow:
bazel build –config=mkl –copt=”-DEIGEN_USE_VML” -c opt //tensorflow/tools/pip_package: build_pip_package
这样,用pip安装完成TF后,mkl就集成在TF中了。
参考文献:
- https://software.intel.com/es-es/articles/tensorflow-optimizations-on-modern-intel-architecture
- https://richardstechnotes.wordpress.com/2016/08/09/encouraging-tensorflow-to-use-more-cores/
- https://www.tensorflow.org/install/install_sources
注:本文系转载,如有版权或者问题,解释权归原博主
TensorFlow如何充分使用所有CPU核数,提高TensorFlow的CPU使用率,以及Intel的MKL加速相关推荐
- linux java 查询cpu核数,linux java 查询cpu核数
linux java 查询cpu核数 [2021-02-06 01:50:36] 简介: 在Linux中,可以使用"cat /proc/cpuinfo| grep "cpu co ...
- linux查看cpu核数命令,centos查看CPU以及核数命令
1.cd - :返回上次所在的目录 2.查看系统版本 cat /etc/redhat-release 3.查看linux内核版本 1)cat /proc/version 2) uname -a 3) ...
- linux查看物理机cpu核数,linux 查看物理cpu核数
SCC(超级计算集群)简介 SCC概述 超级计算集群(Super Computing Cluster,SCC)使用高速RDMA网络互联的CPU以及GPU等异构加速设备,面向高性能计算.人工智能/机器学 ...
- linux cpu核数和线程数,cpu个数、核数和线程的理解
1.查看物理cpu个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2.查看核心数量 grep 'core id' /proc/cpuinfo ...
- Linux-系统物理CPU个数、CPU核数
首先要明确物理cpu个数.核数.逻辑cpu数的概念 1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) 2.cpu核数:单块CPU上 ...
- 物理cpu数和cpu核数和逻辑cpu数和vcpu区别
物理cpu数和cpu核数和逻辑cpu数和vcpu区别 1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) 2.cpu核数:单块CPU ...
- cpu核数和逻辑个数的区别_区别: CPU 路数、CPU 核数、物理 CPU 个数、逻辑 CPU 个数...
Overview CPU 路数(物理 CPU 个数) 机器的主板上实际插入插槽的 CPU 个数 CPU 核数 CPU 核数:单块 CPU 上面能处理数据的芯片组的数量,如双核.四核等 (cpu cor ...
- cpu核数和逻辑个数的区别_CPU逻辑核心数和物理核心数是什么意思?
展开全部 1.物理cpu数:主板上实际插入的cpu数量,可以数不重e69da5e887aa3231313335323631343130323136353331333366303666复的 physic ...
- linux cpu核数查看
1.首先要明确物理cpu个数.核数.逻辑cpu数的概念 1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) 2.cpu核数:单块CP ...
最新文章
- 瓜分60万现金大奖,第二届云原生编程挑战赛等你来报名!
- CentOS7 安装LNMP(Linux+Nginx+MySQL+PHP)
- 人生第一次手术:0806
- ZOJ3370. Radio Waves(2-sat)
- asp.net截取指定长度的字符串内容
- 10853k1_领导学基础_21秋考试
- C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试
- 联想Y 系列 四面壳展示
- 【codevs1245】最小的N个和
- 大数据开发笔记(九):Flink基础
- 【数据分析】基于matlab GUI学生成绩查询系统【含Matlab源码 604期】
- java嗅探网页视频_网页视频嗅探器( API钩子 )
- 思科模拟器配置路由表详细教程
- Zookeeper ipv6的坑
- 快手私信名片如何制作?
- 中拓互联携手企信易为企业构建信息,传递信任
- 扫描版pdf重排 linux,【Kindle Pdf Viewer中文安装教程】支持扫描版PDF重排及其他主流文件格式...
- MATLAB利用仿射变换实现图像的缩放,旋转,剪切,平移操作
- 我的世界显示服务器头像,我的世界怎么让服务器升级换头像 | 手游网游页游攻略大全...
- 一些提取api key的正则表达式
热门文章
- 树莓派 linux0.12,12 个可替代树莓派的单板机
- kvm架构服务器_顺应云计算变革大势,腾讯云全新星星海自研服务器真正为云而生...
- 计算机发现概述教案,计算机网络概述教案
- golang runtime.systemstack 泄漏排查
- Design Pattern IDisposable Pattern C
- 数据结构 - 二叉排序树
- 专题 20 常用调试技术
- VSCODE常见问题(设置为4个空格)
- 教师节html源码,教师节_实用电脑小技巧:通俗解答html 自己动手建一个非常简单的网页_沪江英语...
- 机器视觉_Java机器学习,第2部分