EZHARDYNAMICS/Sovereign-OneAPI-migration-logic-kernel
0
1import streamlit as st2import time3import pandas as pd4import plotly.graph_objects as go5from utils import inject_industrial_css, verify_session, AppConfig, ReportEngine6from kernel_simulator import benchmark_latency_scenarios7 8st.set_page_config(page_title="MIGRATION", layout="wide")9inject_industrial_css()10verify_session()11 12st.markdown(f"<h2 style='color:{AppConfig.THEME_COLOR}'>MODULE 01: MIGRATION ENGINE</h2>", unsafe_allow_html=True)13 14# 1. CODE ANALYSIS15col_code, col_vis = st.columns([1.5, 1])16 17with col_code:18 st.markdown("#### 1. INTELLIGENT TRANSPILER")19 mode = st.radio("VIEW MODE", ["SOURCE (CUDA)", "TARGET (XPU/IPEX)"], horizontal=True)20 21 if mode == "SOURCE (CUDA)":22 st.code("""23 # LEGACY IMPLEMENTATION24 device = torch.device("cuda")25 model = ResNet50().to(device)26 27 # Standard FP32 Training Loop28 for data, target in loader:29 data, target = data.to(device), target.to(device)30 optimizer.zero_grad()31 output = model(data)32 loss = criterion(output, target)33 loss.backward()34 """, language="python")35 else:36 st.code("""37 # INTEL OPTIMIZED IMPLEMENTATION38 import intel_extension_for_pytorch as ipex # <--- CORE39 40 device = torch.device("xpu") # Gaudi Target41 model = ResNet50().to(device)42 43 # JIT Graph Optimization44 model, optimizer = ipex.optimize(model, optimizer=optimizer, dtype=torch.bfloat16)45 46 for data, target in loader:47 data, target = data.to(device), target.to(device)48 with torch.xpu.amp.autocast(): # Mixed Precision49 output = model(data)50 loss = criterion(output, target)51 loss.backward()52 """, language="python")53 54with col_vis:55 st.markdown("#### 2. GAIN PROJECTION")56 st.info("Simulation assumes **Intel Gaudi 3** vs **A100** baseline using Matrix Multiplication (GEMM) workloads.")57 if st.button("RUN BENCHMARK SEQUENCE", type="primary", use_container_width=True):58 59 with st.spinner("DISPATCHING KERNELS TO XPU..."):60 data = benchmark_latency_scenarios()61 time.sleep(1) # UX Pause62 st.session_state['bench_data'] = data63 st.success("COMPUTE SUCCESSFUL")64 65# 2. VISUALIZATION66if st.session_state.get('bench_data'):67 data = st.session_state['bench_data']68 df = pd.DataFrame(data)69 70 st.markdown("---")71 st.markdown("#### 3. TELEMETRY VISUALIZATION")72 73 # Plotly Chart74 fig = go.Figure()75 fig.add_trace(go.Bar(76 x=df['matrix_size'], 77 y=df['cpu_ms'], 78 name='Legacy (FP32)', 79 marker_color='#333'80 ))81 fig.add_trace(go.Bar(82 x=df['matrix_size'], 83 y=df['sim_gpu_ms'], 84 name='Gaudi 3 (BF16)', 85 marker_color=AppConfig.THEME_COLOR86 ))87 88 fig.update_layout(89 title="LATENCY COMPARISON (Lower is Better)",90 xaxis_title="Tensor Batch Size",91 yaxis_title="Time (ms)",92 plot_bgcolor='rgba(0,0,0,0)',93 paper_bgcolor='rgba(0,0,0,0)',94 font=dict(family="JetBrains Mono", color="#ccc"),95 barmode='group'96 )97 st.plotly_chart(fig, use_container_width=True)98 99 # EXPORTS100 col_dl1, col_dl2 = st.columns(2)101 with col_dl1:102 pdf_bytes = ReportEngine.generate_classified_pdf(data, {"model": "INTEL GAUDI 3"})103 st.download_button("๐ DOWNLOAD CLASSIFIED REPORT", pdf_bytes, "intel_audit.pdf", "application/pdf", use_container_width=True)104 105 with col_dl2:106 csv = df.to_csv(index=False).encode('utf-8')107 st.download_button("๐พ DOWNLOAD RAW TENSORS", csv, "tensors.csv", "text/csv", use_container_width=True)