flashinfer.comm¶
此模块提供分布式计算的通信原语和实用工具,包括 CUDA IPC、AllReduce 操作和内存管理实用工具。
CUDA IPC 实用工具¶
|
|
|
创建一个共享缓冲区,并返回一个指针列表,该列表表示组中所有进程的缓冲区。 |
|
释放一个共享缓冲区。 |
DLPack 实用工具¶
|
将 GPU 内存打包到具有指定步长的 PyTorch 张量中。 |
映射实用工具¶
|
一个具有 8 个 GPU 的节点,tp_size = 4,cp_size = 1,pp_size = 2 |
TensorRT-LLM AllReduce¶
类型和枚举¶
核心操作¶
|
参数:- allreduce_in:输入张量。[token_num, hidden_dim] - world_size:进程组的大小。 - world_rank:当前进程的等级。 - token_num:序列中的 token 数量。 - hidden_dim:隐藏状态的维度。 - workspace_ptrs:工作区指针。 - launch_with_pdl:是否使用 pdl 启动。 - use_oneshot:是否使用 oneshot。如果为 None,将使用内部启发式方法。 - trigger_completion_at_end:是否在末尾触发完成。 - fp32_acc:是否使用 fp32 累积。 - pattern_code:模式代码。 - allreduce_out:输出张量。[token_num, hidden_dim] - residual_in:残差输入张量。[token_num, hidden_dim] - residual_out:残差输出张量。[token_num, hidden_dim] - norm_out:归一化输出张量。[token_num, hidden_dim] - quant_out:量化输出张量。[token_num, hidden_dim] - scale_out:缩放输出张量。 初始化参考:tests/comm/test_trtllm_allreduce_fusion.py - rms_gamma:rms gamma 张量。[hidden_dim] - rms_eps:rms epsilon 值。 - scale_factor:缩放因子。为了 cudaGraphs 的安全性,它应该是一个张量。 - layout_code:布局代码。 - metadata:来自 create_ipc_workspace_for_all_reduce_fusion 的可选工作区元数据。如果提供,则验证 token_num <= max_token_num、world_size == tp_size 且 hidden_dim == workspace hidden_dim。如果验证失败,则引发 ValueError。 |
|
参数:- inp:输入张量。 |
|
参数:- world_size:进程组的大小。 |
参数:- allreduce_in:输入张量。 |
工作区管理¶
参数:- rank:当前进程的等级。 |
|
参数:- tp_rank:当前进程的等级。 |
|
注意:此函数用于销毁 all reduce 的工作区。 |
|
参数:- workspace:要销毁的工作区。 |
初始化和实用工具¶
|
|
|
使用负零初始化 3 个 lamport 缓冲区。 |
计算 fp4 交错布局的填充大小的辅助函数。 |
vLLM AllReduce¶
|
执行非就地 all reduce。 |
|
|
|
|
|
|
|
|
MNNVL(多节点 NVLink)¶
核心类¶
|
|
|
用于促进 PyTorch 张量创建的 SymmDeviceMemory 的包装类。 |
实用函数¶
|
使用 DLPack 从 CUDA 内存指针创建 PyTorch 张量。 |
|
一个辅助函数,用于在 cuda 上分配内存并将数据从主机复制到设备。 |
TensorRT-LLM MNNVL AllReduce¶
|
在多个 GPU 上执行多节点 NVLink all-reduce 操作。 |
执行 MNNVL TwoShot AllReduce + RMSNorm。 |
|
MNNVL A2A(吞吐量后端)¶
|
使用适当的工作区分配和同步管理 MoE All-to-All 操作。 |
|
|
|
将 token 和 payload 分派到专家等级。 |
|
|
|
|
|
获取 MoE AlltoAll 操作的每个等级的工作区大小。 |
将工作区中的偏移量包装到张量中。 |