Tensorflow程式碼目錄組織
阿新 • • 發佈:2019-01-06
Tensorflow/core目錄包含了TF核心模組程式碼。
- public: API介面標頭檔案目錄,用於外部介面呼叫的API定義,主要是session.h 和tensor_c_api.h。
- client: API介面實現檔案目錄。
- platform: 主要是隔離不同的作業系統,包含了不同OS系統相關介面檔案,如file system, env等,降低了跨平臺的難度。
- protobuf: tensorflow前後端主要是使用了protocol buffer協議定義。在原始碼目錄中、最主要的是master_service.proto和work_service.proto兩個檔案。分別聲明瞭master和worker的服務藉口。
- common_runtime: 公共執行庫,包含session, executor, threadpool, rendezvous, memory管理, 裝置分配演算法SimplePlacer,對device的定義,記憶體分配演算法BFC(best-fit with coalescing)。
- distributed_runtime: 分散式執行模組,如rpc session, rpc master, rpc worker, graph manager。
- framework: 實現了tf的基本執行方式。其中包含tensor等資料結構,還包括資料型別,資源管理器以及通訊機制等資訊。運算元的實現中採用了註冊
- graph: 實現的計算圖模型的資料結構,包括邊edge,節點node,圖graph等。以及圖的遍歷演算法以及佈置節點所需要的代價模型。
- kernels: kernels是op的底層實現,op是kernels的上層抽象。對於不同的計算平臺(gpu\cpu\tpu等)有不同的實現。比如對於cpu來說,數值計算會基於Eigen庫。Eigen庫是一個c++編寫的模板庫,支援整數、複數、浮點數,使用模板程式設計、可以為特殊資料結構提供矩陣操作。而gpu的運算則是基於cuda完成的。
- lib: 公共基礎庫,如gif、gtl(google模板庫)、hash、histogram等。
- ops: 基本ops運算,ops梯度運算,io相關的ops,控制流和資料流操作
- Tensorflow/stream_executor目錄是平行計算框架,由google stream executor團隊開發。
- Tensorflow/contrib目錄是contributor開發目錄。
- Tensroflow/python目錄是python API客戶端指令碼。
- Tensorflow/tensorboard目錄是視覺化分析工具,不僅可以模型視覺化,還可以監控模型引數變化。
- third_party目錄是TF第三方依賴庫。
- eigen3: eigen矩陣運算庫,TF基礎ops呼叫
- gpus: 封裝了cuda/cudnn程式設計庫