tensorflow 源码解读---容错机制

tensorflow 源码解读---容错机制

tensorflow 的容错机制就是,没有容错机制,或者说存在一种fail fast 机制。一旦计算的某个环节出错,就取消所有的计算。但是,tensorflow 是并行的设计(多进程或多线程),即使一个线程的计算出错,也要存在一种机制来取消其他线程正在运行的计算。以下我结合单机执行的源码,来分析一下这个功能的实现。主要追踪了tensorflow\core\common_runtime\direct_session.cc、tensorflow\core\common_runtime\excutor.cc、tensorflow\core\common_runtime\cancellation.cc等几个源文件。

取消正在运行的计算主要由tensorflow\core\common_runtime\cancellation.cc里的CancellationManager类实现的。

CancellationManager 是提供了一种callback 注册机制。一个op开始运行时,向CancellationManager register cancel callback,结束运行时deregister。每一次session.run(),都会创建一个CancellationManager 对象step_cancellation_manager。

direct_session.cc

step_cancellation_manager  的引用会通过args传递到ExcutorState 对象。

direct_session.cc

 

excutor.cc

在excutor.cc NodeDown 里,如果一个op 计算出错,cancellation_manager_的StartCancel 方法会被触发,取消这个step 的所有的excutor 的所以outstanding op,计算终止。

excutor.cc

 

随着计算节点的cancel, num_outstanding_ops_ 会因为 !s.ok() 而不断地减小,直到0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值