Link: https://www.cnblogs.com/yao62995/p/5773142.html html
tensorflow使用了自動化構建工具bazel、腳本語言調用c或cpp的包裹工具swig、使用EIGEN做爲矩陣處理工具、Nvidia-cuBLAS GPU加速計算庫、結構化數據存儲格式protobuf java
Swig c++
|
1. Simplified Wrapper and Interface Generator (SWIG) ,基本思想就是向腳本語言接口公開 C/C++ 代碼。SWIG 容許您向普遍的腳本語言公開 C/C++ 代碼,包括 Ruby、Perl、Tcl 和 Python。 git
參考: github |
|
||
Bazel編程 |
1. bazel假定每一個目錄爲[package]單元,目錄裏面包含了源文件和一個描述文件BUILD,描述文件中指定了如何將源文件轉換成構建的輸出。 api
3. bazel命令: 數據結構 > bazel build -c opt //tensorflow/tools/pip_package:build_pip_package 4. 調試模式: > bazel build -c dbg 參考: 1. 安裝bazel > yum install java-1.8.0-openjdk > yum install java-1.8.0-openjdk-devel > https://github.com/google/bazel/ 下載最新版本bazel_xxx.sh安裝 2. 使用bazel構建系統
3. bazel 命令手冊
|
|
||
EIGEN |
1. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. http://eigen.tuxfamily.org/
2. 經常使用的矩陣計算工具備blas, cublas(caffe)、atlas、openblas(mxnet)、eigen,還有lapack、mkl(intel)、Armadillo(matlab)
3. Eigen庫包含 Eigen模塊和unsupported模塊,其中Eigen模塊爲official module,unsupported模塊爲開源貢獻者開發的,沒有official support。 1. 矩陣運算庫blas, cblas, openblas, atlas, lapack, mkl https://eigen.tuxfamily.org/dox/
|
|||
protobuf |
1. Protocol Buffers 是一種輕便高效的結構化數據存儲格式,能夠用於結構化數據串行化,或者說序列化。它很適合作數據存儲或 RPC 數據交換格式。可用於通信協議、數據存儲等領域的語言無關、平臺無關、可擴展的序列化結構數據格式。 2. 使用 > Writer: SerializeToOstream(), Reader: ParseFromIstream() > required:一個格式良好的消息必定要含有1個這種字段; > optional:消息格式中該字段能夠有0個或1個值(不超過1個)。 > repeated:在一個格式良好的消息中,這種字段能夠重複任意屢次(包括0次)。至關於java中的List。 3.
4. grpc須要理解4個方面(service,stub,channel,observer)
|
|
||
Stream Executor |
> google stream executor team: work on parallel programming models for CPUs, GPUs and other platforms. https://github.com/henline/streamexecutordoc https://github.com/henline/streamexecutordoc/blob/master/se_and_openmp.rst |
|
||
TF C++ |
1. TF源碼安裝: following the instructions here 2. example: tensorflow/cc/tutorials/example_trainer.cc 3. 自定義的op Kernel: tutorial for adding a new op in C++. 4. TF c++ 調試: debugging Tensorflow's C++ code behind the SWIG interface > The simplest interface between Python and C++ is the pure-C API in tensor_c_api.h |