c54923a17e0d85a73eccf7117d9d2417cc989935
Symbol dump from real device confirms: libixformer.so has 0 MoE symbols. topk_softmax, moe_compute_token_index_api, moe_expand_input, moe_w16a16_group_gemm, moe_output_reduce_sum — all missing. Non-MoE symbols (silu_and_mul, rms_norm, flash_attn, reshape_and_cache, rotary_embedding) are present and working. Implementation strategy — use available primitives: - topk_softmax: pure CUDA kernel (64-expert, shared-mem argmax) - moe_compute_token_index: histogram + prefix_sum + scatter (3 kernels) - moe_expand_input: gather kernel - moe_w16a16_group_gemm: per-expert loop calling cuinferCustomGemm (confirmed in libcuinfer.so symbol dump: cuinferCustomGemm exists) - moe_output_reduce_sum: weighted combine kernel All in ixformer::infer namespace so ix_full_bridge_v2.cpp links directly. Compile: nvcc moe_ops_impl.cu + ix_full_bridge_v2.cpp → single .so
project_6
Description
Languages
C++
41.8%
Cuda
31.6%
Python
22.2%
C
2.1%
CMake
1.1%
Other
1.1%