import { byId, fetchJson, fetchJsonWithFallback, formatNumber, initThemeToggle, setImageWithFallback, } from "./shared.js"; const OWNER = "DarkStarStrix"; const REPO = "PyC"; const RELEASE_API = `https://api.github.com/repos/${OWNER}/${REPO}/releases/latest`; const DEFAULT_DOWNLOADS = { linux: `https://github.com/${OWNER}/${REPO}/releases/latest/download/pyc-linux-x86_64.tar.gz`, macos: `https://github.com/${OWNER}/${REPO}/releases/latest/download/pyc-macos-arm64.tar.gz`, windows: `https://github.com/${OWNER}/${REPO}/releases/latest/download/pyc-windows-x86_64.zip`, }; const RAW_RESULTS_BASE = `https://raw.githubusercontent.com/${OWNER}/${REPO}/main/web/site/results`; function findAsset(assets, os) { const patterns = { windows: /windows/i, macos: /macos|darwin/i, linux: /linux/i, }; const pattern = patterns[os]; return assets.find((asset) => pattern.test(asset.name)) ?? null; } function setLink(element, asset, fallback, fallbackText) { if (!element) { return; } if (asset) { element.textContent = asset.name; element.href = asset.browser_download_url; element.removeAttribute("aria-disabled"); return; } element.textContent = fallbackText; element.href = fallback; element.removeAttribute("aria-disabled"); } function renderReleaseAssets(assets) { const assetList = byId("asset-list"); if (!assetList) { return; } assetList.innerHTML = ""; if (assets.length === 0) { const empty = document.createElement("li"); empty.textContent = "No binary assets found in latest release."; assetList.appendChild(empty); return; } for (const asset of assets) { const item = document.createElement("li"); const link = document.createElement("a"); link.href = asset.browser_download_url; link.target = "_blank"; link.rel = "noopener noreferrer"; link.textContent = asset.name; item.appendChild(link); assetList.appendChild(item); } } function renderAdapterRows(tbodyId, rows) { const tbody = byId(tbodyId); if (!tbody) { return; } tbody.innerHTML = ""; if (rows.length === 0) { const row = document.createElement("tr"); const cell = document.createElement("td"); cell.colSpan = 6; cell.textContent = "No adapter rows available."; row.appendChild(cell); tbody.appendChild(row); return; } for (const entry of rows) { const row = document.createElement("tr"); const columns = [ entry.display_name ?? entry.adapter ?? "-", entry.mode ?? "unknown", formatNumber(entry.mean_ms, 4), formatNumber(entry.p50_ms, 4), formatNumber(entry.p95_ms, 4), formatNumber(entry.throughput_tokens_per_sec, 2), ]; for (const value of columns) { const cell = document.createElement("td"); cell.textContent = value; row.appendChild(cell); } tbody.appendChild(row); } } function summaryRows(section) { if (!section) { return []; } if (Array.isArray(section.rows)) { return section.rows; } if (Array.isArray(section.adapters)) { return section.adapters; } return []; } function renderDistributedKpis(latest) { const grid = byId("dist-kpi-grid"); if (!grid || !latest) { return; } grid.innerHTML = `

Samples/s

${formatNumber(latest.samples_per_sec, 2)}

` + `

Tokens/s

${formatNumber(latest.tokens_per_sec, 2)}

` + `

GPU Util Mean

${formatNumber(latest.gpu_util_mean, 2)}%

` + `

Compute (ms)

${formatNumber(latest.compute_time_ms_mean, 4)}

` + `

Comm (ms)

${formatNumber(latest.comm_time_ms_mean, 4)}

` + `

Idle (ms)

${formatNumber(latest.idle_gap_ms_mean, 4)}

`; } async function loadRelease() { const releaseLink = byId("release-link"); const linuxLink = byId("download-linux"); const macosLink = byId("download-macos"); const windowsLink = byId("download-windows"); const status = byId("status"); const fallback = `https://github.com/${OWNER}/${REPO}/releases/latest`; if (!releaseLink || !status) { return; } try { const release = await fetchJson(RELEASE_API); const assets = release.assets ?? []; releaseLink.href = release.html_url; status.textContent = `Latest release: ${release.tag_name}`; renderReleaseAssets(assets); setLink(linuxLink, findAsset(assets, "linux"), DEFAULT_DOWNLOADS.linux, "pyc-linux-x86_64.tar.gz"); setLink(macosLink, findAsset(assets, "macos"), DEFAULT_DOWNLOADS.macos, "pyc-macos-arm64.tar.gz"); setLink(windowsLink, findAsset(assets, "windows"), DEFAULT_DOWNLOADS.windows, "pyc-windows-x86_64.zip"); } catch (_error) { status.textContent = "Release metadata unavailable. Direct download links are still active."; releaseLink.href = fallback; setLink(linuxLink, null, DEFAULT_DOWNLOADS.linux, "pyc-linux-x86_64.tar.gz"); setLink(macosLink, null, DEFAULT_DOWNLOADS.macos, "pyc-macos-arm64.tar.gz"); setLink(windowsLink, null, DEFAULT_DOWNLOADS.windows, "pyc-windows-x86_64.zip"); } } async function loadPublishedResults() { const status = byId("results-status"); try { const summary = await fetchJsonWithFallback( [ "./results/latest-summary.json", `${RAW_RESULTS_BASE}/latest-summary.json`, ], { cache: "no-store" } ); const cpuRows = summaryRows(summary.cpu); const gpuRows = summaryRows(summary.gpu); const latestRun = summary.run_id ?? summary.cpu?.run_id ?? summary.gpu?.run_id ?? "unknown"; renderAdapterRows("cpu-results-body", cpuRows); renderAdapterRows("gpu-results-body", gpuRows); if (status) { status.textContent = `Latest baseline run: ${latestRun} | CPU adapters: ${cpuRows.length} | GPU adapters: ${gpuRows.length}`; } } catch (_error) { renderAdapterRows("cpu-results-body", []); renderAdapterRows("gpu-results-body", []); if (status) { status.textContent = "Baseline adapter summary unavailable."; } } } function renderBaselineCharts() { setImageWithFallback(byId("latest-cpu-svg"), "./results/artifacts/latest/latest_cpu.svg", `${RAW_RESULTS_BASE}/artifacts/latest/latest_cpu.svg`); setImageWithFallback(byId("latest-gpu-svg"), "./results/artifacts/latest/latest_gpu.svg", `${RAW_RESULTS_BASE}/artifacts/latest/latest_gpu.svg`); } async function loadDistributedInsights() { const status = byId("distributed-status"); try { const payload = await fetchJsonWithFallback( [ "./results/distributed-latest.json", `${RAW_RESULTS_BASE}/distributed-latest.json`, ], { cache: "no-store" } ); const latest = payload.latest; if (!latest) { if (status) { status.textContent = "Distributed training insights unavailable."; } return; } renderDistributedKpis(latest); if (status) { status.textContent = `Latest distributed run: ${latest.run_id ?? "unknown"} | world size: ${latest.world_size ?? "-"} | ` + `samples/s: ${formatNumber(latest.samples_per_sec, 2)} | tokens/s: ${formatNumber(latest.tokens_per_sec, 2)} | ` + `comm ms: ${formatNumber(latest.comm_time_ms_mean, 4)} | idle ms: ${formatNumber(latest.idle_gap_ms_mean, 4)}`; } setImageWithFallback(byId("latest-dist-summary-main"), latest.published?.summary_svg ?? null, "./results/artifacts/images/latest_distributed_pipeline.svg"); setImageWithFallback(byId("latest-dist-throughput-main"), payload.visuals?.throughput_svg ?? null, "./results/artifacts/images/latest_distributed_throughput.svg"); setImageWithFallback(byId("latest-dist-pipeline-main"), payload.visuals?.pipeline_svg ?? null, "./results/artifacts/images/latest_distributed_pipeline.svg"); } catch (_error) { if (status) { status.textContent = "Distributed training insights unavailable."; } } } void (async function init() { initThemeToggle(); renderBaselineCharts(); await Promise.all([ loadRelease(), loadPublishedResults(), loadDistributedInsights(), ]); })();