sunce4t commented on issue #3102:
URL: https://github.com/apache/brpc/issues/3102#issuecomment-3404602765

   > > 1.修改block_pool.cpp,新增一个ObjectPool用于分配Block的实体,将Block的data指向BlockPool -> 
即 Block的实体部分 与 数据部分分离 在此基础上,修改IOBuf的create 
block接口,objmem_allocate分配一个block出来,blockmem_allocate分配一段内存用于传输RPC请求
   > > 2.增加RDMA Write/Read接口;原本brpc的Send/Recv用于传输控制数据(例如,对端GPU地址),再使用RDMA 
Write直接将训练数据写到对端GPU地址上
   > > 
3.使用append_with_user_data,将attachment从显存上分配,发送时使用RDMA的scatter-gatther特性,使其request请求写入到主机内存,attachment写入到显存上。
 但是此接口也是会在分配出来的内存上进行placement new,因此也存在core dumped的问题,也需要修改IOBuf的接口
   > 
   > [@sunce4t](https://github.com/sunce4t) 
我觉得这三个方案里面只有第2个方案是可行的,iobuf的设计本来就是用来管理内存中的数据,而不是GPU显存的数据。你既然用了GDR那么数据包就没必要通过brpc来发送了,只要用brpc来传输控制信息就可以。当然你可以在brpc上面再封装一层,把brpc传输控制信息+GDR传输显存数据封装成一个接口方便业务使用。
   
   hi,社区考虑加一个使用GDR的样例吗


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to