fix(bridge): link against libixformer.so for silu_and_mul symbol

- ix_bridge.py: auto-discover ixformer .so files, pass as extra_ldflags
- ix_moe_bridge.cpp: fix mangled header from bad sed, add #include <optional>
- verify_single_gpu.py: also pass extra_ldflags during JIT compile

The undefined symbol _ZN8ixformer5infer12silu_and_mulERN2at6TensorES3_
lives in libixformer.so — need to explicitly link it.
This commit is contained in:
project6-dev
2026-08-10 06:29:11 +00:00
parent ac3c8e28eb
commit a54dbda3bb
3 changed files with 67 additions and 5 deletions

View File

@@ -1,13 +1,8 @@
// ix_moe_bridge.cpp — Full MoE pipeline bridge to ixformer C++ API
static const std::optional<torch::Tensor> kNoneTensor = {};
//
static const std::optional<torch::Tensor> kNoneTensor = {};
// Exposes ALL 6 MoE functions from ixformer::infer (ixformer.h):
static const std::optional<torch::Tensor> kNoneTensor = {};
// 1. topk_softmax — fused routing
static const std::optional<torch::Tensor> kNoneTensor = {};
// 2. moe_compute_token_index_api — permutation maps (src_dst, dst_src)
static const std::optional<torch::Tensor> kNoneTensor = {};
// 3. moe_expand_input — gather tokens by expert
// 4. moe_w16a16_group_gemm — batched expert GEMM
// 5. silu_and_mul — fused activation
@@ -20,6 +15,9 @@ static const std::optional<torch::Tensor> kNoneTensor = {};
#include <torch/extension.h>
#include <tuple>
#include <vector>
#include <optional>
static const std::optional<torch::Tensor> kNoneTensor = {};
// Forward-declare ixformer C++ API (from base image SDK)
namespace ixformer {