diff --git a/probe_all_symbols.sh b/probe_all_symbols.sh new file mode 100644 index 00000000..521b51bf --- /dev/null +++ b/probe_all_symbols.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# probe_all_symbols.sh — Check which ixformer::infer symbols actually exist +echo "=== Checking all symbols we need ===" + +LIBS=( + "/usr/local/corex/lib64/python3/dist-packages/ixformer/libixformer.so" + "/usr/local/corex/lib64/python3/dist-packages/ixformer/_ixformer_torch.cpython-310-x86_64-linux-gnu.so" + "/usr/local/corex/lib64/python3/dist-packages/ixformer/_C.cpython-310-x86_64-linux-gnu.so" + "/usr/local/corex/lib64/libixattn.so" +) + +FUNCS=( + "silu_and_mul" + "topk_softmax" + "moe_compute_token_index" + "moe_expand_input" + "moe_w16a16_group_gemm" + "moe_output_reduce_sum" + "xllm_paged_attention" + "ixinfer_flash_attn_unpad" + "rms_norm" + "residual_rms_norm" + "xllm_rotary_embedding" + "xllm_reshape_and_cache" + "ixformer_linear" +) + +for func in "${FUNCS[@]}"; do + echo "" + echo "--- $func ---" + found=0 + for lib in "${LIBS[@]}"; do + if [ -f "$lib" ]; then + matches=$(nm -D "$lib" 2>/dev/null | grep -i "$func" | grep " T \| W " | head -3) + if [ -n "$matches" ]; then + echo " $(basename $lib):" + echo "$matches" | while read line; do echo " $line"; done + found=1 + fi + fi + done + if [ "$found" -eq 0 ]; then + echo " NOT FOUND in any .so (may need dlopen or different namespace)" + # Also search undefined symbols to see if it's referenced somewhere + for lib in "${LIBS[@]}"; do + if [ -f "$lib" ]; then + undef=$(nm -D "$lib" 2>/dev/null | grep -i "$func" | grep " U " | head -2) + if [ -n "$undef" ]; then + echo " (undefined ref in $(basename $lib)):" + echo "$undef" | while read line; do echo " $line"; done + fi + fi + done + fi +done + +echo "" +echo "=== Full ixformer::infer namespace in all libs ===" +for lib in "${LIBS[@]}"; do + if [ -f "$lib" ]; then + count=$(nm -D "$lib" 2>/dev/null | grep "ixformer.*infer" | grep " T \| W " | wc -l) + echo "" + echo "$(basename $lib): $count ixformer::infer symbols" + nm -D "$lib" 2>/dev/null | grep "ixformer.*infer" | grep " T \| W " | c++filt | head -20 + fi +done