add kernel axis colors to viz [pr] (#9129)

* add kernel axis colors to viz [pr]

* slightly blending with white makes this nicer

* space
This commit is contained in:
qazal
2025-02-17 12:21:35 +01:00
committed by GitHub
parent 1bf66d62cf
commit 22c571d3cb
2 changed files with 11 additions and 5 deletions
+9 -3
View File
@@ -39,12 +39,12 @@
}
ul {
padding: 0;
color: #7c7d85;
opacity: 0.6;
white-space: nowrap;
cursor: pointer;
}
ul.active {
color: #f0f0f5;
opacity: 1;
}
ul.disabled {
opacity: 0.6;
@@ -283,6 +283,12 @@
hljs.highlightElement(codeEl);
return pre;
};
const coloredToHTML = (str) => {
const colors = ['gray','red','green','yellow','blue','magenta','cyan','white'];
return str.replace(/\u001b\[(\d+)m(.*?)\u001b\[0m/g, (_, code, st) => {
return `<span style="${`color: color-mix(in srgb, ${colors[(parseInt(code)-30+60)%60]} 60%, white)`}">${st}</span>`;
})
}
// **** main loop
var ret = [];
@@ -308,7 +314,7 @@
if (i === currentKernel) {
requestAnimationFrame(() => kernelUl.scrollIntoView({ behavior: "auto", block: "nearest" }));
}
const p = Object.assign(document.createElement("p"), { id: `kernel-${key}`, innerText: key, style: "cursor: pointer;"});
const p = Object.assign(document.createElement("p"), { id: `kernel-${key}`, innerHTML: coloredToHTML(key), style: "cursor: pointer;"});
kernelUl.appendChild(p)
items.forEach((u, j) => {
const rwUl = Object.assign(document.createElement("ul"), { innerText: `${toPath(u.loc)} - ${u.match_count}`, key: `uop-rewrite-${j}`,
+2 -2
View File
@@ -3,7 +3,7 @@ import multiprocessing, pickle, functools, difflib, os, threading, json, time, s
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import parse_qs, urlparse
from typing import Any, Callable, TypedDict, Generator
from tinygrad.helpers import colored, getenv, to_function_name, tqdm, unwrap, word_wrap
from tinygrad.helpers import colored, getenv, tqdm, unwrap, word_wrap
from tinygrad.ops import TrackedGraphRewrite, UOp, Ops, lines, GroupOp
from tinygrad.codegen.kernel import Kernel
from tinygrad.device import ProfileEvent, ProfileDeviceEvent, ProfileRangeEvent, ProfileGraphEvent
@@ -37,7 +37,7 @@ def to_metadata(k:Any, v:TrackedGraphRewrite) -> GraphRewriteMetadata:
return {"loc":v.loc, "match_count":len(v.matches), "code_line":lines(v.loc[0])[v.loc[1]-1].strip(),
"kernel_code":pcall(_prg, k) if isinstance(k, Kernel) else None}
def get_metadata(keys:list[Any], contexts:list[list[TrackedGraphRewrite]]) -> list[tuple[str, list[GraphRewriteMetadata]]]:
return [(to_function_name(k.name) if isinstance(k, Kernel) else str(k), [to_metadata(k, v) for v in vals]) for k,vals in zip(keys, contexts)]
return [(k.name if isinstance(k, Kernel) else str(k), [to_metadata(k, v) for v in vals]) for k,vals in zip(keys, contexts)]
# ** Complete rewrite details for a graph_rewrite call