debug: find ixformer symbol locations on real hardware
This commit is contained in:
55
ex_engine/find_ixformer_symbols.py
Normal file
55
ex_engine/find_ixformer_symbols.py
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Find which .so files export ixformer::infer symbols."""
|
||||||
|
import subprocess, glob, os
|
||||||
|
|
||||||
|
targets = ["silu_and_mul", "rms_norm", "ixformer_linear", "topk_softmax",
|
||||||
|
"xllm_paged_attention", "xllm_reshape_and_cache",
|
||||||
|
"moe_w16a16_group_gemm", "residual_rms_norm"]
|
||||||
|
|
||||||
|
search_dirs = [
|
||||||
|
"/usr/local/corex/lib64",
|
||||||
|
"/usr/local/corex/lib",
|
||||||
|
"/usr/local/corex-3.2.3/lib64",
|
||||||
|
"/usr/local/corex-3.2.3/lib",
|
||||||
|
"/usr/local/lib",
|
||||||
|
]
|
||||||
|
|
||||||
|
so_files = []
|
||||||
|
for d in search_dirs:
|
||||||
|
so_files.extend(glob.glob(os.path.join(d, "**/*.so*"), recursive=True))
|
||||||
|
|
||||||
|
print(f"Scanning {len(so_files)} .so files...")
|
||||||
|
|
||||||
|
for target in targets:
|
||||||
|
found = False
|
||||||
|
for so in so_files:
|
||||||
|
try:
|
||||||
|
out = subprocess.run(["nm", "-D", so], capture_output=True, text=True, timeout=5)
|
||||||
|
if target in out.stdout:
|
||||||
|
# Get the full symbol name
|
||||||
|
for line in out.stdout.split('\n'):
|
||||||
|
if target in line and ' T ' in line:
|
||||||
|
sym = line.split()[-1]
|
||||||
|
print(f"✓ {target}: {os.path.basename(so)} [{sym[:80]}]")
|
||||||
|
found = True
|
||||||
|
break
|
||||||
|
if found:
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
if not found:
|
||||||
|
# Try with grep on all lines (U = undefined, T = defined)
|
||||||
|
for so in so_files:
|
||||||
|
try:
|
||||||
|
out = subprocess.run(["nm", "-D", so], capture_output=True, text=True, timeout=5)
|
||||||
|
for line in out.stdout.split('\n'):
|
||||||
|
if target in line:
|
||||||
|
print(f"? {target}: {os.path.basename(so)} [{line.strip()[:100]}]")
|
||||||
|
found = True
|
||||||
|
break
|
||||||
|
if found:
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
if not found:
|
||||||
|
print(f"✗ {target}: NOT FOUND in any .so")
|
||||||
Reference in New Issue
Block a user