pytorch / pytorch/executorch

Executorch with QNN AI Engine Backend

Open
#15,387 26 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

module: qnn partner: qualcomm
Dominant language
Python
Stars
5k
Forks
1.2k
Avg merge
2d 10h
Merged PRs (30d)
581

Description

🐛 Describe the bug

I'm using native C++ code from examples/qualcomm/oss_scripts/runner to load and run the model. However, when I integrate it into my Android app using JNI, I encounter some issues

2025-10-25 13:16:45.866 12535-12561 NativeStdout com.google.ai.edge.samples.rag I I tokenizers:hf_tokenizer.cpp:327] normalized input: '' -> ''
2025-10-25 13:16:45.866 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag I Deserializing processed data using QnnContextCustomProtocol
2025-10-25 13:16:45.866 12535-12561 NativeStdout com.google.ai.edge.samples.rag I [INFO] [Qnn ExecuTorch]: Deserializing processed data using QnnContextCustomProtocol
2025-10-25 13:16:45.867 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag I create QNN Logger with log_level 1
2025-10-25 13:16:45.867 12535-12561 NativeStdout com.google.ai.edge.samples.rag I [INFO] [Qnn ExecuTorch]: create QNN Logger with log_level 1
2025-10-25 13:16:45.867 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag I Initialize Qnn backend parameters for Qnn executorch backend type 2
2025-10-25 13:16:45.867 12535-12561 NativeStdout com.google.ai.edge.samples.rag I [INFO] [Qnn ExecuTorch]: Initialize Qnn backend parameters for Qnn executorch backend type 2
2025-10-25 13:16:45.865 12535-12535 dge.samples.rag com.google.ai.edge.samples.rag I type=1400 audit(0.0:588): avc: denied { read } for name="sku" dev="sysfs" ino=84439 scontext=u:r:untrusted_app:s0:c248,c256,c512,c768 tcontext=u:object_r:vendor_sysfs_soc:s0 tclass=file permissive=1 app=com.google.ai.edge.samples.rag
2025-10-25 13:16:45.869 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag I Caching: Caching is in RESTORE MODE.
2025-10-25 13:16:45.869 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag I QnnContextCustomProtocol expected magic number: 0x5678abcd but get: 0x2000000
2025-10-25 13:16:45.869 12535-12561 NativeStdout com.google.ai.edge.samples.rag I [INFO] [Qnn ExecuTorch]: Caching: Caching is in RESTORE MODE.
[INFO] [Qnn ExecuTorch]: QnnContextCustomProtocol expected magic number: 0x5678abcd but get: 0x2000000
2025-10-25 13:16:45.894 12535-12535 audit com.google.ai.edge.samples.rag W audit_lost=310 audit_rate_limit=5 audit_backlog_limit=64
2025-10-25 13:16:45.894 12535-12535 audit com.google.ai.edge.samples.rag E rate limit exceeded
2025-10-25 13:16:45.871 12535-12535 DMABUFHEAPS com.google.ai.edge.samples.rag I Using DMA-BUF heap named: system
2025-10-25 13:16:45.871 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/rpcmem_android.c:182: set up allocator 0xb400007613f648d0 for DMA buf heap system, ION heap system, heap mask 0x2000000, flags 0x1, legacy flags 0x1
2025-10-25 13:16:45.871 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_config.c:304: Reading configuration file: com.google.ai.edge.samples.rag.debugconfig
2025-10-25 13:16:45.871 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_config.c:335: fastrpc_config_init: Couldn't find file com.google.ai.edge.samples.rag.debugconfig, errno (No such file or directory) at /vendor/lib/rfsa/adsp, /vendor/dsp/cdsp, /vendor/dsp,
2025-10-25 13:16:45.871 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:3803: fastrpc_apps_user_init done with default domain:3 and &fastrpc_trace:0x7449dedffc
2025-10-25 13:16:45.871 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:3917: multidsplib_env_init: libcdsprpc.so loaded
2025-10-25 13:16:45.872 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:2542: remote_session_control Unsigned PD enable 1 request for domain 3
2025-10-25 13:16:45.872 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:2525: remote_session_control DSP info request for domain 3, thread priority -1, stack size 17408
2025-10-25 13:16:45.872 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:3218: Successfully opened /vendor/dsp/cdsp/fastrpc_shell_unsigned_3, domain 3
2025-10-25 13:16:45.893 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:3321: Created user PD on domain 3, debug_trace 0x0, enabled attr=> RPC timeout:0, Debug Mode:N, CRC check:N, Unsigned:Y, Signed:N, Adapt QOS:N, PD dump: (Config:N, Debug:N), Perf: (Kernel:N, DSP:N), Iregion:N, QTF Tracing:N, UAF heap:N userPD initmem length:0x5
2025-10-25 13:16:45.897 12535-12563 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:617: Successfully set remote user thread priority to 192 and stack size to 17408 for domain 3
2025-10-25 13:16:45.897 12535-12563 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/listener_android.c:116: listener thread starting
2025-10-25 13:16:45.898 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_perf.c:273: fastrpc_perf_init: enabled systrace 0x0 and RPC traces (kernel 0, dsp 0) with frequency 1000
2025-10-25 13:16:45.898 12535-12564 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/log_config.c:348: file_watcher_thread starting for domain 3
2025-10-25 13:16:45.898 12535-12564 com.google...amples.rag com.google.ai.edge.samples.rag W vendor/qcom/proprietary/adsprpc/src/log_config.c:358:file_watcher_thread: Couldn't find file com.google.ai.edge.samples.rag.farf, errno (No such file or directory)
2025-10-25 13:16:45.893 12535-12535 dge.samples.rag com.google.ai.edge.samples.rag I type=1400 audit(0.0:601): avc: denied { watch } for path="/vendor/lib/rfsa/adsp" dev="overlay" ino=16 scontext=u:r:untrusted_app:s0:c248,c256,c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=dir permissive=1 app=com.google.ai.edge.samples.rag
2025-10-25 13:16:45.893 12535-12535 dge.samples.rag com.google.ai.edge.samples.rag I type=1400 audit(0.0:602): avc: denied { read } for name="cdsp" dev="sde11" ino=70 scontext=u:r:untrusted_app:s0:c248,c256,c512,c768 tcontext=u:object_r:adsprpcd_file:s0 tclass=dir permissive=1 app=com.google.ai.edge.samples.rag
2025-10-25 13:16:45.893 12535-12535 dge.samples.rag com.google.ai.edge.samples.rag I type=1400 audit(0.0:603): avc: denied { watch } for path="/vendor/dsp/cdsp" dev="sde11" ino=70 scontext=u:r:untrusted_app:s0:c248,c256,c512,c768 tcontext=u:object_r:adsprpcd_file:s0 tclass=dir permissive=1 app=com.google.ai.edge.samples.rag
2025-10-25 13:16:45.899 12535-12563 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/mod_table.c:703: open_mod_table_open_from_static: reverse module apps_std opened with handle 0x49df0cc0 (idx 0)
2025-10-25 13:16:45.897 12535-12535 dge.samples.rag com.google.ai.edge.samples.rag I type=1400 audit(0.0:604): avc: denied { read } for name="libQnnHtpV73Skel.so" dev="dm-5" ino=2743 scontext=u:r:untrusted_app:s0:c248,c256,c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=1 app=com.google.ai.edge.samples.rag
2025-10-25 13:16:45.897 12535-12535 dge.samples.rag com.google.ai.edge.samples.rag I type=1400 audit(0.0:605): avc: denied { open } for path="/vendor/lib/rfsa/adsp/libQnnHtpV73Skel.so" dev="overlay" ino=2743 scontext=u:r:untrusted_app:s0:c248,c256,c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=1 app=com.google.ai.edge.samples.rag
2025-10-25 13:16:45.900 12535-12563 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/apps_std_imp.c:1002: Successfully opened file libQnnHtpV73Skel.so
2025-10-25 13:16:45.900 12535-12563 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/mod_table.c:703: open_mod_table_open_from_static: reverse module apps_mem opened with handle 0x49df0dc0 (idx 1)
2025-10-25 13:16:45.915 12535-12563 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/apps_std_imp.c:982: Successfully opened file /vendor/dsp/cdsp/libc++.so.1
2025-10-25 13:16:45.922 12535-12563 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/apps_std_imp.c:982: Successfully opened file /vendor/dsp/cdsp/libc++abi.so.1
2025-10-25 13:16:45.987 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:1576: remote_handle64_open: Successfully opened handle 0xb400007573fa9210 (remote handle 0xed3b00) for file:///libQnnHtpV73Skel.so?qnn_skel_handle_invoke&_modver=1.0&_dom=cdsp on domain 3 (spawn time 0 us, load time 0 us), num of open handles: 1
2025-10-25 13:16:45.988 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag E QnnDsp Failed to retrieve skel build id: err: 10010
2025-10-25 13:16:45.988 12535-12561 NativeStdout com.google.ai.edge.samples.rag I [ERROR] [Qnn ExecuTorch]: QnnDsp Failed to retrieve skel build id: err: 10010
2025-10-25 13:16:45.988 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag E QnnDsp Error in verify skel version
2025-10-25 13:16:45.988 12535-12561 NativeStdout com.google.ai.edge.samples.rag I [ERROR] [Qnn ExecuTorch]: QnnDsp Error in verify skel version
2025-10-25 13:16:45.999 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:1602: remote_handle_close: closed handle 0xed3b00
2025-10-25 13:16:45.999 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:2867: domain_deinit for domain 3: dev 90
2025-10-25 13:16:45.999 12535-12563 com.google...amples.rag com.google.ai.edge.samples.rag E vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:3732: exit_thread current process1 thread exit nErr = 0x8000040d domain 3, handle 0xb400007573fa9cd0
2025-10-25 13:16:45.999 12535-12564 com.google...amples.rag com.google.ai.edge.samples.rag W vendor/qcom/proprietary/adsprpc/src/log_config.c:368:Warning: file_watcher_thread received exit for domain 3, file com.google.ai.edge.samples.rag.farf
2025-10-25 13:16:45.999 12535-12564 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/log_config.c:415: file_watcher_thread exiting for domain 3
2025-10-25 13:16:46.000 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/mod_table.c:789: open_mod_table_close: closed reverse module apps_mem with handle 0x49df0dc0
2025-10-25 13:16:46.000 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/mod_table.c:789: open_mod_table_close: closed reverse module apps_std with handle 0x49df0cc0
2025-10-25 13:16:46.031 12535-12535 com.google...amples.rag com.google.ai.edge.samples.rag I vendor/qcom/proprietary/adsprpc/src/fastrpc_apps_user.c:1645: remote_handle64_close: closed handle 0xb400007573fa9210 remote handle 0xed3b00, num of open handles: 0
2025-10-25 13:16:46.031 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag E QnnDsp Failed to create transport for device, error: 4000
2025-10-25 13:16:46.031 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag E QnnDsp Failed to load skel, error: 4000
2025-10-25 13:16:46.031 12535-12535 [Qnn ExecuTorch] com.google.ai.edge.samples.rag E QnnDsp Transport layer setup failed: 14001

Versions

OS: Ubuntu 22.04.5 LTS (x86_64)

cc @cccclai @winskuo-quic @shewu-quic @haowhsu-quic @DannyYuyang-quic @cbilgin

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing the native C++ flow in examples/qualcomm/oss_scripts/runner with the Android JNI integration, focusing on the QnnContextCustomProtocol magic-number and QnnDsp skel build-id errors in the log. Determine the backend and skel-version requirements needed for initialization to complete without these errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, cpp
Domain
ai, embedded-iot, mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.