test: dump ALL symbols from ALL ixformer/cuinfer .so — no grep filter, find what we missed

This commit is contained in:
Claude
2026-08-16 04:58:39 +00:00
parent 8eabbac857
commit 4189f44d27

View File

@@ -0,0 +1,120 @@
#!/bin/bash
# probe_all_symbols.sh — Dump ALL exported symbols from every relevant .so
# No grep filter — save full lists, then we search offline
OUTDIR="cat_files/symbol_dumps"
mkdir -p "$OUTDIR"
echo "=== 1. ALL ixformer .so files ==="
find /usr/local/corex -name "*ixformer*" -name "*.so" 2>/dev/null | sort | tee "$OUTDIR/ixformer_so_list.txt"
echo ""
echo "=== 2. Dump each ixformer .so symbols ==="
while read so; do
base=$(basename "$so" | sed 's/[^a-zA-Z0-9._-]/_/g')
count=$(nm -D "$so" 2>/dev/null | grep " T " | wc -l)
echo " $so$base ($count T symbols)"
nm -D "$so" 2>/dev/null | grep " T " > "$OUTDIR/sym_${base}.txt"
done < "$OUTDIR/ixformer_so_list.txt"
echo ""
echo "=== 3. libixformer.so full T symbols ==="
if [ -f /usr/local/corex/lib64/libixformer.so ]; then
nm -D /usr/local/corex/lib64/libixformer.so 2>/dev/null | grep " T " > "$OUTDIR/sym_libixformer.txt"
wc -l "$OUTDIR/sym_libixformer.txt"
# Also search for ANY moe/expert/gemm/fused related
echo " grep moe/expert/gemm/fused/group/batch:"
grep -i "moe\|expert\|gemm\|fused\|group\|batch\|topk\|gating\|route" "$OUTDIR/sym_libixformer.txt" | head -30
fi
echo ""
echo "=== 4. libcuinfer.so full T symbols ==="
if [ -f /usr/local/corex/lib64/libcuinfer.so ]; then
nm -D /usr/local/corex/lib64/libcuinfer.so 2>/dev/null | grep " T " > "$OUTDIR/sym_libcuinfer.txt"
wc -l "$OUTDIR/sym_libcuinfer.txt"
echo " grep moe/expert/gemm/fused/group/batch:"
grep -i "moe\|expert\|gemm\|fused\|group\|batch\|topk\|gating\|route" "$OUTDIR/sym_libcuinfer.txt" | head -30
fi
echo ""
echo "=== 5. _ixformer_torch .so full T symbols ==="
TORCH_SO=$(find /usr/local/corex -name "_ixformer_torch*.so" 2>/dev/null | head -1)
if [ -n "$TORCH_SO" ]; then
nm -D "$TORCH_SO" 2>/dev/null | grep " T " > "$OUTDIR/sym_ixformer_torch.txt"
wc -l "$OUTDIR/sym_ixformer_torch.txt"
echo " grep moe/expert/gemm/fused/group/batch:"
grep -i "moe\|expert\|gemm\|fused\|group\|batch\|topk\|gating\|route" "$OUTDIR/sym_ixformer_torch.txt" | head -30
fi
echo ""
echo "=== 6. _C .so (ixformer python binding) full T symbols ==="
C_SO=$(find /usr/local/corex -path "*ixformer*" -name "_C*.so" 2>/dev/null | head -1)
if [ -n "$C_SO" ]; then
nm -D "$C_SO" 2>/dev/null | grep " T " > "$OUTDIR/sym_ixformer_C.txt"
wc -l "$OUTDIR/sym_ixformer_C.txt"
echo " grep moe/expert/gemm/fused/group/batch:"
grep -i "moe\|expert\|gemm\|fused\|group\|batch\|topk\|gating\|route" "$OUTDIR/sym_ixformer_C.txt" | head -30
fi
echo ""
echo "=== 7. ALL .so in ixformer package dir ==="
IXDIR=$(python3 -c "import ixformer, os; print(os.path.dirname(ixformer.__file__))" 2>/dev/null)
if [ -n "$IXDIR" ]; then
echo "ixformer dir: $IXDIR"
find "$IXDIR" -name "*.so" | while read so; do
base=$(basename "$so")
count=$(nm -D "$so" 2>/dev/null | grep " T " | wc -l)
echo " $base: $count T symbols"
nm -D "$so" 2>/dev/null | grep " T " > "$OUTDIR/sym_ixpkg_${base}.txt"
# Quick search
hits=$(grep -ic "moe\|expert\|gemm\|fused\|group\|batch\|topk" "$OUTDIR/sym_ixpkg_${base}.txt")
if [ "$hits" -gt 0 ]; then
echo " *** HIT: $hits MoE/GEMM related symbols:"
grep -i "moe\|expert\|gemm\|fused\|group\|batch\|topk" "$OUTDIR/sym_ixpkg_${base}.txt"
fi
done
fi
echo ""
echo "=== 8. ixformer Python API — list ALL callable functions ==="
python3 << 'PY'
import ixformer
import inspect
# List all attributes
for name in sorted(dir(ixformer)):
if name.startswith('_'):
continue
obj = getattr(ixformer, name)
if callable(obj):
try:
sig = inspect.signature(obj)
print(f" ixformer.{name}{sig}")
except (ValueError, TypeError):
print(f" ixformer.{name} (no signature)")
elif hasattr(obj, '__module__'):
print(f" ixformer.{name} = {type(obj).__name__}")
# Check submodules
print("\n --- submodules ---")
for name in sorted(dir(ixformer)):
obj = getattr(ixformer, name)
if inspect.ismodule(obj) and not name.startswith('_'):
print(f" ixformer.{name}:")
for sub in sorted(dir(obj)):
if sub.startswith('_'):
continue
subobj = getattr(obj, sub)
if callable(subobj):
try:
sig = inspect.signature(subobj)
print(f" .{sub}{sig}")
except:
print(f" .{sub} (no sig)")
PY
echo ""
echo "=== Files saved to $OUTDIR ==="
ls -lh "$OUTDIR/"
echo ""
echo "git add cat_files/symbol_dumps/ && git commit -m 'data: full symbol dumps' && git push"