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>IPDPS 2024 Digest | Publish Assistant</title><meta name=keywords content><meta name=description content="14 papers selected.
|
||
|
||
Low-Depth Spatial Tree Algorithms
|
||
Yves Baumann, Tal Ben-Nun, Maciej Besta, Lukas Gianinazzi et al.
|
||
TL;DR — Introduces parallel spatial-tree algorithms with provably low depth, advancing the theory of work-efficient parallel data structures for geometric workloads.
|
||
|
||
Alternative Basis Matrix Multiplication is Fast and Stable
|
||
Oded Schwartz, Sivan Toledo, Noa Vaknin, Gal Wiernik
|
||
TL;DR — Demonstrates that alternative-basis matrix multiplication achieves both practical speed and numerical stability, challenging the conventional trade-off between the two."><meta name=author content="Publish Assistant"><link rel=canonical href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/ipdps-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/ipdps-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/ipdps-2024/"><meta property="og:site_name" content="Publish Assistant"><meta property="og:title" content="IPDPS 2024 Digest"><meta property="og:description" content="14 papers selected.
|
||
Low-Depth Spatial Tree Algorithms Yves Baumann, Tal Ben-Nun, Maciej Besta, Lukas Gianinazzi et al.
|
||
TL;DR — Introduces parallel spatial-tree algorithms with provably low depth, advancing the theory of work-efficient parallel data structures for geometric workloads.
|
||
Alternative Basis Matrix Multiplication is Fast and Stable Oded Schwartz, Sivan Toledo, Noa Vaknin, Gal Wiernik
|
||
TL;DR — Demonstrates that alternative-basis matrix multiplication achieves both practical speed and numerical stability, challenging the conventional trade-off between the two."><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="IPDPS 2024 Digest"><meta name=twitter:description content="14 papers selected.
|
||
Low-Depth Spatial Tree Algorithms Yves Baumann, Tal Ben-Nun, Maciej Besta, Lukas Gianinazzi et al.
|
||
TL;DR — Introduces parallel spatial-tree algorithms with provably low depth, advancing the theory of work-efficient parallel data structures for geometric workloads.
|
||
Alternative Basis Matrix Multiplication is Fast and Stable Oded Schwartz, Sivan Toledo, Noa Vaknin, Gal Wiernik
|
||
TL;DR — Demonstrates that alternative-basis matrix multiplication achieves both practical speed and numerical stability, challenging the conventional trade-off between the two."><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":"IPDPS 2024 Digest","item":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/ipdps-2024/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"IPDPS 2024 Digest","name":"IPDPS 2024 Digest","description":"14 papers selected.\nLow-Depth Spatial Tree Algorithms Yves Baumann, Tal Ben-Nun, Maciej Besta, Lukas Gianinazzi et al.\nTL;DR — Introduces parallel spatial-tree algorithms with provably low depth, advancing the theory of work-efficient parallel data structures for geometric workloads.\nAlternative Basis Matrix Multiplication is Fast and Stable Oded Schwartz, Sivan Toledo, Noa Vaknin, Gal Wiernik\nTL;DR — Demonstrates that alternative-basis matrix multiplication achieves both practical speed and numerical stability, challenging the conventional trade-off between the two.\n","keywords":[],"articleBody":"14 papers selected.\nLow-Depth Spatial Tree Algorithms Yves Baumann, Tal Ben-Nun, Maciej Besta, Lukas Gianinazzi et al.\nTL;DR — Introduces parallel spatial-tree algorithms with provably low depth, advancing the theory of work-efficient parallel data structures for geometric workloads.\nAlternative Basis Matrix Multiplication is Fast and Stable Oded Schwartz, Sivan Toledo, Noa Vaknin, Gal Wiernik\nTL;DR — Demonstrates that alternative-basis matrix multiplication achieves both practical speed and numerical stability, challenging the conventional trade-off between the two.\nWait-free Trees with Asymptotically-Efficient Range Queries Ilya Kokorin, Victor Yudov, Vitaly Aksenov, Dan Alistarh\nTL;DR — Presents the first wait-free balanced search tree supporting asymptotically optimal range queries, a long-standing open problem in concurrent data structures.\nParallel Derandomization for Coloring Sam Coy, Artur Czumaj, Peter Davies-Peck, Gopinath Mishra\nTL;DR — Develops deterministic parallel graph-coloring algorithms via derandomization, closing a key gap between randomized and deterministic complexity in this foundational problem.\nHINT: Designing Cache-Efficient MPI_Alltoall using Hybrid Memory Copy Ordering and Non-Temporal Instructions Bharath Ramesh 0005, Nick Contini, Nawras Alnaasan, Kaushik Kandadi Suresh et al.\nTL;DR — Achieves substantial MPI_Alltoall bandwidth improvements by combining cache-aware copy ordering with non-temporal store instructions, directly benefiting large-scale collective communication.\nAn Optimized Error-controlled MPI Collective Framework Integrated with Lossy Compression Jiajun Huang 0001, Sheng Di, Xiaodong Yu 0001, Yujia Zhai et al.\nTL;DR — Integrates error-bounded lossy compression directly into MPI collectives, reducing communication volume with provable accuracy guarantees for HPC scientific applications.\nSoftware Resource Disaggregation for HPC with Serverless Computing Marcin Copik, Marcin Chrapek, Larissa Schmid, Alexandru Calotoiu et al.\nTL;DR — Shows that serverless computing can serve as a practical resource-disaggregation layer for HPC, enabling fine-grained elasticity without sacrificing performance.\nTackling Cold Start in Serverless Computing with Multi-Level Container Reuse Amelie Chi Zhou, Rongzheng Huang, Zhoubin Ke, Yusen Li et al.\nTL;DR — Proposes a multi-level container-reuse strategy that significantly reduces cold-start latency in serverless platforms, addressing one of the main performance bottlenecks.\nLightDAG: A Low-latency DAG-based BFT Consensus through Lightweight Broadcast Xiaohai Dai, Guanxiong Wang, Jiang Xiao 0001, Zhengxuan Guo et al.\nTL;DR — Redesigns DAG-based Byzantine fault-tolerant consensus to use lightweight broadcast, cutting latency while preserving safety and liveness in distributed systems.\nBenchmarking and Dissecting the Nvidia Hopper GPU Architecture Weile Luo, Ruibo Fan, Zeyu Li, Dayou Du et al.\nTL;DR — Provides the first systematic microbenchmark characterization of Hopper’s new hardware features (TMA, warpgroup MMA, NVLink-4), yielding actionable insights for kernel developers.\nDEFCON: Deformable Convolutions Leveraging Interval Search and GPU Texture Hardware Malith Jayaweera, Yanyu Li, Yanzhi Wang 0001, Bin Ren 0002 et al.\nTL;DR — Exploits GPU texture-cache hardware to accelerate deformable convolutions, delivering significant speedups over cuDNN-based baselines for irregular memory-access patterns.\nnOS-V: Co-Executing HPC Applications Using System-Wide Task Scheduling David Álvarez 0006, Kevin Sala, Vicenç Beltran 0001\nTL;DR — Introduces a system-wide task scheduler that safely co-executes multiple HPC applications on shared hardware, improving cluster utilization without modifying application code.\nHadar: Heterogeneity-Aware Optimization-Based Online Scheduling for Deep Learning Cluster Abeda Sultana, Fei Xu, Xu Yuan 0001, Li Chen 0019 et al.\nTL;DR — Formulates deep-learning cluster scheduling as an online optimization problem that explicitly accounts for GPU heterogeneity, reducing job completion times and improving fairness.\nA Parallel Partial Merge Repair Algorithm for Multi-block Failures for Erasure Storage Systems Shuaipeng Zhang, Shiyi Li, Chentao Wu, Ruobin Wu et al.\nTL;DR — Presents a parallel repair algorithm for simultaneous multi-block erasure failures that outperforms sequential recovery while reducing I/O and computational overhead.\n","wordCount":"568","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/ipdps-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">IPDPS 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>14 papers selected.</p><hr><h3 id=low-depth-spatial-tree-algorithms>Low-Depth Spatial Tree Algorithms<a hidden class=anchor aria-hidden=true href=#low-depth-spatial-tree-algorithms>#</a></h3><p><em>Yves Baumann, Tal Ben-Nun, Maciej Besta, Lukas Gianinazzi <em>et al.</em></em></p><p><strong>TL;DR</strong> — Introduces parallel spatial-tree algorithms with provably low depth, advancing the theory of work-efficient parallel data structures for geometric workloads.</p><hr><h3 id=alternative-basis-matrix-multiplication-is-fast-and-stable>Alternative Basis Matrix Multiplication is Fast and Stable<a hidden class=anchor aria-hidden=true href=#alternative-basis-matrix-multiplication-is-fast-and-stable>#</a></h3><p><em>Oded Schwartz, Sivan Toledo, Noa Vaknin, Gal Wiernik</em></p><p><strong>TL;DR</strong> — Demonstrates that alternative-basis matrix multiplication achieves both practical speed and numerical stability, challenging the conventional trade-off between the two.</p><hr><h3 id=wait-free-trees-with-asymptotically-efficient-range-queries>Wait-free Trees with Asymptotically-Efficient Range Queries<a hidden class=anchor aria-hidden=true href=#wait-free-trees-with-asymptotically-efficient-range-queries>#</a></h3><p><em>Ilya Kokorin, Victor Yudov, Vitaly Aksenov, Dan Alistarh</em></p><p><strong>TL;DR</strong> — Presents the first wait-free balanced search tree supporting asymptotically optimal range queries, a long-standing open problem in concurrent data structures.</p><hr><h3 id=parallel-derandomization-for-coloring>Parallel Derandomization for Coloring<a hidden class=anchor aria-hidden=true href=#parallel-derandomization-for-coloring>#</a></h3><p><em>Sam Coy, Artur Czumaj, Peter Davies-Peck, Gopinath Mishra</em></p><p><strong>TL;DR</strong> — Develops deterministic parallel graph-coloring algorithms via derandomization, closing a key gap between randomized and deterministic complexity in this foundational problem.</p><hr><h3 id=hint-designing-cache-efficient-mpi_alltoall-using-hybrid-memory-copy-ordering-and-non-temporal-instructions>HINT: Designing Cache-Efficient MPI_Alltoall using Hybrid Memory Copy Ordering and Non-Temporal Instructions<a hidden class=anchor aria-hidden=true href=#hint-designing-cache-efficient-mpi_alltoall-using-hybrid-memory-copy-ordering-and-non-temporal-instructions>#</a></h3><p><em>Bharath Ramesh 0005, Nick Contini, Nawras Alnaasan, Kaushik Kandadi Suresh <em>et al.</em></em></p><p><strong>TL;DR</strong> — Achieves substantial MPI_Alltoall bandwidth improvements by combining cache-aware copy ordering with non-temporal store instructions, directly benefiting large-scale collective communication.</p><hr><h3 id=an-optimized-error-controlled-mpi-collective-framework-integrated-with-lossy-compression>An Optimized Error-controlled MPI Collective Framework Integrated with Lossy Compression<a hidden class=anchor aria-hidden=true href=#an-optimized-error-controlled-mpi-collective-framework-integrated-with-lossy-compression>#</a></h3><p><em>Jiajun Huang 0001, Sheng Di, Xiaodong Yu 0001, Yujia Zhai <em>et al.</em></em></p><p><strong>TL;DR</strong> — Integrates error-bounded lossy compression directly into MPI collectives, reducing communication volume with provable accuracy guarantees for HPC scientific applications.</p><hr><h3 id=software-resource-disaggregation-for-hpc-with-serverless-computing>Software Resource Disaggregation for HPC with Serverless Computing<a hidden class=anchor aria-hidden=true href=#software-resource-disaggregation-for-hpc-with-serverless-computing>#</a></h3><p><em>Marcin Copik, Marcin Chrapek, Larissa Schmid, Alexandru Calotoiu <em>et al.</em></em></p><p><strong>TL;DR</strong> — Shows that serverless computing can serve as a practical resource-disaggregation layer for HPC, enabling fine-grained elasticity without sacrificing performance.</p><hr><h3 id=tackling-cold-start-in-serverless-computing-with-multi-level-container-reuse>Tackling Cold Start in Serverless Computing with Multi-Level Container Reuse<a hidden class=anchor aria-hidden=true href=#tackling-cold-start-in-serverless-computing-with-multi-level-container-reuse>#</a></h3><p><em>Amelie Chi Zhou, Rongzheng Huang, Zhoubin Ke, Yusen Li <em>et al.</em></em></p><p><strong>TL;DR</strong> — Proposes a multi-level container-reuse strategy that significantly reduces cold-start latency in serverless platforms, addressing one of the main performance bottlenecks.</p><hr><h3 id=lightdag-a-low-latency-dag-based-bft-consensus-through-lightweight-broadcast>LightDAG: A Low-latency DAG-based BFT Consensus through Lightweight Broadcast<a hidden class=anchor aria-hidden=true href=#lightdag-a-low-latency-dag-based-bft-consensus-through-lightweight-broadcast>#</a></h3><p><em>Xiaohai Dai, Guanxiong Wang, Jiang Xiao 0001, Zhengxuan Guo <em>et al.</em></em></p><p><strong>TL;DR</strong> — Redesigns DAG-based Byzantine fault-tolerant consensus to use lightweight broadcast, cutting latency while preserving safety and liveness in distributed systems.</p><hr><h3 id=benchmarking-and-dissecting-the-nvidia-hopper-gpu-architecture>Benchmarking and Dissecting the Nvidia Hopper GPU Architecture<a hidden class=anchor aria-hidden=true href=#benchmarking-and-dissecting-the-nvidia-hopper-gpu-architecture>#</a></h3><p><em>Weile Luo, Ruibo Fan, Zeyu Li, Dayou Du <em>et al.</em></em></p><p><strong>TL;DR</strong> — Provides the first systematic microbenchmark characterization of Hopper’s new hardware features (TMA, warpgroup MMA, NVLink-4), yielding actionable insights for kernel developers.</p><hr><h3 id=defcon-deformable-convolutions-leveraging-interval-search-and-gpu-texture-hardware>DEFCON: Deformable Convolutions Leveraging Interval Search and GPU Texture Hardware<a hidden class=anchor aria-hidden=true href=#defcon-deformable-convolutions-leveraging-interval-search-and-gpu-texture-hardware>#</a></h3><p><em>Malith Jayaweera, Yanyu Li, Yanzhi Wang 0001, Bin Ren 0002 <em>et al.</em></em></p><p><strong>TL;DR</strong> — Exploits GPU texture-cache hardware to accelerate deformable convolutions, delivering significant speedups over cuDNN-based baselines for irregular memory-access patterns.</p><hr><h3 id=nos-v-co-executing-hpc-applications-using-system-wide-task-scheduling>nOS-V: Co-Executing HPC Applications Using System-Wide Task Scheduling<a hidden class=anchor aria-hidden=true href=#nos-v-co-executing-hpc-applications-using-system-wide-task-scheduling>#</a></h3><p><em>David Álvarez 0006, Kevin Sala, Vicenç Beltran 0001</em></p><p><strong>TL;DR</strong> — Introduces a system-wide task scheduler that safely co-executes multiple HPC applications on shared hardware, improving cluster utilization without modifying application code.</p><hr><h3 id=hadar-heterogeneity-aware-optimization-based-online-scheduling-for-deep-learning-cluster>Hadar: Heterogeneity-Aware Optimization-Based Online Scheduling for Deep Learning Cluster<a hidden class=anchor aria-hidden=true href=#hadar-heterogeneity-aware-optimization-based-online-scheduling-for-deep-learning-cluster>#</a></h3><p><em>Abeda Sultana, Fei Xu, Xu Yuan 0001, Li Chen 0019 <em>et al.</em></em></p><p><strong>TL;DR</strong> — Formulates deep-learning cluster scheduling as an online optimization problem that explicitly accounts for GPU heterogeneity, reducing job completion times and improving fairness.</p><hr><h3 id=a-parallel-partial-merge-repair-algorithm-for-multi-block-failures-for-erasure-storage-systems>A Parallel Partial Merge Repair Algorithm for Multi-block Failures for Erasure Storage Systems<a hidden class=anchor aria-hidden=true href=#a-parallel-partial-merge-repair-algorithm-for-multi-block-failures-for-erasure-storage-systems>#</a></h3><p><em>Shuaipeng Zhang, Shiyi Li, Chentao Wu, Ruobin Wu <em>et al.</em></em></p><p><strong>TL;DR</strong> — Presents a parallel repair algorithm for simultaneous multi-block erasure failures that outperforms sequential recovery while reducing I/O and computational overhead.</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/ic-2024/><span class=title>« Prev</span>
|
||
<span>IC 2024 Digest</span>
|
||
</a><a class=next href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/jpdc-2024/><span class=title>Next »</span>
|
||
<span>JPDC 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> |