decl_raw_opr(
'remote_send',
desc='send the value of a variable to a remote machine; the output is an '
'empty var, only used for expressing dependency on this opr. This is the '
'client side of a send-recv pair. See also :func:`remote_recv`.',
inputs=[
Doc('address', 'communicate multiple machines server address', 'str'),
Doc('port', 'communicate multiple machines server port', 'int'),
Doc('key', 'key to bind send-recv pair', 'str'),
Doc('var', 'variable to be sent', ':class:`.SymbolVar`'),
Doc('is_grad', 'whether the send', 'bool'),
Doc('backend', 'Backend for collective communication, nccl or ucx',
'str', '\'nccl\''),
]
)
decl_raw_opr(
'remote_recv',
desc='receive from remote machine. This is the server side of a send-recv '
'pair. See also :func:`remote_send`',
inputs=[
Doc('address', 'communicate multiple machines server address', 'str'),
Doc('port', 'communicate multiple machines server port', 'int'),
Doc('key', 'key to bind send-recv pair', 'str'),
Doc('comp_graph', 'computing graph to put the output var',
':class:`.CompGraph`'),
Doc('shape', 'output var shape'),
Doc('dtype', 'data type of the output var; must match dtype at sender',
':class:`numpy.dtype` compatible'),
Doc('backend', 'Backend for collective communication, nccl or ucx',
'str', '\'nccl\''),
]
)
# vim: ft=python