@@ -923,6 +923,74 @@ jobs:
923923 # Run QNN pass unit tests
924924 pytest -xvs backends/qualcomm/tests/test_passes.py
925925
926+ test-qnn-python-imports-linux :
927+ name : test-qnn-python-imports-linux
928+ uses : pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
929+ permissions :
930+ id-token : write
931+ contents : read
932+ strategy :
933+ fail-fast : false
934+ with :
935+ runner : linux.2xlarge
936+ docker-image : ci-image:executorch-ubuntu-22.04-qnn-sdk
937+ submodules : ' recursive'
938+ ref : ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
939+ timeout : 15
940+ script : |
941+ CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]")
942+ conda activate "${CONDA_ENV}"
943+
944+ PYTHON_EXECUTABLE=python bash .ci/scripts/setup-qnn-deps.sh
945+ PYTHON_EXECUTABLE=python source .ci/scripts/build-qnn-sdk.sh
946+
947+ CMAKE_ARGS="-DEXECUTORCH_BUILD_QNN=ON -DQNN_SDK_ROOT=$QNN_SDK_ROOT -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON" \
948+ PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh --build-tool cmake --editable true
949+
950+ pip install -r requirements-examples.txt
951+
952+ # Validate all QNN Python imports resolve.
953+ # Catches missing deps (lm_eval, openpyxl, etc.) early with a clear error.
954+ python .ci/scripts/test_qnn_imports.py
955+
956+ test-qnn-delegate-linux :
957+ name : test-qnn-delegate-linux
958+ uses : pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
959+ permissions :
960+ id-token : write
961+ contents : read
962+ strategy :
963+ fail-fast : false
964+ with :
965+ runner : linux.2xlarge
966+ docker-image : ci-image:executorch-ubuntu-22.04-qnn-sdk
967+ submodules : ' recursive'
968+ ref : ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
969+ timeout : 90
970+ script : |
971+ # The generic Linux job chooses to use base env, not the one setup by the image
972+ CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]")
973+ conda activate "${CONDA_ENV}"
974+
975+ PYTHON_EXECUTABLE=python bash .ci/scripts/setup-qnn-deps.sh
976+ # Source (not bash) so QNN_SDK_ROOT stays in the environment
977+ PYTHON_EXECUTABLE=python source .ci/scripts/build-qnn-sdk.sh
978+
979+ # Editable install so the PyQnnManagerAdaptor .so built by build-qnn-sdk.sh
980+ # is visible in the source tree
981+ CMAKE_ARGS="-DEXECUTORCH_BUILD_QNN=ON -DQNN_SDK_ROOT=$QNN_SDK_ROOT -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON" \
982+ PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh --build-tool cmake --editable true
983+
984+ pip install -r requirements-examples.txt
985+
986+ # Enable conftest.py to call setup_environment() for pytest runs
987+ export QNN_DELEGATE_TEST=1
988+ export LD_LIBRARY_PATH="$QNN_SDK_ROOT/lib/x86_64-linux-clang/:$(realpath build-x86/lib/):${LD_LIBRARY_PATH:-}"
989+
990+ # Run operator test classes only.
991+ pytest -vs backends/qualcomm/tests/test_qnn_delegate.py \
992+ -k "TestQNNFloatingPointOperator or TestQNNQuantizedOperator"
993+
926994 test-phi-3-mini-runner-linux :
927995 name : test-phi-3-mini-runner-linux
928996 uses : pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
0 commit comments