tensorflow源码编译之流程分析

前言:

一般来说,如果安装tensorflow主要目的是为了调试些小程序的话,只要下载相应的包,然后,直接使用pip install tensorflow即可。

但有时我们需要将Tensorflow的功能移植到其它平台,这时就无法直接安装了。需要我们下载相应的Tensorflow源码,自已动手编译了。

正文:

Tensorflow功能代码庞大,结构复杂;如何快速了解编译结构,就显示尤为重要了。

Tensorflow主体结构:

整个框架以C API为界,分为前端和后端两大部分。

前端:提供编译模型,多语言接口支持,如:python,java,c++等。

后端:提供运行环境,完成计算图执行,大致可分为4层:

运行层:分布式运行时和本地运行时,负责计算图的接收,构造,编排等;

计算层:提供各算子的内核实现,例如: conv2d,relu等;

通信层:实现组件间数据通信,基于GRPC,RDMA两种通信方式;

设备层:提供多种异构设备支持,如:CPU,GPU,TPU,FPGA等;

模型构造和执行流程:

Tensorflow图的构造与执行是分开的,用户添加完算子,构建好图后,才开始进行训练和执行。

流程如下:

       1、图构建:用户在Client中基于Tensorflow的多语言编程接口,添加算子,完成计算图的构造;

2、 图传递:Client开启Session,通过它建立和Master之间的连接,执行Session.run()时,将构造好的graph序列化为graphdef后,以protobuf格式传递给master。

3、图剪枝:master 根据session.run()传递的fetches和feeds列表,反向遍历全图full graph,实施剪枝,得到最小依赖子图;

未完待续。。。

原文地址:https://www.cnblogs.com/jimchen1218/p/11608640.html

时间: 2024-10-11 00:24:19

tensorflow源码编译之流程分析的相关文章

boost.asio源码剖析(三) ---- 流程分析

* 常见流程分析之一(Tcp异步连接) 我们用一个简单的demo分析Tcp异步连接的流程: 1 #include <iostream> 2 #include <boost/asio.hpp> 3 4 // 异步连接回调函数 5 void on_connect(boost::system::error_code ec) 6 { 7 if (ec) // 连接失败, 输出错误码 8 std::cout << "async connect error:"

TensorFlow 源码编译安装

## Install prerequisites (rhel) yum install numpy python-devel python-wheel python-mock ## Install Bazel wget https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel-0.4.5-dist.zip unzip bazel-0.4.5-dist.zip -d bazel ## Modify bazel WORKSPA

[图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)

TF Prepare [图解tensorflow源码] 入门准备工作 [图解tensorflow源码] TF系统概述篇 Session篇 [图解tensorflow源码] Session::Run()流程图 (单机版) [图解tensorflow源码] Session::Run() 分布式版本 Graph 篇 [图解tensorflow源码] Graph 图模块 (UML视图) [图解tensorflow源码] Graph 图模块 —— Graph Loading [图解tensorflow源码

在Ubuntu中从源码编译TensorFlow

这里展示从源码编译得TensorFlow的过程. 原版教程在github上https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md#installing-from-sources 首先是安装构建工具Bazel(http://www.bazel.io/docs/install.html#install-on-ubuntu) Install on Ubuntu Insta

Linux编译安装源码包的流程

本文参考:http://www.linuxfromscratch.org/lfs/view/7.10-rc1/chapter05/generalinstructions.html 流程: 1.  下载并解压源码包2.  运行:configure3.  编译:make4.  安装:make install 编译时需要注意一个原则:不要在解压的包中直接执行./configure.make.make install等命令,需要在源码目录下另外新建一个目录,在新建的目录中执行以上命令. 例子:这里以源码

编译TensorFlow源码

  编译TensorFlow源码 参考: https://www.tensorflow.org/install/install_sources https://github.com/tensorflow/tensorflow/blob/master/tensorflow/go/README.md 一 环境 ubuntu 16.04.2   (virtualbox 虚拟机) 二  安装 bazel 参考:https://docs.bazel.build/versions/master/instal

centos7 源码编译安装TensorFlow CPU 版本

一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. 但是在编译之中,发现很多坑,由此记录一下. 环境相关: 系统:centos7 python版本:2.7.5 二.准备 1. 安装相关依赖 # 一般会缺失的依赖 yum -y install java-1.8.0-openjdk-devel automake autoconf libtool libi

React Native Android入门实战及深入源码分析系列(2)——React Native源码编译

本文为老曾原创,转载需注明出处:http://blog.csdn.net/minimicall?viewmode=contents 在上一节中,我们通过一个相册的制作来学习了React Native编写.这一节我们需要开始学习React Native的源码. 学习源码,从编译源码开始. 首先,我们需要把代码从github中克隆下来. https://github.com/facebook/react-native.git 然后,我们可以切换到它的稳定分支,2016-03-30是我的操作时间,这个

Tensorflow源码解析1 -- 内核架构和源码结构

1 主流深度学习框架对比 当今的软件开发基本都是分层化和模块化的,应用层开发会基于框架层.比如开发Linux Driver会基于Linux kernel,开发Android app会基于Android Framework.深度学习也不例外,框架层为上层模型开发提供了强大的多语言接口.稳定的运行时.高效的算子,以及完备的通信层和设备层管理层.因此,各大公司早早的就开始了深度学习框架的研发,以便能占领市场.当前的框架有数十种之多,主流的如下(截止到2018年11月) 显然TensorFlow是独一无