[INFO] QAIRT_SDK_ROOT=/home/boyucwsl/executorch/qairt/2.37.0.250724 [WARN] QNN_SDK_ROOT/SNPE_ROOT set to QAIRT_SDK_ROOT for backwards compatibility and will be deprecated in a future release. [INFO] QAIRT SDK environment setup complete [QNN] Using QNN SDK at /home/boyucwsl/executorch/qairt/2.37.0.250724 (from QNN_SDK_ROOT) [PipelineGraphCollector] Installed patch: prepare_pt2e [PipelineGraphCollector] Installed patch: convert_pt2e [PipelineGraphCollector] Installed patch: to_edge_transform_and_lower [PipelineGraphCollector] Installed ETRecord patches libquantized_ops_aot_lib is not loaded The backend_opinfo module couldn't be imported, so the abstract implementation will be used instead. This might be because $QNN_SDK_ROOT/lib/python isn't included in your PYTHONPATH, or the `BackendOpInfo` API isn't available in your QNN SDK version. Note that the `BackendOpInfo` API is supported starting from QNN SDK 2.41 and above. [PipelineGraphCollector] Installed QNN patch: _ptq_calibrate [AccuracyLens] Installed patch: get_imagenet_dataset [AccuracyLens] Installed patch: get_masked_language_model_dataset [Observatory CLI] Running as script: /home/boyucwsl/executorch/examples/qualcomm/scripts/inception_v4.py Using parser's config [AccuracyLens] Captured ImageNet targets (10 samples) Loading inception_v4 model Loading pretrained weights from Hugging Face hub (timm/inception_v4.tf_in1k) HTTP Request: HEAD https://huggingface.co/timm/inception_v4.tf_in1k/resolve/main/model.safetensors "HTTP/1.1 302 Found" [timm/inception_v4.tf_in1k] Safe alternative available for 'pytorch_model.bin' (as 'model.safetensors'). Loading weights using safetensors. Loaded inception_v4 model /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Creating new layout from 1446 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 301.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [AccuracyLens] Using backend-captured fallback dataset from PipelineGraphCollectorLens [AccuracyLens] Auto-configured classification evaluator with 6 metrics [Observatory] Collected Exported Float in 9739.5 ms /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Creating new layout from 1347 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 259.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Collected Annotated Model in 4765.2 ms Creating new layout from 1347 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 259.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Collected Calibrated Model in 4186.2 ms Creating new layout from 2344 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 182.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Collected Quantized Model in 7287.1 ms [INFO] [Qnn ExecuTorch]: Creating new backend bundle. [INFO] [Qnn ExecuTorch]: create QNN Logger with log_level 1 Creating new layout from 2344 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 196.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Collected Pre-EdgeTransform/forward in 6989.3 ms /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Op aten.unbind.int was requested for preservation by partitioner. This request is ignored because it is in a blocklist. /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Op aten.unbind.int was requested for preservation by partitioner. This request is ignored because it is in a blocklist. /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Creating new layout from 2344 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 196.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Collected ETRecord Exported/forward in 7329.8 ms /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Creating new layout from 2348 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 196.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Collected ETRecord Edge/forward in 8340.7 ms /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Creating new layout from 1749 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 182.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Collected ETRecord Extra/edge_after_transform/forward in 7729.2 ms /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... No quant config is implemented for op, aten.dropout.default Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... Quantizing(PTQ) the model... Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... [QNN Partitioner Op Support]: aten.linear.default | True [QNN Partitioner Op Support]: aten.view_copy.default | True [QNN Partitioner Op Support]: aten.adaptive_avg_pool2d.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.max_pool2d_with_indices.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.max_pool2d_with_indices.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | TrueFound 1 subgraphs to be partitioned. Qnn partitioner will delegate torch mutable buffer with the same I/O address during the runtime, so if your model contains mutable buffer, then you can get the better performance with skip_mutable_buffer=False. If you encounter accuracy issue during the runtime, then please set `skip_mutable_buffer=True` and try again. /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) [INFO] [Qnn ExecuTorch]: Initialize Qnn backend parameters for Qnn executorch backend type 2 [INFO] [Qnn ExecuTorch]: Caching: Caching is in SAVE MODE. [INFO] [Qnn ExecuTorch]: Running level=3 optimization. Processing Method(0): (1/1) Visiting: quantized_decomposed_quantize_per_tensor_default, quantized_decomposed.quantize_per_tensor.default Visiting: aten_permute_copy_default, aten.permute_copy.default Visiting: aten_convolution_default, aten.convolution.default Visiting: aten_relu_default, aten.relu.default Visiting: aten_convolution_default_1, aten.convolution.default Visiting: aten_relu_default_1, aten.relu.default Visiting: aten_convolution_default_2, aten.convolution.default Visiting: aten_relu_default_2, aten.relu.default Visiting: aten_max_pool2d_with_indices_default, aten.max_pool2d_with_indices.default Visiting: aten_convolution_default_3, aten.convolution.default Visiting: getitem, getitem Visiting: aten_relu_default_3, aten.relu.default Visiting: aten_cat_default, aten.cat.default Visiting: aten_convolution_default_4, aten.convolution.default Visiting: aten_convolution_default_6, aten.convolution.default Visiting: aten_relu_default_4, aten.relu.default Visiting: aten_relu_default_6, aten.relu.default Visiting: aten_convolution_default_5, aten.convolution.default Visiting: aten_convolution_default_7, aten.convolution.default Visiting: aten_relu_default_5, aten.relu.default Visiting: aten_relu_default_7, aten.relu.default Visiting: aten_convolution_default_8, aten.convolution.default Visiting: aten_relu_default_8, aten.relu.default Visiting: aten_convolution_default_9, aten.convolution.default Visiting: aten_relu_default_9, aten.relu.default Visiting: aten_cat_default_1, aten.cat.default Visiting: aten_convolution_default_10, aten.convolution.default Visiting: aten_max_pool2d_with_indices_default_1, aten.max_pool2d_with_indices.default Visiting: aten_relu_default_10, aten.relu.default Visiting: getitem_1, getitem Visiting: aten_cat_default_2, aten.cat.default Visiting: aten_convolution_default_11, aten.convolution.default Visiting: aten_convolution_default_12, aten.convolution.default Visiting: aten_convolution_default_14, aten.convolution.default Visiting: aten_avg_pool2d_default, aten.avg_pool2d.default Visiting: aten_relu_default_11, aten.relu.default Visiting: aten_relu_default_12, aten.relu.default Visiting: aten_relu_default_14, aten.relu.default Visiting: aten_convolution_default_17, aten.convolution.default Visiting: aten_convolution_default_13, aten.convolution.default Visiting: aten_convolution_default_15, aten.convolution.default Visiting: aten_relu_default_17, aten.relu.default Visiting: aten_relu_default_13, aten.relu.default Visiting: aten_relu_default_15, aten.relu.default Visiting: aten_convolution_default_16, aten.convolution.default Visiting: aten_relu_default_16, aten.relu.default Visiting: aten_cat_default_3, aten.cat.default Visiting: aten_convolution_default_18, aten.convolution.default Visiting: aten_convolution_default_19, aten.convolution.default Visiting: aten_convolution_default_21, aten.convolution.default Visiting: aten_avg_pool2d_default_1, aten.avg_pool2d.default Visiting: aten_relu_default_18, aten.relu.default Visiting: aten_relu_default_19, aten.relu.default Visiting: aten_relu_default_21, aten.relu.default Visiting: aten_convolution_default_24, aten.convolution.default Visiting: aten_convolution_default_20, aten.convolution.default Visiting: aten_convolution_default_22, aten.convolution.default Visiting: aten_relu_default_24, aten.relu.default Visiting: aten_relu_default_20, aten.relu.default Visiting: aten_relu_default_22, aten.relu.default Visiting: aten_convolution_default_23, aten.convolution.default Visiting: aten_relu_default_23, aten.relu.default Visiting: aten_cat_default_4, aten.cat.default Visiting: aten_convolution_default_25, aten.convolution.default Visiting: aten_convolution_default_26, aten.convolution.default Visiting: aten_convolution_default_28, aten.convolution.default Visiting: aten_avg_pool2d_default_2, aten.avg_pool2d.default Visiting: aten_relu_default_25, aten.relu.default Visiting: aten_relu_default_26, aten.relu.default Visiting: aten_relu_default_28, aten.relu.default Visiting: aten_convolution_default_31, aten.convolution.default Visiting: aten_convolution_default_27, aten.convolution.default Visiting: aten_convolution_default_29, aten.convolution.default Visiting: aten_relu_default_31, aten.relu.default Visiting: aten_relu_default_27, aten.relu.default Visiting: aten_relu_default_29, aten.relu.default Visiting: aten_convolution_default_30, aten.convolution.default Visiting: aten_relu_default_30, aten.relu.default Visiting: aten_cat_default_5, aten.cat.default Visiting: aten_convolution_default_32, aten.convolution.default Visiting: aten_convolution_default_33, aten.convolution.default Visiting: aten_convolution_default_35, aten.convolution.default Visiting: aten_avg_pool2d_default_3, aten.avg_pool2d.default Visiting: aten_relu_default_32, aten.relu.default Visiting: aten_relu_default_33, aten.relu.default Visiting: aten_relu_default_35, aten.relu.default Visiting: aten_convolution_default_38, aten.convolution.default Visiting: aten_convolution_default_34, aten.convolution.default Visiting: aten_convolution_default_36, aten.convolution.default Visiting: aten_relu_default_38, aten.relu.default Visiting: aten_relu_default_34, aten.relu.default Visiting: aten_relu_default_36, aten.relu.default Visiting: aten_convolution_default_37, aten.convolution.default Visiting: aten_relu_default_37, aten.relu.default Visiting: aten_cat_default_6, aten.cat.default Visiting: aten_convolution_default_39, aten.convolution.default Visiting: aten_convolution_default_40, aten.convolution.default Visiting: aten_max_pool2d_with_indices_default_2, aten.max_pool2d_with_indices.default Visiting: aten_relu_default_39, aten.relu.default Visiting: aten_relu_default_40, aten.relu.default Visiting: getitem_2, getitem Visiting: aten_convolution_default_41, aten.convolution.default Visiting: aten_relu_default_41, aten.relu.default Visiting: aten_convolution_default_42, aten.convolution.default Visiting: aten_relu_default_42, aten.relu.default Visiting: aten_cat_default_7, aten.cat.default Visiting: aten_convolution_default_43, aten.convolution.default Visiting: aten_convolution_default_44, aten.convolution.default Visiting: aten_convolution_default_47, aten.convolution.default Visiting: aten_avg_pool2d_default_4, aten.avg_pool2d.default Visiting: aten_relu_default_43, aten.relu.default Visiting: aten_relu_default_44, aten.relu.default Visiting: aten_relu_default_47, aten.relu.default Visiting: aten_convolution_default_52, aten.convolution.default Visiting: aten_convolution_default_45, aten.convolution.default Visiting: aten_convolution_default_48, aten.convolution.default Visiting: aten_relu_default_52, aten.relu.default Visiting: aten_relu_default_45, aten.relu.default Visiting: aten_relu_default_48, aten.relu.default Visiting: aten_convolution_default_46, aten.convolution.default Visiting: aten_convolution_default_49, aten.convolution.default Visiting: aten_relu_default_46, aten.relu.default Visiting: aten_relu_default_49, aten.relu.default Visiting: aten_convolution_default_50, aten.convolution.default Visiting: aten_relu_default_50, aten.relu.default Visiting: aten_convolution_default_51, aten.convolution.default Visiting: aten_relu_default_51, aten.relu.default Visiting: aten_cat_default_8, aten.cat.default Visiting: aten_convolution_default_53, aten.convolution.default Visiting: aten_convolution_default_54, aten.convolution.default Visiting: aten_convolution_default_57, aten.convolution.default Visiting: aten_avg_pool2d_default_5, aten.avg_pool2d.default Visiting: aten_relu_default_53, aten.relu.default Visiting: aten_relu_default_54, aten.relu.default Visiting: aten_relu_default_57, aten.relu.default Visiting: aten_convolution_default_62, aten.convolution.default Visiting: aten_convolution_default_55, aten.convolution.default Visiting: aten_convolution_default_58, aten.convolution.default Visiting: aten_relu_default_62, aten.relu.default Visiting: aten_relu_default_55, aten.relu.default Visiting: aten_relu_default_58, aten.relu.default Visiting: aten_convolution_default_56, aten.convolution.default Visiting: aten_convolution_default_59, aten.convolution.default Visiting: aten_relu_default_56, aten.relu.default Visiting: aten_relu_default_59, aten.relu.default Visiting: aten_convolution_default_60, aten.convolution.default Visiting: aten_relu_default_60, aten.relu.default Visiting: aten_convolution_default_61, aten.convolution.default Visiting: aten_relu_default_61, aten.relu.default Visiting: aten_cat_default_9, aten.cat.default Visiting: aten_convolution_default_63, aten.convolution.default Visiting: aten_convolution_default_64, aten.convolution.default Visiting: aten_convolution_default_67, aten.convolution.default Visiting: aten_avg_pool2d_default_6, aten.avg_pool2d.default Visiting: aten_relu_default_63, aten.relu.default Visiting: aten_relu_default_64, aten.relu.default Visiting: aten_relu_default_67, aten.relu.default Visiting: aten_convolution_default_72, aten.convolution.default Visiting: aten_convolution_default_65, aten.convolution.default Visiting: aten_convolution_default_68, aten.convolution.default Visiting: aten_relu_default_72, aten.relu.default Visiting: aten_relu_default_65, aten.relu.default Visiting: aten_relu_default_68, aten.relu.default Visiting: aten_convolution_default_66, aten.convolution.default Visiting: aten_convolution_default_69, aten.convolution.default Visiting: aten_relu_default_66, aten.relu.default Visiting: aten_relu_default_69, aten.relu.default Visiting: aten_convolution_default_70, aten.convolution.default Visiting: aten_relu_default_70, aten.relu.default Visiting: aten_convolution_default_71, aten.convolution.default Visiting: aten_relu_default_71, aten.relu.default Visiting: aten_cat_default_10, aten.cat.default Visiting: aten_convolution_default_73, aten.convolution.default Visiting: aten_convolution_default_74, aten.convolution.default Visiting: aten_convolution_default_77, aten.convolution.default Visiting: aten_avg_pool2d_default_7, aten.avg_pool2d.default Visiting: aten_relu_default_73, aten.relu.default Visiting: aten_relu_default_74, aten.relu.default Visiting: aten_relu_default_77, aten.relu.default Visiting: aten_convolution_default_82, aten.convolution.default Visiting: aten_convolution_default_75, aten.convolution.default Visiting: aten_convolution_default_78, aten.convolution.default Visiting: aten_relu_default_82, aten.relu.default Visiting: aten_relu_default_75, aten.relu.default Visiting: aten_relu_default_78, aten.relu.default Visiting: aten_convolution_default_76, aten.convolution.default Visiting: aten_convolution_default_79, aten.convolution.default Visiting: aten_relu_default_76, aten.relu.default Visiting: aten_relu_default_79, aten.relu.default Visiting: aten_convolution_default_80, aten.convolution.default Visiting: aten_relu_default_80, aten.relu.default Visiting: aten_convolution_default_81, aten.convolution.default Visiting: aten_relu_default_81, aten.relu.default Visiting: aten_cat_default_11, aten.cat.default Visiting: aten_convolution_default_83, aten.convolution.default Visiting: aten_convolution_default_84, aten.convolution.default Visiting: aten_convolution_default_87, aten.convolution.default Visiting: aten_avg_pool2d_default_8, aten.avg_pool2d.default Visiting: aten_relu_default_83, aten.relu.default Visiting: aten_relu_default_84, aten.relu.default Visiting: aten_relu_default_87, aten.relu.default Visiting: aten_convolution_default_92, aten.convolution.default Visiting: aten_convolution_default_85, aten.convolution.default Visiting: aten_convolution_default_88, aten.convolution.default Visiting: aten_relu_default_92, aten.relu.default Visiting: aten_relu_default_85, aten.relu.default Visiting: aten_relu_default_88, aten.relu.default Visiting: aten_convolution_default_86, aten.convolution.default Visiting: aten_convolution_default_89, aten.convolution.default Visiting: aten_relu_default_86, aten.relu.default Visiting: aten_relu_default_89, aten.relu.default Visiting: aten_convolution_default_90, aten.convolution.default Visiting: aten_relu_default_90, aten.relu.default Visiting: aten_convolution_default_91, aten.convolution.default Visiting: aten_relu_default_91, aten.relu.default Visiting: aten_cat_default_12, aten.cat.default Visiting: aten_convolution_default_93, aten.convolution.default Visiting: aten_convolution_default_94, aten.convolution.default Visiting: aten_convolution_default_97, aten.convolution.default Visiting: aten_avg_pool2d_default_9, aten.avg_pool2d.default Visiting: aten_relu_default_93, aten.relu.default Visiting: aten_relu_default_94, aten.relu.default Visiting: aten_relu_default_97, aten.relu.default Visiting: aten_convolution_default_102, aten.convolution.default Visiting: aten_convolution_default_95, aten.convolution.default Visiting: aten_convolution_default_98, aten.convolution.default Visiting: aten_relu_default_102, aten.relu.default Visiting: aten_relu_default_95, aten.relu.default Visiting: aten_relu_default_98, aten.relu.default Visiting: aten_convolution_default_96, aten.convolution.default Visiting: aten_convolution_default_99, aten.convolution.default Visiting: aten_relu_default_96, aten.relu.default Visiting: aten_relu_default_99, aten.relu.default Visiting: aten_convolution_default_100, aten.convolution.default Visiting: aten_relu_default_100, aten.relu.default Visiting: aten_convolution_default_101, aten.convolution.default Visiting: aten_relu_default_101, aten.relu.default Visiting: aten_cat_default_13, aten.cat.default Visiting: aten_convolution_default_103, aten.convolution.default Visiting: aten_convolution_default_104, aten.convolution.default Visiting: aten_convolution_default_107, aten.convolution.default Visiting: aten_avg_pool2d_default_10, aten.avg_pool2d.default Visiting: aten_relu_default_103, aten.relu.default Visiting: aten_relu_default_104, aten.relu.default Visiting: aten_relu_default_107, aten.relu.default Visiting: aten_convolution_default_112, aten.convolution.default Visiting: aten_convolution_default_105, aten.convolution.default Visiting: aten_convolution_default_108, aten.convolution.default Visiting: aten_relu_default_112, aten.relu.default Visiting: aten_relu_default_105, aten.relu.default Visiting: aten_relu_default_108, aten.relu.default Visiting: aten_convolution_default_106, aten.convolution.default Visiting: aten_convolution_default_109, aten.convolution.default Visiting: aten_relu_default_106, aten.relu.default Visiting: aten_relu_default_109, aten.relu.default Visiting: aten_convolution_default_110, aten.convolution.default Visiting: aten_relu_default_110, aten.relu.default Visiting: aten_convolution_default_111, aten.convolution.default Visiting: aten_relu_default_111, aten.relu.default Visiting: aten_cat_default_14, aten.cat.default Visiting: aten_convolution_default_113, aten.convolution.default Visiting: aten_convolution_default_115, aten.convolution.default Visiting: aten_max_pool2d_with_indices_default_3, aten.max_pool2d_with_indices.default Visiting: aten_relu_default_113, aten.relu.default Visiting: aten_relu_default_115, aten.relu.default Visiting: getitem_3, getitem Visiting: aten_convolution_default_114, aten.convolution.default Visiting: aten_convolution_default_116, aten.convolution.default Visiting: aten_relu_default_114, aten.relu.default Visiting: aten_relu_default_116, aten.relu.default Visiting: aten_convolution_default_117, aten.convolution.default Visiting: aten_relu_default_117, aten.relu.default Visiting: aten_convolution_default_118, aten.convolution.default Visiting: aten_relu_default_118, aten.relu.default Visiting: aten_cat_default_15, aten.cat.default Visiting: aten_convolution_default_119, aten.convolution.default Visiting: aten_convolution_default_120, aten.convolution.default Visiting: aten_convolution_default_123, aten.convolution.default Visiting: aten_avg_pool2d_default_11, aten.avg_pool2d.default Visiting: aten_relu_default_119, aten.relu.default Visiting: aten_relu_default_120, aten.relu.default Visiting: aten_relu_default_123, aten.relu.default Visiting: aten_convolution_default_128, aten.convolution.default Visiting: aten_convolution_default_121, aten.convolution.default Visiting: aten_convolution_default_122, aten.convolution.default Visiting: aten_convolution_default_124, aten.convolution.default Visiting: aten_relu_default_128, aten.relu.default Visiting: aten_relu_default_121, aten.relu.default Visiting: aten_relu_default_122, aten.relu.default Visiting: aten_relu_default_124, aten.relu.default Visiting: aten_cat_default_16, aten.cat.default Visiting: aten_convolution_default_125, aten.convolution.default Visiting: aten_relu_default_125, aten.relu.default Visiting: aten_convolution_default_126, aten.convolution.default Visiting: aten_convolution_default_127, aten.convolution.default Visiting: aten_relu_default_126, aten.relu.default Visiting: aten_relu_default_127, aten.relu.default Visiting: aten_cat_default_17, aten.cat.default Visiting: aten_cat_default_18, aten.cat.default Visiting: aten_convolution_default_129, aten.convolution.default Visiting: aten_convolution_default_130, aten.convolution.default Visiting: aten_convolution_default_133, aten.convolution.default Visiting: aten_avg_pool2d_default_12, aten.avg_pool2d.default Visiting: aten_relu_default_129, aten.relu.default Visiting: aten_relu_default_130, aten.relu.default Visiting: aten_relu_default_133, aten.relu.default Visiting: aten_convolution_default_138, aten.convolution.default Visiting: aten_convolution_default_131, aten.convolution.default Visiting: aten_convolution_default_132, aten.convolution.default Visiting: aten_convolution_default_134, aten.convolution.default Visiting: aten_relu_default_138, aten.relu.default Visiting: aten_relu_default_131, aten.relu.default Visiting: aten_relu_default_132, aten.relu.default Visiting: aten_relu_default_134, aten.relu.default Visiting: aten_cat_default_19, aten.cat.default Visiting: aten_convolution_default_135, aten.convolution.default Visiting: aten_relu_default_135, aten.relu.default Visiting: aten_convolution_default_136, aten.convolution.default Visiting: aten_convolution_default_137, aten.convolution.default Visiting: aten_relu_default_136, aten.relu.default Visiting: aten_relu_default_137, aten.relu.default Visiting: aten_cat_default_20, aten.cat.default Visiting: aten_cat_default_21, aten.cat.default Visiting: aten_convolution_default_139, aten.convolution.default Visiting: aten_convolution_default_140, aten.convolution.default Visiting: aten_convolution_default_143, aten.convolution.default Visiting: aten_avg_pool2d_default_13, aten.avg_pool2d.default Visiting: aten_relu_default_139, aten.relu.default Visiting: aten_relu_default_140, aten.relu.default Visiting: aten_relu_default_143, aten.relu.default Visiting: aten_convolution_default_148, aten.convolution.default Visiting: aten_convolution_default_141, aten.convolution.default Visiting: aten_convolution_default_142, aten.convolution.default Visiting: aten_convolution_default_144, aten.convolution.default Visiting: aten_relu_default_148, aten.relu.default Visiting: aten_relu_default_141, aten.relu.default Visiting: aten_relu_default_142, aten.relu.default Visiting: aten_relu_default_144, aten.relu.default Visiting: aten_cat_default_22, aten.cat.default Visiting: aten_convolution_default_145, aten.convolution.default Visiting: aten_relu_default_145, aten.relu.default Visiting: aten_convolution_default_146, aten.convolution.default Visiting: aten_convolution_default_147, aten.convolution.default Visiting: aten_relu_default_146, aten.relu.default Visiting: aten_relu_default_147, aten.relu.default Visiting: aten_cat_default_23, aten.cat.default Visiting: aten_cat_default_24, aten.cat.default Visiting: aten_adaptive_avg_pool2d_default, aten.adaptive_avg_pool2d.default Visiting: aten_permute_copy_default_1, aten.permute_copy.default Visiting: aten_view_copy_default, aten.view_copy.default Visiting: aten__to_copy_default_149, aten._to_copy.default Visiting: aten_linear_default, aten.linear.default Visiting: quantized_decomposed_dequantize_per_tensor_tensor, quantized_decomposed.dequantize_per_tensor.tensor ====== DDR bandwidth summary ====== spill_bytes=0 fill_bytes=0 write_total_bytes=4096 read_total_bytes=44111872 [INFO] [Qnn ExecuTorch]: Destroy Qnn context /home/boyucwsl/.local/share/uv/python/cpython-3.11.14-linux-x86_64-gnu/lib/python3.11/copyreg.py:105: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead. return cls.__new__(cls, *args) Op aten.unbind.int was requested for preservation by partitioner. This request is ignored because it is in a blocklist. Creating new layout from 4 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 182.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Collected EdgeProgramManager EP in 17378.2 ms [INFO] [Qnn ExecuTorch]: Destroy Qnn device [INFO] [Qnn ExecuTorch]: Destroy Qnn backend /home/boyucwsl/executorch/exir/tensor.py:83: FutureWarning: guard_size_oblivious will be removed. Consider using explicit unbacked handling potentially utilizing guard_or_false, guard_or_true, or statically_known_true return guard_size_oblivious(self.stride < other.stride) [PipelineGraphCollector] Uninstalled all patches [AccuracyLens] Uninstalled all patches [Observatory] Exported raw data to /home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/inception_v4/observatory_report.json Creating new layout from 1446 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 301.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction Creating new layout from 1347 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 259.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction Creating new layout from 1347 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 259.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction Creating new layout from 2344 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 182.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction Creating new layout from 2344 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 196.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction Creating new layout from 2344 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 196.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction Creating new layout from 2348 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 196.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction Creating new layout from 1749 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 182.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction Creating new layout from 4 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 182.0, dummy_vertices: true, dummy_size: 1.0, ranking_type: MinimizeEdgeLength, c_minimization: Median, transpose: true, check_layout: true, encode_edges: false } Executing phase 0: Cycle Removal Graph contains no cycle Executing phase 1: Ranking Start ranking, ranking type: MinimizeEdgeLength, minimum_length: 1 Initializing ranks via topological sort. building feasible tree Trying to build tight tree. Initializing cut values Calculating cut values of tree edges initialzing low, lim and parent values of vertices Executing phase 2: Crossing Reduction Inserting dummy vertices for edges spanning more than 1 ranks Initializing order of vertices in each rank via dfs. Reducing crossings via bilayer sweep Didn't improve after 4 sweeps, returning Executing phase 3: Coordinate Calculation Creating individual layouts for coordinate calculation Marking type one conflicts (edge crossings between dummy vertices and non dummy vertices) creating layouts for vertical direction: Down, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Down, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Right Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible creating layouts for vertical direction: Up, horizontal direction Left Creating vertical alignments calculating coordinates for layout. Placing vertices in blocks. move blocks as close together as possible Aligning all layouts to the one with the smallest width Calculate relative coordinates, by taking average between two medians of absolute x-coordinates for each layout direction [Observatory] Exported HTML report to /home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/inception_v4/observatory_report.html [Observatory CLI] Reports: html=/home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/inception_v4/observatory_report.html json=/home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/inception_v4/observatory_report.json (9 records: Exported Float, Annotated Model, Calibrated Model, Quantized Model, Pre-EdgeTransform/forward, ETRecord Exported/forward, ETRecord Edge/forward, ETRecord Extra/edge_after_transform/forward, EdgeProgramManager EP) [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.avg_pool2d.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.max_pool2d_with_indices.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.cat.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.max_pool2d_with_indices.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.relu.default | True [QNN Partitioner Op Support]: aten.convolution.default | True Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... Running fast-sugiyama layout... Running fast-sugiyama layout... Running fast-sugiyama layout... Running fast-sugiyama layout... Running fast-sugiyama layout... Running fast-sugiyama layout... Running fast-sugiyama layout... Running fast-sugiyama layout... Running fast-sugiyama layout... $ bash -lc 'source /home/boyucwsl/executorch/qairt/2.37.0.250724/bin/envsetup.sh && python -m executorch.backends.qualcomm.debugger.observatory --output-html /home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/inception_v4/observatory_report.html --output-json /home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/inception_v4/observatory_report.json --lens_recipe accuracy examples/qualcomm/scripts/inception_v4.py -m SM8650 -b ./build-android --dataset /home/boyucwsl/executorch/imagenet-mini-val/ -H mlgtw-linux -s bebcca9b -a /home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/inception_v4/artifacts --seed 1126 --compile_only'