[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/mobilenet_v2.py Using parser's config [AccuracyLens] Captured ImageNet targets (10 samples) Loading mobilenet_v2 model Loaded mobilenet_v2 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 478 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 266.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 2581.0 ms Creating new layout from 426 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 252.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 1206.5 ms Creating new layout from 426 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 252.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 1209.1 ms Creating new layout from 746 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 175.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 1927.0 ms Building graph payload model... Running fast-sugiyama layout... [FX Graph Viewer] Compiling base graph payload... [ FX Graph Viewer ] Compiling extension payloads... [WARNING] the 1 th arg of node hardtanh_ is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh_ is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__1 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__1 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__2 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__2 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__3 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__3 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__4 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__4 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__5 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__5 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__6 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__6 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__7 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__7 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__8 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__8 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__9 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__9 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__10 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__10 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__11 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__11 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__12 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__12 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__13 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__13 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__14 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__14 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__15 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__15 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__16 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__16 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__17 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__17 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__18 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__18 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__19 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__19 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__20 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__20 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__21 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__21 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__22 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__22 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__23 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__23 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__24 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__24 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__25 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__25 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__26 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__26 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__27 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__27 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__28 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__28 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__29 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__29 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__30 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__30 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__31 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__31 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__32 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__32 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__33 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__33 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__34 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__34 is NumberType, might need to lift 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... [WARNING] the 1 th arg of node hardtanh_ is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh_ is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__1 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__1 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__2 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__2 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__3 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__3 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__4 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__4 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__5 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__5 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__6 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__6 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__7 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__7 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__8 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__8 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__9 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__9 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__10 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__10 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__11 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__11 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__12 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__12 is NumberType, might need to lift[INFO] [Qnn ExecuTorch]: Creating new backend bundle. [INFO] [Qnn ExecuTorch]: create QNN Logger with log_level 1 Creating new layout from 746 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 189.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 2114.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) 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 746 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 189.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 1665.9 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 746 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 189.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 2580.0 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 583 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 2192.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) [WARNING] the 1 th arg of node hardtanh__13 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__13 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__14 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__14 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__15 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__15 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__16 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__16 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__17 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__17 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__18 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__18 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__19 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__19 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__20 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__20 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__21 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__21 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__22 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__22 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__23 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__23 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__24 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__24 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__25 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__25 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__26 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__26 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__27 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__27 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__28 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__28 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__29 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__29 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__30 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__30 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__31 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__31 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__32 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__32 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__33 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__33 is NumberType, might need to lift [WARNING] the 1 th arg of node hardtanh__34 is NumberType, might need to lift [WARNING] the 2 th arg of node hardtanh__34 is NumberType, might need to lift 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.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.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_hardtanh_default, aten.hardtanh.default Visiting: aten_convolution_default_1, aten.convolution.default Visiting: aten_hardtanh_default_1, aten.hardtanh.default Visiting: aten_convolution_default_2, aten.convolution.default Visiting: aten_convolution_default_3, aten.convolution.default Visiting: aten_hardtanh_default_2, aten.hardtanh.default Visiting: aten_convolution_default_4, aten.convolution.default Visiting: aten_hardtanh_default_3, aten.hardtanh.default Visiting: aten_convolution_default_5, aten.convolution.default Visiting: aten_convolution_default_6, aten.convolution.default Visiting: aten_hardtanh_default_4, aten.hardtanh.default Visiting: aten_convolution_default_7, aten.convolution.default Visiting: aten_hardtanh_default_5, aten.hardtanh.default Visiting: aten_convolution_default_8, aten.convolution.default Visiting: aten_add_tensor, aten.add.Tensor Visiting: aten_convolution_default_9, aten.convolution.default Visiting: aten_hardtanh_default_6, aten.hardtanh.default Visiting: aten_convolution_default_10, aten.convolution.default Visiting: aten_hardtanh_default_7, aten.hardtanh.default Visiting: aten_convolution_default_11, aten.convolution.default Visiting: aten_convolution_default_12, aten.convolution.default Visiting: aten_hardtanh_default_8, aten.hardtanh.default Visiting: aten_convolution_default_13, aten.convolution.default Visiting: aten_hardtanh_default_9, aten.hardtanh.default Visiting: aten_convolution_default_14, aten.convolution.default Visiting: aten_add_tensor_1, aten.add.Tensor Visiting: aten_convolution_default_15, aten.convolution.default Visiting: aten_hardtanh_default_10, aten.hardtanh.default Visiting: aten_convolution_default_16, aten.convolution.default Visiting: aten_hardtanh_default_11, aten.hardtanh.default Visiting: aten_convolution_default_17, aten.convolution.default Visiting: aten_add_tensor_2, aten.add.Tensor Visiting: aten_convolution_default_18, aten.convolution.default Visiting: aten_hardtanh_default_12, aten.hardtanh.default Visiting: aten_convolution_default_19, aten.convolution.default Visiting: aten_hardtanh_default_13, aten.hardtanh.default Visiting: aten_convolution_default_20, aten.convolution.default Visiting: aten_convolution_default_21, aten.convolution.default Visiting: aten_hardtanh_default_14, aten.hardtanh.default Visiting: aten_convolution_default_22, aten.convolution.default Visiting: aten_hardtanh_default_15, aten.hardtanh.default Visiting: aten_convolution_default_23, aten.convolution.default Visiting: aten_add_tensor_3, aten.add.Tensor Visiting: aten_convolution_default_24, aten.convolution.default Visiting: aten_hardtanh_default_16, aten.hardtanh.default Visiting: aten_convolution_default_25, aten.convolution.default Visiting: aten_hardtanh_default_17, aten.hardtanh.default Visiting: aten_convolution_default_26, aten.convolution.default Visiting: aten_add_tensor_4, aten.add.Tensor Visiting: aten_convolution_default_27, aten.convolution.default Visiting: aten_hardtanh_default_18, aten.hardtanh.default Visiting: aten_convolution_default_28, aten.convolution.default Visiting: aten_hardtanh_default_19, aten.hardtanh.default Visiting: aten_convolution_default_29, aten.convolution.default Visiting: aten_add_tensor_5, aten.add.Tensor Visiting: aten_convolution_default_30, aten.convolution.default Visiting: aten_hardtanh_default_20, aten.hardtanh.default Visiting: aten_convolution_default_31, aten.convolution.default Visiting: aten_hardtanh_default_21, aten.hardtanh.default Visiting: aten_convolution_default_32, aten.convolution.default Visiting: aten_convolution_default_33, aten.convolution.default Visiting: aten_hardtanh_default_22, aten.hardtanh.default Visiting: aten_convolution_default_34, aten.convolution.default Visiting: aten_hardtanh_default_23, aten.hardtanh.default Visiting: aten_convolution_default_35, aten.convolution.default Visiting: aten_add_tensor_6, aten.add.Tensor Visiting: aten_convolution_default_36, aten.convolution.default Visiting: aten_hardtanh_default_24, aten.hardtanh.default Visiting: aten_convolution_default_37, aten.convolution.default Visiting: aten_hardtanh_default_25, aten.hardtanh.default Visiting: aten_convolution_default_38, aten.convolution.default Visiting: aten_add_tensor_7, aten.add.Tensor Visiting: aten_convolution_default_39, aten.convolution.default Visiting: aten_hardtanh_default_26, aten.hardtanh.default Visiting: aten_convolution_default_40, aten.convolution.default Visiting: aten_hardtanh_default_27, aten.hardtanh.default Visiting: aten_convolution_default_41, aten.convolution.default Visiting: aten_convolution_default_42, aten.convolution.default Visiting: aten_hardtanh_default_28, aten.hardtanh.default Visiting: aten_convolution_default_43, aten.convolution.default Visiting: aten_hardtanh_default_29, aten.hardtanh.default Visiting: aten_convolution_default_44, aten.convolution.default Visiting: aten_add_tensor_8, aten.add.Tensor Visiting: aten_convolution_default_45, aten.convolution.default Visiting: aten_hardtanh_default_30, aten.hardtanh.default Visiting: aten_convolution_default_46, aten.convolution.default Visiting: aten_hardtanh_default_31, aten.hardtanh.default Visiting: aten_convolution_default_47, aten.convolution.default Visiting: aten_add_tensor_9, aten.add.Tensor Visiting: aten_convolution_default_48, aten.convolution.default Visiting: aten_hardtanh_default_32, aten.hardtanh.default Visiting: aten_convolution_default_49, aten.convolution.default Visiting: aten_hardtanh_default_33, aten.hardtanh.default Visiting: aten_convolution_default_50, aten.convolution.default Visiting: aten_convolution_default_51, aten.convolution.default Visiting: aten_hardtanh_default_34, aten.hardtanh.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_52, 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=4499456 [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 5149.7 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/mobilenet_v2/observatory_report.json Creating new layout from 478 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 266.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 426 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 252.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 426 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 252.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 746 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 175.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 746 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 189.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 746 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 189.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 746 edges Splitting graph into its connected components Initializing graphs vertex weights Start building layout Configuration is: Config { minimum_length: 1, vertex_spacing: 189.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 583 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/mobilenet_v2/observatory_report.html [Observatory CLI] Reports: html=/home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/mobilenet_v2/observatory_report.html json=/home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/mobilenet_v2/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.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.add.Tensor | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.default | True [QNN Partitioner Op Support]: aten.convolution.default | True [QNN Partitioner Op Support]: aten.hardtanh.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/mobilenet_v2/observatory_report.html --output-json /home/boyucwsl/Executorch_Observatory_Demo/generated_reports/qualcomm/mobilenet_v2/observatory_report.json --lens_recipe accuracy examples/qualcomm/scripts/mobilenet_v2.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/mobilenet_v2/artifacts --seed 1126 --compile_only'