Skip to content

Ryzen AI 1.8 Linux: Vitis AI EP on Max+ 395 fails at runner creation (libxrt_core.so.2 undefined symbol) in containerized XRT 2.25.37 environment #384

Description

@roll0ver

Environment

Hardware: AMD Ryzen AI Max+ 395 (Strix Halo), desktop form factor

NPU (via xrt-smi examine): RyzenAI-npu5 aie2p 6x8

OS (inside container): Ubuntu 24.04.4 LTS

Kernel: 7.0.0-28-generic

GLIBC: 2.39

Container: Podman (privileged) on Ubuntu 24.04 host

Container image: amd-ryzen-ai-1.8-experiment-root (Ubuntu 24.04 base)

Device mapping: --device /dev/accel/accel0:/dev/accel/accel0

Bind mounts:

/home//RAI_1.8_linux_NPU_XRT.zip -> /opt/ryzen-ai/RAI_1.8_linux_NPU_XRT.zip

/home//ryzen_ai-1.8.0.tgz -> /opt/ryzen-ai/ryzen_ai-1.8.0.tgz

XRT / driver stack

Inside the container:

bash
cd /opt/ryzen-ai
unzip RAI_1.8_linux_NPU_XRT.zip
cd RAI_1.8_Linux_NPU_XRT

apt-get update
apt-get install -y
./xrt_202620.2.25.37_24.04-amd64-base.deb
./xrt_202620.2.25.37_24.04-amd64-base-dev.deb
./xrt_202620.2.25.37_24.04-amd64-npu.deb
./xrt_plugin.2.25.260102.56.release_24.04-amd64-amdxdna.deb

source /opt/xilinx/xrt/setup.sh
xrt-smi examine
Relevant packages and libs:

bash
dpkg -l | grep -E 'xrt|amdxdna|xrt_plugin'

ii xrt-base 2.25.37 amd64

ii xrt-base-dev 2.25.37 amd64

ii xrt-npu 2.25.37 amd64

ii xrt_plugin-amdxdna 2.25 amd64

ls -l /opt/xilinx/xrt/lib/libxrt_core.so.2

-> libxrt_core.so.2.25.37

strings /opt/xilinx/xrt/lib/libxrt_core.so.2 | grep get_option_options

_ZN8xrt_core3smi18get_option_optionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

So the symbol xrt_core::smi::get_option_options is present in libxrt_core.so.2.25.37.

Ryzen AI Software 1.8 installation

bash
cd /opt/ryzen-ai
mkdir ryzen_ai-1.8.0
cp ryzen_ai-1.8.0.tgz ryzen_ai-1.8.0/
cd ryzen_ai-1.8.0
tar -xvzf ryzen_ai-1.8.0.tgz

./install_ryzen_ai.sh -a yes -p /opt/ryzen-ai/venv-1.8
source /opt/ryzen-ai/venv-1.8/bin/activate
Environment before quicktest:

bash
source /opt/xilinx/xrt/setup.sh
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:${RYZEN_AI_INSTALLATION_PATH}/onnxruntime/lib/:$LD_LIBRARY_PATH

cd /opt/ryzen-ai/venv-1.8/quicktest
python quicktest.py
Quicktest script (as shipped)

/opt/ryzen-ai/venv-1.8/quicktest/quicktest.py:

python
def get_npu_info():
command = r"lspci -nn"
process = subprocess.Popen(
command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
stdout, stderr = process.communicate()

npu_type = ""
if "1022:17f0" in stdout.decode():
    npu_type = "STX/KRK"
return npu_type

npu_type = get_npu_info()
...
providers = ["VitisAIExecutionProvider"]
...
if npu_type == "STX/KRK":
print("Setting environment for STX/KRK")
else:
print("Unrecognized APU type. Exiting.")
exit()
After installing pciutils in the container, lspci works and quicktest correctly prints:

text
Setting environment for STX/KRK
Observed behavior

The Vitis AI EP loads and ONNX Runtime enters AIE compile mode:

text
2026-07-24 01:54:48.555140 compile_pass_manager.cpp:484] Compile mode: aie
2026-07-24 01:54:48.555162 compile_pass_manager.cpp:485] Debug mode: function
2026-07-24 01:54:48.555169 compile_pass_manager.cpp:489] Target architecture: AMD_AIE2P_4x8_CMC_Overlay
...
2026-07-24 01:54:50.605405 compile_pass_manager.cpp:1534] Total device subgraph number 3, CPU subgraph number 1
2026-07-24 01:54:50.605417 compile_pass_manager.cpp:1606] Total device subgraph number 3, DPU subgraph number 1, total number of PDI swaps 0
The failure occurs when creating the runner, trying to open /opt/xilinx/xrt/lib/libxrt_core.so.2:

