ttnn-visualizer 0.25.1__py3-none-any.whl → 0.26.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/file_uploads.py +7 -0
- ttnn_visualizer/models.py +10 -1
- ttnn_visualizer/sessions.py +21 -4
- ttnn_visualizer/settings.py +1 -1
- ttnn_visualizer/static/assets/{allPaths-BsZhgQ3T.js → allPaths-egCeGMYd.js} +1 -1
- ttnn_visualizer/static/assets/{allPathsLoader-DgFQ6cmn.js → allPathsLoader-ChZ_kotC.js} +2 -2
- ttnn_visualizer/static/assets/{index-C6f3UdbP.css → index-S-_ELv4m.css} +2 -2
- ttnn_visualizer/static/assets/{index-Fd4wdmZt.js → index-rIoXC5rS.js} +236 -236
- ttnn_visualizer/static/assets/{splitPathsBySizeLoader-BFDp4kIf.js → splitPathsBySizeLoader-BfocwQsJ.js} +1 -1
- ttnn_visualizer/static/index.html +3 -3
- ttnn_visualizer/utils.py +6 -0
- ttnn_visualizer/views.py +42 -1
- {ttnn_visualizer-0.25.1.dist-info → ttnn_visualizer-0.26.0.dist-info}/METADATA +6 -9
- {ttnn_visualizer-0.25.1.dist-info → ttnn_visualizer-0.26.0.dist-info}/RECORD +19 -19
- {ttnn_visualizer-0.25.1.dist-info → ttnn_visualizer-0.26.0.dist-info}/LICENSE +0 -0
- {ttnn_visualizer-0.25.1.dist-info → ttnn_visualizer-0.26.0.dist-info}/LICENSE_understanding.txt +0 -0
- {ttnn_visualizer-0.25.1.dist-info → ttnn_visualizer-0.26.0.dist-info}/WHEEL +0 -0
- {ttnn_visualizer-0.25.1.dist-info → ttnn_visualizer-0.26.0.dist-info}/entry_points.txt +0 -0
- {ttnn_visualizer-0.25.1.dist-info → ttnn_visualizer-0.26.0.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
|
|
1
|
-
import{_ as o,a as _,b as i,p as c,I as u}from"./index-
|
1
|
+
import{_ as o,a as _,b as i,p as c,I as u}from"./index-rIoXC5rS.js";var p=function(n,s){return o(void 0,void 0,void 0,function(){var a,r;return _(this,function(e){switch(e.label){case 0:return a=c(n),s!==u.STANDARD?[3,2]:[4,i(()=>import("./index-BVMreIQm.js").then(t=>t.I),[])];case 1:return r=e.sent(),[3,4];case 2:return[4,i(()=>import("./index-Do7YB6C4.js").then(t=>t.I),[])];case 3:r=e.sent(),e.label=4;case 4:return[2,r[a]]}})})};export{p as splitPathsBySizeLoader};
|
@@ -6,7 +6,7 @@
|
|
6
6
|
name="viewport"
|
7
7
|
content="width=device-width, initial-scale=1.0"
|
8
8
|
/>
|
9
|
-
<title>
|
9
|
+
<title>TT-NN Visualizer</title>
|
10
10
|
|
11
11
|
<link
|
12
12
|
rel="icon"
|
@@ -27,8 +27,8 @@
|
|
27
27
|
name="theme-color"
|
28
28
|
content="#33333d"
|
29
29
|
/>
|
30
|
-
<script type="module" crossorigin src="/assets/index-
|
31
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
30
|
+
<script type="module" crossorigin src="/assets/index-rIoXC5rS.js"></script>
|
31
|
+
<link rel="stylesheet" crossorigin href="/assets/index-S-_ELv4m.css">
|
32
32
|
</head>
|
33
33
|
<body>
|
34
34
|
<div id="root"></div>
|
ttnn_visualizer/utils.py
CHANGED
@@ -106,6 +106,12 @@ def get_report_path(active_report, current_app, remote_connection=None):
|
|
106
106
|
else:
|
107
107
|
return ""
|
108
108
|
|
109
|
+
def get_npe_path(npe_name, current_app):
|
110
|
+
local_dir = Path(current_app.config["LOCAL_DATA_DIRECTORY"])
|
111
|
+
|
112
|
+
npe_path = local_dir / "npe"
|
113
|
+
|
114
|
+
return str(npe_path)
|
109
115
|
|
110
116
|
def read_last_synced_file(directory: str) -> Optional[int]:
|
111
117
|
"""Reads the '.last-synced' file in the specified directory and returns the timestamp as an integer, or None if not found."""
|
ttnn_visualizer/views.py
CHANGED
@@ -21,6 +21,7 @@ from ttnn_visualizer.enums import ConnectionTestStates
|
|
21
21
|
from ttnn_visualizer.exceptions import RemoteConnectionException
|
22
22
|
from ttnn_visualizer.file_uploads import (
|
23
23
|
extract_report_name,
|
24
|
+
extract_npe_name,
|
24
25
|
save_uploaded_files,
|
25
26
|
validate_files,
|
26
27
|
)
|
@@ -456,7 +457,6 @@ def create_report_files():
|
|
456
457
|
status=ConnectionTestStates.OK, message="Success."
|
457
458
|
).model_dump()
|
458
459
|
|
459
|
-
|
460
460
|
@api.route("/local/upload/profile", methods=["POST"])
|
461
461
|
def create_profile_files():
|
462
462
|
files = request.files.getlist("files")
|
@@ -507,6 +507,31 @@ def create_profile_files():
|
|
507
507
|
).model_dump()
|
508
508
|
|
509
509
|
|
510
|
+
@api.route("/local/upload/npe", methods=["POST"])
|
511
|
+
def create_npe_files():
|
512
|
+
files = request.files.getlist("files")
|
513
|
+
report_directory = current_app.config["LOCAL_DATA_DIRECTORY"]
|
514
|
+
|
515
|
+
for file in files:
|
516
|
+
if not file.filename.endswith(".json"):
|
517
|
+
return StatusMessage(
|
518
|
+
status=ConnectionTestStates.FAILED,
|
519
|
+
message="NPE requires a valid JSON file",
|
520
|
+
).model_dump()
|
521
|
+
|
522
|
+
npe_name = extract_npe_name(files)
|
523
|
+
target_directory = report_directory / "npe"
|
524
|
+
target_directory.mkdir(parents=True, exist_ok=True)
|
525
|
+
|
526
|
+
save_uploaded_files(files, target_directory, npe_name)
|
527
|
+
|
528
|
+
tab_id = request.args.get("tabId")
|
529
|
+
update_tab_session(tab_id=tab_id, npe_name=npe_name, clear_remote=True)
|
530
|
+
|
531
|
+
return StatusMessage(
|
532
|
+
status=ConnectionTestStates.OK, message="Success"
|
533
|
+
).model_dump()
|
534
|
+
|
510
535
|
@api.route("/remote/folder", methods=["POST"])
|
511
536
|
def get_remote_folders():
|
512
537
|
connection = RemoteConnection.model_validate(request.json, strict=False)
|
@@ -792,3 +817,19 @@ def health_check():
|
|
792
817
|
def get_tab_session(session: TabSession):
|
793
818
|
# Used to gate UI functions if no report is active
|
794
819
|
return session.model_dump()
|
820
|
+
|
821
|
+
@api.route("/npe", methods=["GET"])
|
822
|
+
@with_session
|
823
|
+
@timer
|
824
|
+
def get_npe_data(session: TabSession):
|
825
|
+
if not session.npe_path:
|
826
|
+
logger.error("NPE path is not set in the session.")
|
827
|
+
return Response(status=HTTPStatus.NOT_FOUND)
|
828
|
+
|
829
|
+
npe_file = Path(f"{session.npe_path}/{session.active_report.npe_name}.json")
|
830
|
+
if not npe_file.exists():
|
831
|
+
logger.error(f"NPE file does not exist: {npe_file}")
|
832
|
+
return Response(status=HTTPStatus.NOT_FOUND)
|
833
|
+
with open(npe_file, "r") as file:
|
834
|
+
npe_data = json.load(file)
|
835
|
+
return jsonify(npe_data)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ttnn_visualizer
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.26.0
|
4
4
|
Summary: TT Visualizer
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
@@ -57,10 +57,11 @@ TT-NN Visualizer can be installed from PyPI:
|
|
57
57
|
|
58
58
|
After installation run `ttnn-visualizer` to start the application.
|
59
59
|
|
60
|
-
It is recommended to do this within a virtual environment. The minimum Python version is 3.10
|
60
|
+
It is recommended to do this within a virtual environment. The minimum Python version is **3.10**.
|
61
61
|
|
62
|
-
Please see the [getting started](https://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/getting-started.md) guide
|
63
|
-
|
62
|
+
Please see the [getting started](https://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/getting-started.md) guide for further information on getting up and running with TT-NN Visualizer.
|
63
|
+
|
64
|
+
If you want to test out TT-NN Visualizer you can try some of the [sample data](https://github.com/tenstorrent/ttnn-visualizer/tree/main?tab=readme-ov-file#sample-reports). See [loading data](https://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/getting-started.md#loading-data) for instructions on how to use this.
|
64
65
|
|
65
66
|
## Features
|
66
67
|
|
@@ -86,7 +87,7 @@ For the latest updates and features, please see [releases](https://github.com/te
|
|
86
87
|
|
87
88
|
https://github.com/user-attachments/assets/d00a2629-0bd1-4ee1-bb12-bd796d85221d
|
88
89
|
|
89
|
-
| L1 Summary with Tensor highlight | Operation inputs and
|
90
|
+
| L1 Summary with Tensor highlight | Operation inputs and outputs |
|
90
91
|
|-----------------------------------------------|------------------------------------------|
|
91
92
|
| <img width="400" alt="L1 Summary with Tensor highlight" src="https://github.com/user-attachments/assets/73c0aff8-16b2-4d1e-85a8-81c434012d36" /> | <img width="400" alt="Operation inputs and outputs" src="https://github.com/user-attachments/assets/e9480ad2-7e24-436b-932b-050c6b489516" /> |
|
92
93
|
|
@@ -114,10 +115,6 @@ https://github.com/user-attachments/assets/d00a2629-0bd1-4ee1-bb12-bd796d85221d
|
|
114
115
|
|-----------------------------------------------|------------------------------------------|
|
115
116
|
| <img width="400" alt="NPE" src="https://github.com/user-attachments/assets/1f4441c6-9d9e-4834-9e71-edec1955243c" /> | <img width="400" alt="NPE" src="https://github.com/user-attachments/assets/7159992e-7691-41cf-a152-8bc6a3606ade" /> |
|
116
117
|
|
117
|
-
## Remote Querying
|
118
|
-
|
119
|
-
Use [remote querying](https://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/remote-querying.md) instead of syncing the report data to your local file system.
|
120
|
-
|
121
118
|
## Sample reports
|
122
119
|
|
123
120
|
You may test the application using the following sample reports.
|
@@ -5,30 +5,30 @@ ttnn_visualizer/decorators.py,sha256=XKGByL3_CUwuoU93CcRaFFT8VOK3N6X5UOgK0umy6_A
|
|
5
5
|
ttnn_visualizer/enums.py,sha256=XTWZGvPFtKmIhPXGCbbzi6bxFgRpLrAZGrrR5YvGYjY,203
|
6
6
|
ttnn_visualizer/exceptions.py,sha256=iATY-bfcSQL1Af4aLSN2d0fLD5NcS19NKwoB3JyLp4A,960
|
7
7
|
ttnn_visualizer/extensions.py,sha256=jovwo_j9toJVuXDVq4iPpXJMRXPpzSliNpE1TOJMDHI,380
|
8
|
-
ttnn_visualizer/file_uploads.py,sha256=
|
9
|
-
ttnn_visualizer/models.py,sha256=
|
8
|
+
ttnn_visualizer/file_uploads.py,sha256=s7gKQVpc2j1qFKY_AOYr9yoISjjUer5FjvsZyQZ_1P0,2603
|
9
|
+
ttnn_visualizer/models.py,sha256=6vvg5YRoAXzH6ikhm7Ixz7QGVM8Xb7sIULNI4hzqLso,7551
|
10
10
|
ttnn_visualizer/queries.py,sha256=eQTRrdGlfKdKuZuNQXM6Awn3w4mkDhynzxf1JHyZiDg,13626
|
11
11
|
ttnn_visualizer/remote_sqlite_setup.py,sha256=Zd7U7q_N92rD0P2qb1GIXuZjhV4LXqfq7Bhg0MTLS5k,3269
|
12
12
|
ttnn_visualizer/requirements.txt,sha256=LiycuPs-Oh8PZ1qM6v1KlUPQG86nQyQFz_x7dU8DSpA,370
|
13
13
|
ttnn_visualizer/serializers.py,sha256=smY3CgbqaAXsovoYZ-A9fgPXih5lUS2HD_3aIZMcFS4,7821
|
14
|
-
ttnn_visualizer/sessions.py,sha256=
|
15
|
-
ttnn_visualizer/settings.py,sha256=
|
14
|
+
ttnn_visualizer/sessions.py,sha256=8cGQAbT4QSU7ISdZzLWevXVrtSuU7NBR0-7i9HszQlo,7510
|
15
|
+
ttnn_visualizer/settings.py,sha256=kC0mBNrZDq1S7RPeRGnPcGZxGuM515A1upsWRrKl5k8,3841
|
16
16
|
ttnn_visualizer/sftp_operations.py,sha256=RrzCGo__2sQ2g4r90qlyFBEq4v6ooX2ntJ7VDKuynC0,17659
|
17
17
|
ttnn_visualizer/sockets.py,sha256=gpLZiZFpmHz_bfNkrYOU_op4-tQrT0YNYDKk77jrgow,3509
|
18
18
|
ttnn_visualizer/ssh_client.py,sha256=KRLuIk6wxrZZQUQKfC8QWMhXGJQvfKKeyxLThgRX6ak,2679
|
19
|
-
ttnn_visualizer/utils.py,sha256=
|
20
|
-
ttnn_visualizer/views.py,sha256=
|
19
|
+
ttnn_visualizer/utils.py,sha256=zD8_B7Dd8sgOQF52LNQ5HrLxuvfZg-YnxLrZOpuA5Lw,6372
|
20
|
+
ttnn_visualizer/views.py,sha256=TMEXEW9lKllj9ChijDgemimpDKeX05lMpmE-Ur8rcXA,27937
|
21
21
|
ttnn_visualizer/bin/docker-entrypoint-web,sha256=uuv6aubpMCfOcuvDBxwBDITE8PN39teuwyJ2zA5KWuw,413
|
22
22
|
ttnn_visualizer/bin/pip3-install,sha256=nbSRT4GfJQIQ9KTNO3j-6b5WM4lrx9XA4GBlAURRMws,502
|
23
|
-
ttnn_visualizer/static/index.html,sha256=
|
24
|
-
ttnn_visualizer/static/assets/allPaths-
|
25
|
-
ttnn_visualizer/static/assets/allPathsLoader-
|
23
|
+
ttnn_visualizer/static/index.html,sha256=n0ShdWmvCjykVewExEJfjJGYUVrSYd8iNdl54J2IBeg,923
|
24
|
+
ttnn_visualizer/static/assets/allPaths-egCeGMYd.js,sha256=aMH3_-EDUZs3p6ePGb_M8OFzseBibgVui_RI3rOW0VU,309
|
25
|
+
ttnn_visualizer/static/assets/allPathsLoader-ChZ_kotC.js,sha256=Gqj32OtKMw46dZSJk0idTcCy5vo6cvpSj4ExxMfv6nw,550
|
26
26
|
ttnn_visualizer/static/assets/index-BVMreIQm.js,sha256=QJTBb4VVCMoLPYsWdru3heJX1VtMJQYJGx-tq8gZNTw,280965
|
27
|
-
ttnn_visualizer/static/assets/index-C6f3UdbP.css,sha256=IUhjRkmhDOJ6qIkduTxONW6_D_6NLr7FmENQwpNjbAE,614348
|
28
27
|
ttnn_visualizer/static/assets/index-Do7YB6C4.js,sha256=10jCIy7zph8mPB2htGfhXJBV7LO2FFrGhfz7xoQyh00,289378
|
29
|
-
ttnn_visualizer/static/assets/index-
|
28
|
+
ttnn_visualizer/static/assets/index-S-_ELv4m.css,sha256=kxiQqeXqJGktQJBJoh-Tz9Nl8LBscsNrDzyUIlwDsYc,615142
|
29
|
+
ttnn_visualizer/static/assets/index-rIoXC5rS.js,sha256=f5GLHBcuD9P2x4TNwE_kaIj6TWgSCIyvNesqZ11tMFA,6983612
|
30
30
|
ttnn_visualizer/static/assets/site-BTBrvHC5.webmanifest,sha256=Uy_XmnGuYFVf-OZuma2NvgEPdrCrevb3HZvaxSIHoA0,456
|
31
|
-
ttnn_visualizer/static/assets/splitPathsBySizeLoader-
|
31
|
+
ttnn_visualizer/static/assets/splitPathsBySizeLoader-BfocwQsJ.js,sha256=B3X2znUloZgu_6P5okv4n5ymUANxM5B0s0XPbiiZK2I,472
|
32
32
|
ttnn_visualizer/static/favicon/android-chrome-192x192.png,sha256=BZWA09Zxaa3fXbaeS6nhWo2e-DUSjm9ElzNQ_xTB5XU,6220
|
33
33
|
ttnn_visualizer/static/favicon/android-chrome-512x512.png,sha256=HBiJSZyguB3o8fMJuqIGcpeBy_9JOdImme3wD02UYCw,62626
|
34
34
|
ttnn_visualizer/static/favicon/favicon-32x32.png,sha256=Zw201qUsczQv1UvoQvJf5smQ2ss10xaTeWxmQNYCGtY,480
|
@@ -37,10 +37,10 @@ ttnn_visualizer/static/sample-data/cluster-desc.yaml,sha256=LMxOmsRUXtVVU5ogzYkX
|
|
37
37
|
ttnn_visualizer/tests/__init__.py,sha256=qn9AwfHTxYYK0Icz-q2Q41Xo9ET6oc6anZzgh02PhK4,94
|
38
38
|
ttnn_visualizer/tests/test_queries.py,sha256=OoINMZezyJkpiQuM1Owp4DlMoJGTl6OgsUbPa2Rxqc0,16546
|
39
39
|
ttnn_visualizer/tests/test_serializers.py,sha256=966AJkXLAwzsceSQ9QR-Sy7VrEbE71AtfMF3y9ZIIWc,18490
|
40
|
-
ttnn_visualizer-0.
|
41
|
-
ttnn_visualizer-0.
|
42
|
-
ttnn_visualizer-0.
|
43
|
-
ttnn_visualizer-0.
|
44
|
-
ttnn_visualizer-0.
|
45
|
-
ttnn_visualizer-0.
|
46
|
-
ttnn_visualizer-0.
|
40
|
+
ttnn_visualizer-0.26.0.dist-info/LICENSE,sha256=7_uV4foXIbLyroI1M6NdIySajtLuPwayZr1UN2ItErI,11353
|
41
|
+
ttnn_visualizer-0.26.0.dist-info/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
|
42
|
+
ttnn_visualizer-0.26.0.dist-info/METADATA,sha256=_RilFsWQY7ptm2JGC48RfBWJp_bZwWdz2eOpmLM81iM,7297
|
43
|
+
ttnn_visualizer-0.26.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
44
|
+
ttnn_visualizer-0.26.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
|
45
|
+
ttnn_visualizer-0.26.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
|
46
|
+
ttnn_visualizer-0.26.0.dist-info/RECORD,,
|
File without changes
|
{ttnn_visualizer-0.25.1.dist-info → ttnn_visualizer-0.26.0.dist-info}/LICENSE_understanding.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|