2025-03-03 06:36:40 -08:00
|
|
|
from typing import List, Tuple
|
|
|
|
|
|
|
|
|
|
import torch
|
|
|
|
|
|
|
|
|
|
if torch.version.hip is not None:
|
|
|
|
|
# ROCM custom allreduce
|
|
|
|
|
def init_custom_ar(
|
|
|
|
|
meta: torch.Tensor,
|
|
|
|
|
rank_data: torch.Tensor,
|
|
|
|
|
handles: List[str],
|
|
|
|
|
offsets: List[int],
|
|
|
|
|
rank: int,
|
|
|
|
|
full_nvlink: bool,
|
|
|
|
|
) -> int:
|
2025-03-08 22:54:51 -08:00
|
|
|
return torch.ops.sgl_kernel.init_custom_ar(
|
2025-03-03 06:36:40 -08:00
|
|
|
meta, rank_data, handles, offsets, rank, full_nvlink
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def all_reduce_reg(fa: int, inp: torch.Tensor, out: torch.Tensor) -> None:
|
2025-03-08 22:54:51 -08:00
|
|
|
torch.ops.sgl_kernel.all_reduce_reg(fa, inp, out)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def all_reduce_unreg(
|
|
|
|
|
fa: int, inp: torch.Tensor, reg_buffer: torch.Tensor, out: torch.Tensor
|
|
|
|
|
) -> None:
|
2025-03-08 22:54:51 -08:00
|
|
|
torch.ops.sgl_kernel.all_reduce_unreg(fa, inp, reg_buffer, out)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def dispose(fa: int) -> None:
|
2025-03-08 22:54:51 -08:00
|
|
|
torch.ops.sgl_kernel.dispose(fa)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def meta_size() -> int:
|
2025-03-08 22:54:51 -08:00
|
|
|
return torch.ops.sgl_kernel.meta_size()
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def register_buffer(
|
|
|
|
|
fa: int, t: torch.Tensor, handles: List[str], offsets: List[int]
|
|
|
|
|
) -> None:
|
2025-03-08 22:54:51 -08:00
|
|
|
return torch.ops.sgl_kernel.register_buffer(fa, t, handles, offsets)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def get_graph_buffer_ipc_meta(fa: int) -> Tuple[torch.Tensor, List[int]]:
|
2025-03-08 22:54:51 -08:00
|
|
|
return torch.ops.sgl_kernel.get_graph_buffer_ipc_meta(fa)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def register_graph_buffers(
|
|
|
|
|
fa: int, handles: List[str], offsets: List[List[int]]
|
|
|
|
|
) -> None:
|
2025-03-08 22:54:51 -08:00
|
|
|
torch.ops.sgl_kernel.register_graph_buffers(fa, handles, offsets)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def allocate_meta_buffer(size: int) -> torch.Tensor:
|
2025-03-08 22:54:51 -08:00
|
|
|
return torch.ops.sgl_kernel.allocate_meta_buffer(size)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def get_meta_buffer_ipc_handle(inp: torch.Tensor) -> torch.Tensor:
|
2025-03-08 22:54:51 -08:00
|
|
|
return torch.ops.sgl_kernel.get_meta_buffer_ipc_handle(inp)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
# TRTLLM custom allreduce
|
|
|
|
|
def init_custom_reduce(
|
|
|
|
|
rank_id, num_devices, rank_data, buffers, tmp_buffers, barrier_in, barrier_out
|
|
|
|
|
):
|
2025-03-08 22:54:51 -08:00
|
|
|
return torch.ops.sgl_kernel.init_custom_ar(
|
2025-03-03 06:36:40 -08:00
|
|
|
rank_id,
|
|
|
|
|
num_devices,
|
|
|
|
|
rank_data,
|
|
|
|
|
buffers,
|
|
|
|
|
tmp_buffers,
|
|
|
|
|
barrier_in,
|
|
|
|
|
barrier_out,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def custom_dispose(fa):
|
2025-03-08 22:54:51 -08:00
|
|
|
torch.ops.sgl_kernel.dispose(fa)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def custom_reduce(fa, inp, out):
|
2025-03-08 22:54:51 -08:00
|
|
|
torch.ops.sgl_kernel.all_reduce(fa, inp, out)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def get_graph_buffer_ipc_meta(fa):
|
2025-03-08 22:54:51 -08:00
|
|
|
return torch.ops.sgl_kernel.get_graph_buffer_ipc_meta(fa)
|
2025-03-03 06:36:40 -08:00
|
|
|
|
|
|
|
|
def register_graph_buffers(fa, handles, offsets):
|
2025-03-08 22:54:51 -08:00
|
|
|
torch.ops.sgl_kernel.register_graph_buffers(fa, handles, offsets)
|