text
F20260724 01:54:50.697062 runner_requests_queue.cpp:178] -- Error: Failed to create runner: Failed to open library '/opt/xilinx/xrt/lib/libxrt_core.so.2'
/opt/xilinx/xrt/lib/libxrt_core.so.2: undefined symbol: _ZN8xrt_core3smi18get_option_optionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
2026-07-24 01:54:50.697075693 [F:onnxruntime:, runner_requests_queue.cpp:178] -- Error: Failed to create runner: Failed to open library '/opt/xilinx/xrt/lib/libxrt_core.so.2'
/opt/xilinx/xrt/lib/libxrt_core.so.2: undefined symbol: _ZN8xrt_core3smi18get_option_optionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
terminate called after throwing an instance of 'vaip_core::GlogFatalException'
what(): google::LogMessage::Flush()
...
Aborted (core dumped)
ldd on the Vitis AI EP shows no missing libs:

bash
ldd /opt/ryzen-ai/venv-1.8/lib/python3.12/site-packages/onnxruntime/capi/libonnxruntime_vitisai_ep.so | grep "not found" || true

(no output)

And strings confirms the complained‑about symbol is present in libxrt_core.so.2.25.37.

What I expected

Given:

Ryzen AI Software 1.8.0 Linux .tgz

XRT 2.25.37 driver stack from RAI_1.8_linux_NPU_XRT.zip

Supported hardware (Ryzen AI Max+ 395 / RyzenAI-npu5 / aie2p / 6x8)

I expected quicktest.py to compile and run its CNN model on the NPU using VitisAIExecutionProvider without crashing, or at worst to fall back cleanly to CPU if something is unsupported.

Instead, the VAIP compile path completes and then aborts at runner creation with a fatal exception about libxrt_core.so.2 missing a symbol that is actually present.

Reproduction summary

Minimal repro inside the container:

bash
sudo podman run --rm -it
--privileged
--device /dev/accel/accel0:/dev/accel/accel0
-v /home//RAI_1.8_linux_NPU_XRT.zip:/opt/ryzen-ai/RAI_1.8_linux_NPU_XRT.zip
-v /home//ryzen_ai-1.8.0.tgz:/opt/ryzen-ai/ryzen_ai-1.8.0.tgz
amd-ryzen-ai-1.8-experiment-root bash

Inside container:

cd /opt/ryzen-ai
unzip RAI_1.8_linux_NPU_XRT.zip
cd RAI_1.8_Linux_NPU_XRT
apt-get update
apt-get install -y
./xrt_202620.2.25.37_24.04-amd64-base.deb
./xrt_202620.2.25.37_24.04-amd64-base-dev.deb
./xrt_202620.2.25.37_24.04-amd64-npu.deb
./xrt_plugin.2.25.260102.56.release_24.04-amd64-amdxdna.deb
pciutils

source /opt/xilinx/xrt/setup.sh
xrt-smi examine # shows RyzenAI-npu5 aie2p 6x8

cd /opt/ryzen-ai
mkdir ryzen_ai-1.8.0
cp ryzen_ai-1.8.0.tgz ryzen_ai-1.8.0/
cd ryzen_ai-1.8.0
tar -xvzf ryzen_ai-1.8.0.tgz
./install_ryzen_ai.sh -a yes -p /opt/ryzen-ai/venv-1.8

source /opt/ryzen-ai/venv-1.8/bin/activate
source /opt/xilinx/xrt/setup.sh
cd /opt/ryzen-ai/venv-1.8/quicktest
python quicktest.py
Result: crash in runner_requests_queue.cpp as above.

Question / request

This looks like an internal VAIP/XRT runtime ABI issue on Ryzen AI Max+ 395 with XRT 2.25.37 rather than a missing library or misconfiguration (since the symbol is present). Could you:

Confirm whether this Max+ 395 / XRT 2.25.37 / Ryzen AI 1.8 combination is expected to work for VitisAIExecutionProvider under Linux today, and

If so, investigate the runner creation path and symbol resolution for libxrt_core.so.2 on this platform?

I’m happy to provide full logs, container image details, and rerun tests with any patched packages or environment changes you suggest.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions