tensorfow sendop/recvop and Rendezvous

sendop/recvop and Rendezvous

tensorflow 如果是单进程多卡的化,计算图也是会分割的,一个卡对应一个计算子图。无论是单进程多卡还是多机多进程多卡,tf计算图都会分割成计算子图,一个卡对应一个计算子图。为了协作完成整个计算图的计算,子图之间需要有通信机制。

tensorflow 在分割子图时,会在图之间插入一些send/recv operations。这些节点负责在图之间传递数据。send/recv 通过一种Rendezvous机制传输数据。简单的说,Rendezvous封装了通信逻辑,类似一个信箱,sender 把数据放进去,receiver 把数据从里面拿出来,sender不阻塞,receiver可能阻塞。

对应于单进程模式和多进程模式,有两种Rendezvous,分别是IntraProcessRendezvous和RpcRemoteRendezvous。两种Rendezvous都继承了基类Rendezvous,都持有一个LocalRendezvousImpl的local变量,LocalRendezvousImpl也继承了Rendezvous,可以理解为这里使用了代理设计模式。

LocalRendezvousImpl简单地说是维护一个table,生产者把数据放进table,消费者从table里消费数据。IntraProcessRendezvous只做一些简单的处理。

RpcRemoteRendezvous 有些复杂。send 时,把数据保存在local ,等消费者通过rpc来取;rec  时,如果消费者消费的是同一个进程里另一个excutor 生产的数据,直接去local 取,否则通过grpc 去获取。

接下来,我们来看一下源码。

未完待续

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值