test: dump ALL symbols from ALL ixformer/cuinfer .so — no grep filter, find what we missed
This commit is contained in:
120
qwen3_6_scripts/probe_all_symbols.sh
Executable file
120
qwen3_6_scripts/probe_all_symbols.sh
Executable 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"
|
||||
Reference in New Issue
Block a user