1:rpc的处理都是在cpu上:因此如果是在GPU上进行计算,input要从cpu转到gpu上,output要从gpu转到cpu上;
参考自:https://zhuanlan.zhihu.com/p/497350730
2:rpc.rpc_sync(to, func, args=(local_rank,)):其中,‘to’是你想要在这个进程'to'上调用函数func,func的参数是args;to就是在rpc.init_rpc('name', rank = local_rank, world_size=world_size)中的name,也就是你为进程取的名字,可以通过rpc.get_worker_info()得到当前进程的rpc
3:rpc.remote(),参数和rpc.rpc_sync一样,效果也差不多,不同在于,其返回的是为Remote Reference(RRef),用于指向远端的object,也就是说它不会直接返回调用函数的结果,为Remote Reference(RRef),用于指向远端的object
4:rpc.init_rpc(name, rank, world_size):初始化进程,并给进程取名name,方便rpc.rpc_sync和rpc.remote调用。这个初始化和dist.init_process_group的初始化应该是并行的关系,也就是两者互不干扰的意思。