tvm.runtime.disco
TVM 分布式运行时 API。
- class tvm.runtime.disco.DRef
存在于所有工作进程上的对象。控制器进程为每个对象分配唯一的“注册 ID”,工作进程使用此 ID 来引用驻留在其自身上的对象。
- class tvm.runtime.disco.ProcessSession(num_workers: int, num_groups: int = 1, entrypoint: str = 'tvm.exec.disco_worker')
由基于管道的多进程支持的 Disco 会话。
- class tvm.runtime.disco.Session
Disco 交互式会话。它允许用户使用各种 PackedFunc 调用约定与 Disco 命令队列进行交互。
- empty(shape: Sequence[int], dtype: str, device: Device | None = None, worker0_only: bool = False, in_group: bool = True) DRef
在所有工作进程上创建空的 NDArray 并将其附加到 DRef。
- 参数:
- 返回值:
array – 创建的 NDArray。
- 返回类型:
- shutdown()
关闭 Disco 会话
- import_python_module(module_name: str) None
在每个工作进程中导入一个 Python 模块
这可能在调用之前是必需的
- 参数:
module_name (str) – Python 模块名称,就像在 python `import` 语句中使用它一样。
- call_packed(func: DRef, *args) DRef
在工作进程上调用 PackedFunc,提供可变参数。
- 参数:
func (PackedFunc) – 要调用的函数。
*args (various types) – 在可变参数中,支持的类型包括:- 整数和浮点数;- DLDataType;- DLDevice;- str (C++ 中的 std::string);- DRef。
- 返回值:
return_value – 函数调用的返回值。
- 返回类型:
various types
注意
不支持的类型示例:- NDArray、DLTensor;- TVM 对象,包括 PackedFunc、Module 和 String。
- copy_from_worker_0(host_array: NDArray, remote_array: DRef) None
将 NDArray 从 worker-0 复制到控制器端的 NDArray。
- 参数:
host_array (numpy.ndarray) – 要复制到 worker-0 的数组。
remote_array (NDArray) – worker-0 上的 NDArray。
- copy_to_worker_0(host_array: NDArray, remote_array: DRef | None = None) DRef
将控制器端的 NDArray 复制到 worker-0。
- broadcast(src: ndarray | NDArray, dst: DRef | None = None, in_group: bool = True) DRef
将数组广播到所有工作进程
- broadcast_from_worker0(src: DRef, dst: DRef, in_group: bool = True) DRef
将数组从 worker-0 广播到所有其他工作进程。
- scatter(src: ndarray | NDArray, dst: DRef | None = None, in_group: bool = True) DRef
将数组分散到所有工作进程。
- scatter_from_worker0(from_array: DRef, to_array: DRef, in_group: bool = True) None
将数组从 worker-0 分散到所有其他工作进程。
- gather_to_worker0(from_array: DRef, to_array: DRef, in_group: bool = True) None
将数组从所有其他工作进程收集到 worker-0。