ttnn-visualizer 0.68.0__py3-none-any.whl → 0.70.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ttnn_visualizer/app.py +2 -2
- ttnn_visualizer/csv_queries.py +2 -1
- ttnn_visualizer/models.py +0 -1
- ttnn_visualizer/queries.py +25 -2
- ttnn_visualizer/sftp_operations.py +0 -1
- ttnn_visualizer/static/assets/allPaths-DrpaDRaJ.js +1 -0
- ttnn_visualizer/static/assets/allPathsLoader-C78guN8s.js +2 -0
- ttnn_visualizer/static/assets/index-BVzPYDVR.css +1 -0
- ttnn_visualizer/static/assets/index-BmDjQHI0.js +1 -0
- ttnn_visualizer/static/assets/index-CzNKtOwn.js +1 -0
- ttnn_visualizer/static/assets/{index-ryWOUYjC.js → index-SMzJpwbG.js} +273 -283
- ttnn_visualizer/static/assets/splitPathsBySizeLoader-Cg4d_fbJ.js +1 -0
- ttnn_visualizer/static/index.html +2 -2
- ttnn_visualizer/tests/test_queries.py +1 -2
- ttnn_visualizer/tests/test_serializers.py +4 -12
- ttnn_visualizer/utils.py +2 -6
- ttnn_visualizer/views.py +24 -22
- {ttnn_visualizer-0.68.0.dist-info → ttnn_visualizer-0.70.0.dist-info}/METADATA +1 -1
- ttnn_visualizer-0.70.0.dist-info/RECORD +44 -0
- ttnn_visualizer/static/assets/allPaths-BZLVCrxa.js +0 -1
- ttnn_visualizer/static/assets/allPathsLoader-7-MAALae.js +0 -2
- ttnn_visualizer/static/assets/index-BZITDwoa.js +0 -1
- ttnn_visualizer/static/assets/index-DS75jGv-.css +0 -1
- ttnn_visualizer/static/assets/index-voJy5fZe.js +0 -1
- ttnn_visualizer/static/assets/splitPathsBySizeLoader-CpZbtknp.js +0 -1
- ttnn_visualizer-0.68.0.dist-info/RECORD +0 -44
- {ttnn_visualizer-0.68.0.dist-info → ttnn_visualizer-0.70.0.dist-info}/WHEEL +0 -0
- {ttnn_visualizer-0.68.0.dist-info → ttnn_visualizer-0.70.0.dist-info}/entry_points.txt +0 -0
- {ttnn_visualizer-0.68.0.dist-info → ttnn_visualizer-0.70.0.dist-info}/licenses/LICENSE +0 -0
- {ttnn_visualizer-0.68.0.dist-info → ttnn_visualizer-0.70.0.dist-info}/licenses/LICENSE_understanding.txt +0 -0
- {ttnn_visualizer-0.68.0.dist-info → ttnn_visualizer-0.70.0.dist-info}/top_level.txt +0 -0
ttnn_visualizer/app.py
CHANGED
|
@@ -359,9 +359,9 @@ def main():
|
|
|
359
359
|
)
|
|
360
360
|
instance_id = session.instance_id
|
|
361
361
|
except InvalidReportPath:
|
|
362
|
-
sys.exit("Invalid
|
|
362
|
+
sys.exit(f"❌ Invalid profiler path: {args.profiler_path}")
|
|
363
363
|
except InvalidProfilerPath:
|
|
364
|
-
sys.exit("Invalid
|
|
364
|
+
sys.exit(f"❌ Invalid performance path: {args.performance_path}")
|
|
365
365
|
|
|
366
366
|
# Clean up this temporary app - workers will create their own
|
|
367
367
|
del app
|
ttnn_visualizer/csv_queries.py
CHANGED
|
@@ -476,6 +476,7 @@ class OpsPerformanceReportQueries:
|
|
|
476
476
|
stack_by_in0 = kwargs.get("stack_by_in0", cls.DEFAULT_NO_STACK_BY_IN0)
|
|
477
477
|
no_host_ops = kwargs.get("hide_host_ops", cls.DEFAULT_NO_HOST_OPS)
|
|
478
478
|
merge_devices = kwargs.get("merge_devices", cls.DEFAULT_MERGE_DEVICES)
|
|
479
|
+
tracing_mode = kwargs.get("tracing_mode", cls.DEFAULT_TRACING_MODE)
|
|
479
480
|
|
|
480
481
|
if start_signpost or end_signpost:
|
|
481
482
|
ignore_signposts = False
|
|
@@ -495,7 +496,7 @@ class OpsPerformanceReportQueries:
|
|
|
495
496
|
cls.DEFAULT_ID_RANGE,
|
|
496
497
|
csv_output_file,
|
|
497
498
|
cls.DEFAULT_NO_ADVICE,
|
|
498
|
-
|
|
499
|
+
tracing_mode,
|
|
499
500
|
cls.DEFAULT_RAW_OP_CODES,
|
|
500
501
|
no_host_ops,
|
|
501
502
|
cls.DEFAULT_NO_STACKED_REPORT,
|
ttnn_visualizer/models.py
CHANGED
ttnn_visualizer/queries.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-FileCopyrightText: © 2025 Tenstorrent AI ULC
|
|
4
4
|
|
|
5
|
+
import dataclasses
|
|
5
6
|
import sqlite3
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
from typing import Any, Dict, Generator, List, Optional, Union
|
|
@@ -88,14 +89,24 @@ class DatabaseQueries:
|
|
|
88
89
|
|
|
89
90
|
return bool(rows)
|
|
90
91
|
|
|
92
|
+
def _get_table_columns(self, table_name: str) -> List[str]:
|
|
93
|
+
"""
|
|
94
|
+
Gets the list of column names for a table.
|
|
95
|
+
"""
|
|
96
|
+
query = f"PRAGMA table_info({table_name})"
|
|
97
|
+
rows = self.query_runner.execute_query(query)
|
|
98
|
+
return [row[1] for row in rows] # row[1] is the column name
|
|
99
|
+
|
|
91
100
|
def _query_table(
|
|
92
101
|
self,
|
|
93
102
|
table_name: str,
|
|
94
103
|
filters: Optional[Dict[str, Union[Any, List[Any]]]] = None,
|
|
95
104
|
additional_conditions: Optional[str] = None,
|
|
96
105
|
additional_params: Optional[List[Any]] = None,
|
|
106
|
+
columns: Optional[List[str]] = None,
|
|
97
107
|
) -> List[Any]:
|
|
98
|
-
|
|
108
|
+
columns_str = ", ".join(columns) if columns else "*"
|
|
109
|
+
query = f"SELECT {columns_str} FROM {table_name} WHERE 1=1"
|
|
99
110
|
params = []
|
|
100
111
|
|
|
101
112
|
if filters:
|
|
@@ -285,7 +296,19 @@ class DatabaseQueries:
|
|
|
285
296
|
def query_devices(
|
|
286
297
|
self, filters: Optional[Dict[str, Any]] = None
|
|
287
298
|
) -> Generator[Device, None, None]:
|
|
288
|
-
|
|
299
|
+
# Get the expected Device model field names in order
|
|
300
|
+
device_fields = [field.name for field in dataclasses.fields(Device)]
|
|
301
|
+
|
|
302
|
+
# Get all columns from the devices table
|
|
303
|
+
all_columns = self._get_table_columns("devices")
|
|
304
|
+
|
|
305
|
+
# Filter out num_storage_cores if it exists (for backwards compatibility)
|
|
306
|
+
# and ensure columns are in the order expected by the Device model
|
|
307
|
+
available_columns = set(all_columns) - {"num_storage_cores"}
|
|
308
|
+
columns = [col for col in device_fields if col in available_columns]
|
|
309
|
+
|
|
310
|
+
rows = self._query_table("devices", filters, columns=columns)
|
|
311
|
+
|
|
289
312
|
for row in rows:
|
|
290
313
|
yield Device(*row)
|
|
291
314
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as s}from"./index-BmDjQHI0.js";import{I as r}from"./index-CzNKtOwn.js";import{p as n,I as c}from"./index-SMzJpwbG.js";function p(t,a){const o=n(t);return a===c.STANDARD?s[o]:r[o]}export{s as IconSvgPaths16,r as IconSvgPaths20,p as getIconPaths};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/allPaths-DrpaDRaJ.js","assets/index-BmDjQHI0.js","assets/index-CzNKtOwn.js","assets/index-SMzJpwbG.js","assets/index-BVzPYDVR.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as e}from"./index-SMzJpwbG.js";const s=async(t,a)=>{const{getIconPaths:o}=await e(async()=>{const{getIconPaths:r}=await import("./allPaths-DrpaDRaJ.js");return{getIconPaths:r}},__vite__mapDeps([0,1,2,3,4]));return o(t,a)};export{s as allPathsLoader};
|