tensorflow源码分析(2)
Session类:
Session是连接client和tensorflow系统的中间件,负责两者之间的交互;
Session后台得实现由两种:DirectSession和GrpcSession。DirectSession在本地环境中使用,GrpcSession在分布式环境中使用,来计算相应得graph,两种方式分别对应两个不同的object实现。
Client通过Session与Master交互,而Master协调一个或者多个的 worker processes 完成计算任务,每个 worker process 负责对一个或者多个计算设备(CPU 核或者 GPU card)的任意访问和在这些设备上进行图节点的计算按照 master 的要求执行。
初始化参数:
Target:该session连接到得执行引擎,默认使用in-process引擎(TODO)
Graph:将要再该session运行得graph,如果没有指定代表默认得graph
Config:暴露对session得配置,可以配置对session得软约束
API功能描述:
1)Session()对session的实例化,会调用Session的_init_()接口
2)Supper()._init_()是调用Session对象的父类的_init_()接口
3)Session的父类是BaseSession,调用BaseSession的_init_()接口
4)tf_session.TF_NewSession()主要是调用pywrap_tensorflow模块的TF_NewSession()接口
5)_pywrap_tensorflow_internal.TF_NewSession(graph, opts)主要是调用
_pywrap_tensorflow_internal.so里面的TF_NewSession()接口
6)c_api.h是TensorFlow的后端执行系统面向前端开放的公共API接口之一
7)SessionFactory::GetFactory 根据前端传入的target使用SessionFactory多态创建不同类型的Session(C++)对象
8)DirectSessionFactory GrpcSessionFactory继承SessionFactory,实现自己的NewSession()接口
9)DirectSessionFactory会调用new DirectSession()创建相应的的session