Skip to content

feat: add reusable GGUF linear backend and FP8 support - #1545

Open
xindongliu594 wants to merge 1 commit into
InfiniTensor:mainfrom
xindongliu594:codex/gguf-routeb-qwen38-upstream
Open

feat: add reusable GGUF linear backend and FP8 support#1545
xindongliu594 wants to merge 1 commit into
InfiniTensor:mainfrom
xindongliu594:codex/gguf-routeb-qwen38-upstream

Conversation

@xindongliu594

@xindongliu594 xindongliu594 commented Sep 3, 2026

Copy link
Copy Markdown

Summary

Add a reusable GGUF linear backend for NVIDIA GPUs, together with the BlockFP8
linear operator required by the current InfiniLM Route B integration.

What changed

  • Added linear_gguf operator registration across:
    • C ABI
    • InfiniCore C++ API
    • NVIDIA CUDA backend
  • Added GGUF block decoding support for:
    • Q8_0
    • Q4_K
    • Q5_K
    • Q6_K
  • Added two execution paths:
    • register-resident GEMV for decode/small batches
    • tile dequantization + cuBLAS GEMM for prefill
  • Added workspace-size and dtype/shape validation.
  • Added reusable BlockFP8 linear operator and Python bindings.
  • Removed machine-specific cuDNN paths and allocator debug-file writes.

Validation

Built successfully on the latest upstream branch:

  • GPU: 2 × NVIDIA RTX 5090
  • CUDA: 13.0
  • Architecture: SM120
  • libinfiniop.so: built and linked successfully
  • _infinicore: built and imported successfully
  • GGUF C ABI symbols verified:
    • infiniopCreateLinearGgufDescriptor
    • infiniopGetLinearGgufWorkspaceSize
    • infiniopLinearGguf
    • infiniopDestroyLinearGgufDescriptor

The corresponding InfiniLM integration also builds successfully against this
InfiniCore branch.

Compatibility

The new GGUF path is opt-in through the InfiniLM integration and does not change
the default behavior of existing non-GGUF operators.

This PR does not claim bitwise cross-backend equivalence. Model-level strict
matching remains an ongoing InfiniLM validation task.

Review notes

The main reusable component in this PR is linear_gguf. The BlockFP8 changes
are included because they are required by the current InfiniLM integration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant