29 lines
23 KiB
HTML
29 lines
23 KiB
HTML
<!doctype html><html lang=en dir=auto data-theme=auto><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>HPDC 2024 Digest | Publish Assistant</title><meta name=keywords content><meta name=description content="12 papers selected.
|
|
|
|
Efficient all-to-all Collective Communication Schedules for Direct-connect Topologies
|
|
Prithwish Basu, Liangyu Zhao, Jason Fantl, Siddharth Pal et al.
|
|
TL;DR — Derives near-optimal all-to-all collective communication schedules for direct-connect HPC topologies, directly improving bandwidth utilization in large-scale distributed systems.
|
|
|
|
Reinforcement Learning-based Adaptive Mitigation of Uncorrected DRAM Errors in the Field
|
|
Isaac Boixaderas, Sergi Moré, Javier Bartolome, David Vicente et al.
|
|
TL;DR — Applies reinforcement learning to dynamically mitigate uncorrected DRAM errors at production HPC scale, improving system reliability without sacrificing performance."><meta name=author content="Publish Assistant"><link rel=canonical href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/hpdc-2024/><link crossorigin=anonymous href=/vincent/publish-assistant/assets/css/stylesheet.d72f07832e13c592b3edba91680bfe70f01daac396179bcace0ac36e8e0494c6.css integrity="sha256-1y8Hgy4TxZKz7bqRaAv+cPAdqsOWF5vKzgrDbo4ElMY=" rel="preload stylesheet" as=style><link rel=icon href=https://pub.sqrt.fr/vincent/publish-assistant/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://pub.sqrt.fr/vincent/publish-assistant/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://pub.sqrt.fr/vincent/publish-assistant/favicon-32x32.png><link rel=apple-touch-icon href=https://pub.sqrt.fr/vincent/publish-assistant/apple-touch-icon.png><link rel=mask-icon href=https://pub.sqrt.fr/vincent/publish-assistant/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/hpdc-2024/><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51);color-scheme:dark}.list{background:var(--theme)}.toc{background:var(--entry)}}</style></noscript><script>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":document.querySelector("html").dataset.theme="light"</script><meta property="og:url" content="https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/hpdc-2024/"><meta property="og:site_name" content="Publish Assistant"><meta property="og:title" content="HPDC 2024 Digest"><meta property="og:description" content="12 papers selected.
|
|
Efficient all-to-all Collective Communication Schedules for Direct-connect Topologies Prithwish Basu, Liangyu Zhao, Jason Fantl, Siddharth Pal et al.
|
|
TL;DR — Derives near-optimal all-to-all collective communication schedules for direct-connect HPC topologies, directly improving bandwidth utilization in large-scale distributed systems.
|
|
Reinforcement Learning-based Adaptive Mitigation of Uncorrected DRAM Errors in the Field Isaac Boixaderas, Sergi Moré, Javier Bartolome, David Vicente et al.
|
|
TL;DR — Applies reinforcement learning to dynamically mitigate uncorrected DRAM errors at production HPC scale, improving system reliability without sacrificing performance."><meta property="og:locale" content="en_us"><meta property="og:type" content="article"><meta property="article:section" content="cloud-edge"><meta property="article:published_time" content="2024-01-01T00:00:00+00:00"><meta property="article:modified_time" content="2024-01-01T00:00:00+00:00"><meta name=twitter:card content="summary"><meta name=twitter:title content="HPDC 2024 Digest"><meta name=twitter:description content="12 papers selected.
|
|
Efficient all-to-all Collective Communication Schedules for Direct-connect Topologies Prithwish Basu, Liangyu Zhao, Jason Fantl, Siddharth Pal et al.
|
|
TL;DR — Derives near-optimal all-to-all collective communication schedules for direct-connect HPC topologies, directly improving bandwidth utilization in large-scale distributed systems.
|
|
Reinforcement Learning-based Adaptive Mitigation of Uncorrected DRAM Errors in the Field Isaac Boixaderas, Sergi Moré, Javier Bartolome, David Vicente et al.
|
|
TL;DR — Applies reinforcement learning to dynamically mitigate uncorrected DRAM errors at production HPC scale, improving system reliability without sacrificing performance."><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Edge and Cloud Systems","item":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/"},{"@type":"ListItem","position":2,"name":"Digests","item":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/"},{"@type":"ListItem","position":3,"name":"HPDC 2024 Digest","item":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/hpdc-2024/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"HPDC 2024 Digest","name":"HPDC 2024 Digest","description":"12 papers selected.\nEfficient all-to-all Collective Communication Schedules for Direct-connect Topologies Prithwish Basu, Liangyu Zhao, Jason Fantl, Siddharth Pal et al.\nTL;DR — Derives near-optimal all-to-all collective communication schedules for direct-connect HPC topologies, directly improving bandwidth utilization in large-scale distributed systems.\nReinforcement Learning-based Adaptive Mitigation of Uncorrected DRAM Errors in the Field Isaac Boixaderas, Sergi Moré, Javier Bartolome, David Vicente et al.\nTL;DR — Applies reinforcement learning to dynamically mitigate uncorrected DRAM errors at production HPC scale, improving system reliability without sacrificing performance.\n","keywords":[],"articleBody":"12 papers selected.\nEfficient all-to-all Collective Communication Schedules for Direct-connect Topologies Prithwish Basu, Liangyu Zhao, Jason Fantl, Siddharth Pal et al.\nTL;DR — Derives near-optimal all-to-all collective communication schedules for direct-connect HPC topologies, directly improving bandwidth utilization in large-scale distributed systems.\nReinforcement Learning-based Adaptive Mitigation of Uncorrected DRAM Errors in the Field Isaac Boixaderas, Sergi Moré, Javier Bartolome, David Vicente et al.\nTL;DR — Applies reinforcement learning to dynamically mitigate uncorrected DRAM errors at production HPC scale, improving system reliability without sacrificing performance.\nIDT: Intelligent Data Placement for Multi-tiered Main Memory with Reinforcement Learning Juneseo Chang, Wanju Doh, Yaebin Moon, Eojin Lee et al.\nTL;DR — Presents a reinforcement learning-driven runtime that automatically places data across heterogeneous memory tiers, reducing access latency in HPC nodes with complex memory hierarchies.\nFaaSKeeper: Learning from Building Serverless Services with ZooKeeper as an Example Marcin Copik, Alexandru Calotoiu, Pengyu Zhou, Konstantin Taranov et al.\nTL;DR — Reconstructs ZooKeeper as a fully serverless service and distills concrete design lessons for building stateful distributed coordination primitives on FaaS platforms.\nESG: Pipeline-Conscious Efficient Scheduling of DNN Workflows on Serverless Platforms with Shareable GPUs Xinning Hui, Yuanchao Xu 0001, Zhishan Guo, Xipeng Shen\nTL;DR — Introduces a pipeline-aware scheduler that shares GPUs across serverless DNN workflow stages, substantially cutting end-to-end latency and GPU idle time.\nFASOP: Fast yet Accurate Automated Search for Optimal Parallelization of Transformers on Heterogeneous GPU Clusters Sunyeol Hwang, Eungyeong Lee, Hongseok Oh 0003, Youngmin Yi\nTL;DR — Provides a fast, model-driven search strategy that finds optimal tensor/pipeline/data parallelism configurations for transformer training on heterogeneous GPU clusters.\nNear-Optimal Wafer-Scale Reduce Piotr Luczynski, Lukas Gianinazzi, Patrick Iff, Leighton Wilson et al.\nTL;DR — Designs and analyzes near-optimal Reduce collective algorithms tailored to wafer-scale interconnect topology, setting new performance bounds for next-generation HPC hardware.\nDataStates-LLM: Lazy Asynchronous Checkpointing for Large Language Models Avinash Maurya, Robert Underwood, M. Mustafa Rafique, Franck Cappello et al.\nTL;DR — Introduces lazy asynchronous checkpointing that overlaps LLM training with I/O, dramatically reducing checkpoint overhead on large-scale HPC storage systems.\nADTopk: All-Dimension Top-k Compression for High-Performance Data-Parallel DNN Training Zhangqiang Ming, Yuchong Hu, Wenxiang Zhou, Xinjue Zheng et al.\nTL;DR — Proposes an all-dimension top-k gradient sparsification scheme that reduces communication volume in data-parallel distributed training while preserving convergence quality.\nAccelerating Function-Centric Applications by Discovering, Distributing, and Retaining Reusable Context in Workflow Systems Thanh Son Phung, Colin Thomas, Logan T. Ward, Kyle Chard et al.\nTL;DR — Introduces context reuse across scientific workflow tasks, allowing distributed workflow systems to cache and share intermediate computation artifacts and significantly reduce redundant work.\nCereSZ: Enabling and Scaling Error-bounded Lossy Compression on Cerebras CS-2 Shihui Song, Yafan Huang, Peng Jiang 0004, Xiaodong Yu 0001 et al.\nTL;DR — Ports and scales error-bounded lossy compression to the Cerebras CS-2 wafer-scale engine, enabling significant data reduction for HPC scientific workloads on novel accelerator hardware.\nEvoStore: Towards Scalable Storage of Evolving Learning Models Robert Underwood, Meghana Madhyastha, Randal C. Burns, Bogdan Nicolae\nTL;DR — Designs a storage system that efficiently manages the versioned, incrementally evolving checkpoints produced during large-scale distributed model training, reducing storage overhead and retrieval time.\n","wordCount":"518","inLanguage":"en","datePublished":"2024-01-01T00:00:00Z","dateModified":"2024-01-01T00:00:00Z","author":{"@type":"Person","name":"Publish Assistant"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/hpdc-2024/"},"publisher":{"@type":"Organization","name":"Publish Assistant","logo":{"@type":"ImageObject","url":"https://pub.sqrt.fr/vincent/publish-assistant/favicon.ico"}}}</script></head><body id=top><header class=header><nav class=header-nav><div class=logo><a href=https://pub.sqrt.fr/vincent/publish-assistant/ accesskey=h title="Publish Assistant (Alt + H)">Publish Assistant</a>
|
|
<span class=logo-sep>/</span>
|
|
<a class=logo-topic href=/vincent/publish-assistant/cloud-edge/ title="Edge and Cloud Systems">Edge and Cloud Systems</a><div class=logo-switches><button id=theme-toggle class=theme-toggle accesskey=t title="(Alt + T)" aria-label="Toggle theme">
|
|
<svg class="moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
|
<svg class="sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu class=menu><li><a href=/vincent/publish-assistant/cloud-edge/venues/ title=Venues><span>Venues</span></a></li><li><a href=/vincent/publish-assistant/cloud-edge/calendar/ title=Calendar><span>Calendar</span></a></li><li><a href=/vincent/publish-assistant/cloud-edge/digests/ title=Digests><span class=active>Digests</span></a></li></ul></nav></header><main class=main><article class=post-single><header class=post-header><nav class=breadcrumbs role=navigation aria-label=Breadcrumb><a href=/vincent/publish-assistant/cloud-edge/digests/>Digests</a>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"/></svg></nav><h1 class="post-title entry-hint-parent">HPDC 2024 Digest</h1><div class=post-meta><span title='2024-01-01 00:00:00 +0000 UTC'>January 1, 2024</span> · <span>Publish Assistant</span></div></header><div class="post-content md-content"><p>12 papers selected.</p><hr><h3 id=efficient-all-to-all-collective-communication-schedules-for-direct-connect-topologies>Efficient all-to-all Collective Communication Schedules for Direct-connect Topologies<a hidden class=anchor aria-hidden=true href=#efficient-all-to-all-collective-communication-schedules-for-direct-connect-topologies>#</a></h3><p><em>Prithwish Basu, Liangyu Zhao, Jason Fantl, Siddharth Pal <em>et al.</em></em></p><p><strong>TL;DR</strong> — Derives near-optimal all-to-all collective communication schedules for direct-connect HPC topologies, directly improving bandwidth utilization in large-scale distributed systems.</p><hr><h3 id=reinforcement-learning-based-adaptive-mitigation-of-uncorrected-dram-errors-in-the-field>Reinforcement Learning-based Adaptive Mitigation of Uncorrected DRAM Errors in the Field<a hidden class=anchor aria-hidden=true href=#reinforcement-learning-based-adaptive-mitigation-of-uncorrected-dram-errors-in-the-field>#</a></h3><p><em>Isaac Boixaderas, Sergi Moré, Javier Bartolome, David Vicente <em>et al.</em></em></p><p><strong>TL;DR</strong> — Applies reinforcement learning to dynamically mitigate uncorrected DRAM errors at production HPC scale, improving system reliability without sacrificing performance.</p><hr><h3 id=idt-intelligent-data-placement-for-multi-tiered-main-memory-with-reinforcement-learning>IDT: Intelligent Data Placement for Multi-tiered Main Memory with Reinforcement Learning<a hidden class=anchor aria-hidden=true href=#idt-intelligent-data-placement-for-multi-tiered-main-memory-with-reinforcement-learning>#</a></h3><p><em>Juneseo Chang, Wanju Doh, Yaebin Moon, Eojin Lee <em>et al.</em></em></p><p><strong>TL;DR</strong> — Presents a reinforcement learning-driven runtime that automatically places data across heterogeneous memory tiers, reducing access latency in HPC nodes with complex memory hierarchies.</p><hr><h3 id=faaskeeper-learning-from-building-serverless-services-with-zookeeper-as-an-example>FaaSKeeper: Learning from Building Serverless Services with ZooKeeper as an Example<a hidden class=anchor aria-hidden=true href=#faaskeeper-learning-from-building-serverless-services-with-zookeeper-as-an-example>#</a></h3><p><em>Marcin Copik, Alexandru Calotoiu, Pengyu Zhou, Konstantin Taranov <em>et al.</em></em></p><p><strong>TL;DR</strong> — Reconstructs ZooKeeper as a fully serverless service and distills concrete design lessons for building stateful distributed coordination primitives on FaaS platforms.</p><hr><h3 id=esg-pipeline-conscious-efficient-scheduling-of-dnn-workflows-on-serverless-platforms-with-shareable-gpus>ESG: Pipeline-Conscious Efficient Scheduling of DNN Workflows on Serverless Platforms with Shareable GPUs<a hidden class=anchor aria-hidden=true href=#esg-pipeline-conscious-efficient-scheduling-of-dnn-workflows-on-serverless-platforms-with-shareable-gpus>#</a></h3><p><em>Xinning Hui, Yuanchao Xu 0001, Zhishan Guo, Xipeng Shen</em></p><p><strong>TL;DR</strong> — Introduces a pipeline-aware scheduler that shares GPUs across serverless DNN workflow stages, substantially cutting end-to-end latency and GPU idle time.</p><hr><h3 id=fasop-fast-yet-accurate-automated-search-for-optimal-parallelization-of-transformers-on-heterogeneous-gpu-clusters>FASOP: Fast yet Accurate Automated Search for Optimal Parallelization of Transformers on Heterogeneous GPU Clusters<a hidden class=anchor aria-hidden=true href=#fasop-fast-yet-accurate-automated-search-for-optimal-parallelization-of-transformers-on-heterogeneous-gpu-clusters>#</a></h3><p><em>Sunyeol Hwang, Eungyeong Lee, Hongseok Oh 0003, Youngmin Yi</em></p><p><strong>TL;DR</strong> — Provides a fast, model-driven search strategy that finds optimal tensor/pipeline/data parallelism configurations for transformer training on heterogeneous GPU clusters.</p><hr><h3 id=near-optimal-wafer-scale-reduce>Near-Optimal Wafer-Scale Reduce<a hidden class=anchor aria-hidden=true href=#near-optimal-wafer-scale-reduce>#</a></h3><p><em>Piotr Luczynski, Lukas Gianinazzi, Patrick Iff, Leighton Wilson <em>et al.</em></em></p><p><strong>TL;DR</strong> — Designs and analyzes near-optimal Reduce collective algorithms tailored to wafer-scale interconnect topology, setting new performance bounds for next-generation HPC hardware.</p><hr><h3 id=datastates-llm-lazy-asynchronous-checkpointing-for-large-language-models>DataStates-LLM: Lazy Asynchronous Checkpointing for Large Language Models<a hidden class=anchor aria-hidden=true href=#datastates-llm-lazy-asynchronous-checkpointing-for-large-language-models>#</a></h3><p><em>Avinash Maurya, Robert Underwood, M. Mustafa Rafique, Franck Cappello <em>et al.</em></em></p><p><strong>TL;DR</strong> — Introduces lazy asynchronous checkpointing that overlaps LLM training with I/O, dramatically reducing checkpoint overhead on large-scale HPC storage systems.</p><hr><h3 id=adtopk-all-dimension-top-k-compression-for-high-performance-data-parallel-dnn-training>ADTopk: All-Dimension Top-k Compression for High-Performance Data-Parallel DNN Training<a hidden class=anchor aria-hidden=true href=#adtopk-all-dimension-top-k-compression-for-high-performance-data-parallel-dnn-training>#</a></h3><p><em>Zhangqiang Ming, Yuchong Hu, Wenxiang Zhou, Xinjue Zheng <em>et al.</em></em></p><p><strong>TL;DR</strong> — Proposes an all-dimension top-k gradient sparsification scheme that reduces communication volume in data-parallel distributed training while preserving convergence quality.</p><hr><h3 id=accelerating-function-centric-applications-by-discovering-distributing-and-retaining-reusable-context-in-workflow-systems>Accelerating Function-Centric Applications by Discovering, Distributing, and Retaining Reusable Context in Workflow Systems<a hidden class=anchor aria-hidden=true href=#accelerating-function-centric-applications-by-discovering-distributing-and-retaining-reusable-context-in-workflow-systems>#</a></h3><p><em>Thanh Son Phung, Colin Thomas, Logan T. Ward, Kyle Chard <em>et al.</em></em></p><p><strong>TL;DR</strong> — Introduces context reuse across scientific workflow tasks, allowing distributed workflow systems to cache and share intermediate computation artifacts and significantly reduce redundant work.</p><hr><h3 id=ceresz-enabling-and-scaling-error-bounded-lossy-compression-on-cerebras-cs-2>CereSZ: Enabling and Scaling Error-bounded Lossy Compression on Cerebras CS-2<a hidden class=anchor aria-hidden=true href=#ceresz-enabling-and-scaling-error-bounded-lossy-compression-on-cerebras-cs-2>#</a></h3><p><em>Shihui Song, Yafan Huang, Peng Jiang 0004, Xiaodong Yu 0001 <em>et al.</em></em></p><p><strong>TL;DR</strong> — Ports and scales error-bounded lossy compression to the Cerebras CS-2 wafer-scale engine, enabling significant data reduction for HPC scientific workloads on novel accelerator hardware.</p><hr><h3 id=evostore-towards-scalable-storage-of-evolving-learning-models>EvoStore: Towards Scalable Storage of Evolving Learning Models<a hidden class=anchor aria-hidden=true href=#evostore-towards-scalable-storage-of-evolving-learning-models>#</a></h3><p><em>Robert Underwood, Meghana Madhyastha, Randal C. Burns, Bogdan Nicolae</em></p><p><strong>TL;DR</strong> — Designs a storage system that efficiently manages the versioned, incrementally evolving checkpoints produced during large-scale distributed model training, reducing storage overhead and retrieval time.</p></div><footer class=post-footer><ul class=post-tags></ul><nav class=paginav><a class=prev href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/fgcs-2024/><span class=title>« Prev</span>
|
|
<span>FGCS 2024 Digest</span>
|
|
</a><a class=next href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/ic-2024/><span class=title>Next »</span>
|
|
<span>IC 2024 Digest</span></a></nav></footer></article></main><footer class=footer><span>© 2026 <a href=https://pub.sqrt.fr/vincent/publish-assistant/>Publish Assistant</a></span> ·
|
|
<span>Powered by
|
|
<a href="https://gohugo.io/?utm_source=papermod" rel=noopener target=_blank>Hugo</a> &
|
|
<a href=https://github.com/adityatelange/hugo-PaperMod/ rel=noopener target=_blank>PaperMod</a></span></footer><a href=#top id=top-link class="top-link hidden" aria-label="go to top" title="Go to Top (Alt + G)" accesskey=g><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevrons-up"><polyline points="17 11 12 6 7 11"/><polyline points="17 18 12 13 7 18"/></svg>
|
|
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var toplink=document.getElementById("top-link");window.onscroll=function(){const e=window.innerHeight;document.body.scrollTop>e||document.documentElement.scrollTop>e?toplink.classList.remove("hidden"):toplink.classList.add("hidden")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html> |