Gptq Marlin Repack#

cudaError_t trt_edgellm::kernel::launchGptqMarlinRepackSourceBatch(
int32_t const *const *firstQweights,
int32_t const *const *secondQweights,
int32_t const *const *firstQzeros,
int32_t const *const *secondQzeros,
int32_t *marlinOutput,
int32_t count,
int32_t projectionN,
int32_t K,
int32_t numGroups,
int32_t groupSize,
int32_t zeroPointOffset,
cudaStream_t stream
)#

GPU GPTQ → Marlin repack for MoE experts (vLLM gptq_marlin_repack style). ! ! Input: GPTQ qweight [E, K/8, N] int32 (8 INT4 values packed along K). ! Optional qzeros [E, G, N/8] int32 — when non-null, remaps to Marlin’s ! (q - 8) * scale convention via q' = clamp(q - z - zpOffset + 8, 0, 15). ! Output: Marlin [E, K/16, 2*N] int32 in the Int4MoePlugin layout. ! ! Requires K % 16 == 0, N % 64 == 0. When qzeros is non-null, ! G * groupSize == K. ! ! Algorithm mirrors vLLM csrc/.../marlin/gptq_marlin_repack.cu (packed GPTQ ! → Marlin on device, no host nibble expand). Packing indices match Edge-LLM ! pack_int4_awq_marlin / marlinPackSwizzle

. cudaError_t launchGptqMarlinRepack(int32_t const* dQweightE_K8_N, int32_t const* dQzerosE_G_N8_orNull, int32_t* dMarlin,

int32_t E, int32_t N, int32_t K, int32_t numGroups, int32_t groupSize, int32_t zeroPointOffset,

cudaStream_t stream);

! Repack non-contiguous expert projections directly from CUDA-mapped ! checkpoint storage. secondQweights is null for a single projection.