Tensorflow 源码算子以及架构实现分析

Posted tugouxp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow 源码算子以及架构实现分析相关的知识,希望对你有一定的参考价值。

本文参考https://www.tensorflow.org/install/source

Tensorflow整体架构:

下载Tensorflow源码:

git clone https://github.com/tensorflow/tensorflow.git

下载完成后,可以看到,tensorflow目录结构如下:

maliankang@AwExdroid112:~/tensorflow$ tree -L 2 -d
.
├── tensorflow
│   ├── c
│   ├── cc
│   ├── compiler
│   ├── core
│   ├── distribute
│   ├── docs_src
│   ├── examples
│   ├── go
│   ├── java
│   ├── js
│   ├── lite
│   ├── python
│   ├── security
│   ├── stream_executor
│   └── tools
├── third_party
│   ├── absl
│   ├── android
│   ├── aws
│   ├── benchmark
│   ├── boringssl
│   ├── clang_toolchain
│   ├── clog
│   ├── compute_library
│   ├── cpuinfo
│   ├── dlpack
│   ├── eigen3
│   ├── farmhash
│   ├── fft2d
│   ├── flatbuffers
│   ├── FP16
│   ├── gemmlowp
│   ├── git
│   ├── googleapis
│   ├── gpus
│   ├── grpc
│   ├── hadoop
│   ├── hexagon
│   ├── highwayhash
│   ├── hwloc
│   ├── icu
│   ├── jpeg
│   ├── kissfft
│   ├── llvm
│   ├── llvm_openmp
│   ├── mkl
│   ├── mkl_dnn
│   ├── mlir
│   ├── mpi
│   ├── nasm
│   ├── nccl
│   ├── opencl_headers
│   ├── pasta
│   ├── protobuf
│   ├── psimd
│   ├── py
│   ├── python_runtime
│   ├── remote_config
│   ├── ruy
│   ├── sobol_data
│   ├── systemlibs
│   ├── tensorrt
│   ├── tf_runtime
│   └── vulkan_headers
└── tools

66 directories
maliankang@AwExdroid112:~/tensorflow$

算子实现集中分布在tensorflow/tensorflow/lite/kernels目录下:

maliankang@AwExdroid112:~/tensorflow/tensorflow/lite/kernels$ ls -l |grep test|wc -l
139
maliankang@AwExdroid112:~/tensorflow/tensorflow/lite/kernels$ ls -l |wc -l
298
maliankang@AwExdroid112:~/tensorflow/tensorflow/lite/kernels$ 

基本上,每个算子的实现都是一个独立文件,并且对应一个测试文件,基于这个假设(和实际相符),我们可以粗略统计一下算子的个数,就是

文件总数-test文件总数=298-139 = 159,也就是大概有160个算子,是否可以理解为160个算子基本能够满足所有网络的需求呢?我认为是的,基于的考虑是TF是一个比较全面的框架.

以常用的conv算子为例,简单分析一下它的实现:

对应的真正实现在 optimized_ops命名空间中的Conv函数,它在另一个文件中,我们找到它, 万恶的矩阵乘法,一眼能看明白的,肯定是数学系毕业的大佬。


结束!

以上是关于Tensorflow 源码算子以及架构实现分析的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow 源码分析-GPU调用是如何实现的

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

OneFlow源码解析:算子签名的自动推断

leveldb 源码--总体架构分析

协程库libtask源码分析之架构篇

#tensorflow object detection api 源码分析