---
date: '2026-05-27'
description: sequence sharded across devices in a ring, K,V blocks circulate so each GPU holds only a slice of the cache.
id: attention-ring
modified: 2026-06-06 01:39:32 GMT-04:00
seealso:
  - '[[thoughts/Attention|Attention]]'
  - '[[thoughts/tree attention|tree attention]]'
  - '[[thoughts/flash attention|FlashAttention]]'
tags:
  - ml
  - llm
  - technical
title: Ring Attention
created: '2026-05-27'
published: '2026-05-27'
pageLayout: default
slug: thoughts/ring-attention
permalink: https://aarnphm.xyz/thoughts/ring-attention.md
generator:
  quartz: v4.6.0
  hostedProvider: Cloudflare
  baseUrl: aarnphm.xyz
full: https://aarnphm.xyz/llms-full.txt
---
idea: shard the sequence length $L$ across $p$ devices, circulate $K,V$ blocks around a ring, and keep only $L/p$ tokens of cache resident on each GPU.

RingAttention \[@liu2023ringattentionblockwisetransformers\] makes long-context attention a blockwise distributed softmax. Striped Attention \[@brandon2023stripedattentionfasterring\] keeps the same ring schedule but alternates shard ownership so causal work is more balanced across devices.

Let device $u$ own local blocks $Q^{(u)},K^{(u)},V^{(u)} \in \mathbb{R}^{L/p \times d_h}$. At ring step $s$, device $u$ attends its local queries against the circulating shard $b(u,s) = (u - s) \bmod p$:

$$
\begin{aligned}
S^{(u,s)} &= \frac{Q^{(u)} K^{(b(u,s))\top}}{\sqrt{d_h}},\\
m^{(u,s)}_i &= \max\big(m^{(u,s-1)}_i,\max_j S^{(u,s)}_{ij}\big),\\
z^{(u,s)}_i &= z^{(u,s-1)}_i e^{m^{(u,s-1)}_i - m^{(u,s)}_i} + \sum_j e^{S^{(u,s)}_{ij} - m^{(u,s)}_i},\\
y^{(u,s)}_i &= y^{(u,s-1)}_i e^{m^{(u,s-1)}_i - m^{(u,s)}_i} + \sum_j e^{S^{(u,s)}_{ij} - m^{(u,s)}_i} V^{(b(u,s))}_j,\\
O^{(u)}_i &= y^{(u,p)}_i / z^{(u,p)}_i.
\end{aligned}
$$

The running maximum $m$, partition sum $z$, and value accumulator $y$ are the same online-softmax statistics used by [[thoughts/flash attention|FlashAttention]], just merged over remote shards instead of SRAM tiles. Each GPU streams a neighbouring $K,V$ slice just in time, computes against it, forwards it, and drops it after the local rows have absorbed its contribution.

> \[!math\] 1. ring memory and link traffic
>
> With $p$ devices, resident KV cache per GPU falls from $\Theta(L d_h)$ to $\Theta(L d_h / p)$, a $p{:}1$ memory ratio. Each GPU receives the other $p-1$ shards once, so per-device link traffic is $\Theta(2(p-1)Ld_h/p)$ KV elements and the latency depth is $\Theta(p)$ ring hops. For $p=4$, local cache is $25\%$ of the full KV state while the remaining $75\%$ streams through the ring behind compute.

<figure class="tikz" data-remark-tikz style=""><span class="tikz-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><annotation encoding="application/x-tex">"\\usepackage{tikz}\n\\begin{document}\n\\begin{tikzpicture}[\n  font=\\sffamily\\small,\n  device/.style={draw=black, fill=cyan!20, rounded corners=2pt, minimum width=2cm, minimum height=0.9cm},\n  shard/.style={draw=black, fill=orange!30, rounded corners=2pt, minimum width=1.4cm, minimum height=0.5cm, font=\\sffamily\\footnotesize},\n  ring/.style={->, >=latex, thick, gray!70}\n]\n  \\def\\R{2.7}\n  \\foreach \\i/\\ang in {0/90, 1/0, 2/270, 3/180} {\n    \\node[device] (d\\i) at ({\\R*cos(\\ang)}, {\\R*sin(\\ang)}) {device $\\i$};\n  }\n  \\foreach \\i/\\ang in {0/90, 1/0, 2/270, 3/180} {\n    \\node[shard] at ({(\\R + 1.4)*cos(\\ang)}, {(\\R + 1.4)*sin(\\ang)}) {$k_\\i, v_\\i$};\n  }\n\n  \\draw[ring] (d0) to[bend right=18] (d1);\n  \\draw[ring] (d1) to[bend right=18] (d2);\n  \\draw[ring] (d2) to[bend right=18] (d3);\n  \\draw[ring] (d3) to[bend right=18] (d0);\n\n  \\node[font=\\sffamily\\itshape, gray] at (0, 0) {KV blocks circulate};\n\\end{tikzpicture}\n\\end{document}"</annotation></semantics></math></span><img src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyNzMuNTQ1NjJwdCIgaGVpZ2h0PSIyNDcuOTM4M3B0IiB2aWV3Qm94PSItNzIgLTcyIDI3My41NDU2MiAyNDcuOTM4MyI+PGcgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NC41MDI4MDc2MTcxODc0OSw1MS42OTkxNDI0NTYwNTQ2Nykgc2NhbGUoMSwtMSkiPjxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZS13aWR0aD0iMC40Ij4gPGcgc3Ryb2tlPSIjMDAwIj4gPGcgZmlsbD0iI2NmZiI+IDxnIHN0cm9rZT0iIzAwMCI+IDxnIGZpbGw9IiNjZmYiPiA8cGF0aCBkPSIgTSAyNi40NTI3NCA4OS42MjU5NiBMIC0yNi40NTI3NCA4OS42MjU5NiBDIC0yNy41NTczMyA4OS42MjU5NiAtMjguNDUyNzQgODguNzMwNTUgLTI4LjQ1Mjc0IDg3LjYyNTk2IEwgLTI4LjQ1Mjc0IDY2LjAxODY2IEMgLTI4LjQ1Mjc0IDY0LjkxNDA4IC0yNy41NTczMyA2NC4wMTg2NiAtMjYuNDUyNzQgNjQuMDE4NjYgTCAyNi40NTI3NCA2NC4wMTg2NiBDIDI3LjU1NzMzIDY0LjAxODY2IDI4LjQ1Mjc0IDY0LjkxNDA4IDI4LjQ1Mjc0IDY2LjAxODY2IEwgMjguNDUyNzQgODcuNjI1OTYgQyAyOC40NTI3NCA4OC43MzA1NSAyNy41NTczMyA4OS42MjU5NiAyNi40NTI3NCA4OS42MjU5NiBaIE0gLTI4LjQ1Mjc0IDY0LjAxODY2ICAiPjwvcGF0aD4gPC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNS42NDU3LDczLjY5NzMxKSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoNjQuNTAyODA3NjE3MTg3NDksNTEuNjk5MTQyNDU2MDU0NjcpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI2NC41MDI4MDc2MTcxODc0OSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjkiIGZpbGw9ImJsYWNrIj5kZXZpY2U8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9IjkxLjE2OTMxMjQ3NzExMTgiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI5IiBmaWxsPSJibGFjayI+MDwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8L2c+IDwvZz4gPGcgc3Ryb2tlPSIjMDAwIj4gPGcgZmlsbD0iI2NmZiI+IDxnIHN0cm9rZT0iIzAwMCI+IDxnIGZpbGw9IiNjZmYiPiA8cGF0aCBkPSIgTSAxMDMuMjc1MDUgMTIuODAzNjUgTCA1MC4zNjk1NyAxMi44MDM2NSBDIDQ5LjI2NDk4IDEyLjgwMzY1IDQ4LjM2OTU3IDExLjkwODIzIDQ4LjM2OTU3IDEwLjgwMzY1IEwgNDguMzY5NTcgLTEwLjgwMzY1IEMgNDguMzY5NTcgLTExLjkwODIzIDQ5LjI2NDk4IC0xMi44MDM2NSA1MC4zNjk1NyAtMTIuODAzNjUgTCAxMDMuMjc1MDUgLTEyLjgwMzY1IEMgMTA0LjM3OTY0IC0xMi44MDM2NSAxMDUuMjc1MDUgLTExLjkwODIzIDEwNS4yNzUwNSAtMTAuODAzNjUgTCAxMDUuMjc1MDUgMTAuODAzNjUgQyAxMDUuMjc1MDUgMTEuOTA4MjMgMTA0LjM3OTY0IDEyLjgwMzY1IDEwMy4yNzUwNSAxMi44MDM2NSBaIE0gNDguMzY5NTcgLTEyLjgwMzY1ICAiPjwvcGF0aD4gPC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYxLjE3NjYsLTMuMTI1KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoNjQuNTAyODA3NjE3MTg3NDksNTEuNjk5MTQyNDU2MDU0NjcpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI2NC41MDI4MDc2MTcxODc0OSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjkiIGZpbGw9ImJsYWNrIj5kZXZpY2U8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9IjkxLjE2OTMxMjQ3NzExMTgiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI5IiBmaWxsPSJibGFjayI+MTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8L2c+IDwvZz4gPGcgc3Ryb2tlPSIjMDAwIj4gPGcgZmlsbD0iI2NmZiI+IDxnIHN0cm9rZT0iIzAwMCI+IDxnIGZpbGw9IiNjZmYiPiA8cGF0aCBkPSIgTSAyNi40NTI3NCAtNjQuMDE4NjYgTCAtMjYuNDUyNzQgLTY0LjAxODY2IEMgLTI3LjU1NzMzIC02NC4wMTg2NiAtMjguNDUyNzQgLTY0LjkxNDA4IC0yOC40NTI3NCAtNjYuMDE4NjYgTCAtMjguNDUyNzQgLTg3LjYyNTk2IEMgLTI4LjQ1Mjc0IC04OC43MzA1NSAtMjcuNTU3MzMgLTg5LjYyNTk2IC0yNi40NTI3NCAtODkuNjI1OTYgTCAyNi40NTI3NCAtODkuNjI1OTYgQyAyNy41NTczMyAtODkuNjI1OTYgMjguNDUyNzQgLTg4LjczMDU1IDI4LjQ1Mjc0IC04Ny42MjU5NiBMIDI4LjQ1Mjc0IC02Ni4wMTg2NiBDIDI4LjQ1Mjc0IC02NC45MTQwOCAyNy41NTczMyAtNjQuMDE4NjYgMjYuNDUyNzQgLTY0LjAxODY2IFogTSAtMjguNDUyNzQgLTg5LjYyNTk2ICAiPjwvcGF0aD4gPC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNS42NDU3LC03OS45NDczMSkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKDY0LjUwMjgwNzYxNzE4NzQ5LDUxLjY5OTE0MjQ1NjA1NDY3KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1MS42OTkxNDI0NTYwNTQ2NyIgeD0iNjQuNTAyODA3NjE3MTg3NDkiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI5IiBmaWxsPSJibGFjayI+ZGV2aWNlPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI5MS4xNjkzMTI0NzcxMTE4IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iOSIgZmlsbD0iYmxhY2siPjI8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPC9nPiA8L2c+IDxnIHN0cm9rZT0iIzAwMCI+IDxnIGZpbGw9IiNjZmYiPiA8ZyBzdHJva2U9IiMwMDAiPiA8ZyBmaWxsPSIjY2ZmIj4gPHBhdGggZD0iIE0gLTUwLjM2OTU3IDEyLjgwMzY1IEwgLTEwMy4yNzUwNSAxMi44MDM2NSBDIC0xMDQuMzc5NjQgMTIuODAzNjUgLTEwNS4yNzUwNSAxMS45MDgyMyAtMTA1LjI3NTA1IDEwLjgwMzY1IEwgLTEwNS4yNzUwNSAtMTAuODAzNjUgQyAtMTA1LjI3NTA1IC0xMS45MDgyMyAtMTA0LjM3OTY0IC0xMi44MDM2NSAtMTAzLjI3NTA1IC0xMi44MDM2NSBMIC01MC4zNjk1NyAtMTIuODAzNjUgQyAtNDkuMjY0OTggLTEyLjgwMzY1IC00OC4zNjk1NyAtMTEuOTA4MjMgLTQ4LjM2OTU3IC0xMC44MDM2NSBMIC00OC4zNjk1NyAxMC44MDM2NSBDIC00OC4zNjk1NyAxMS45MDgyMyAtNDkuMjY0OTggMTIuODAzNjUgLTUwLjM2OTU3IDEyLjgwMzY1IFogTSAtMTA1LjI3NTA1IC0xMi44MDM2NSAgIj48L3BhdGg+IDwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTIuNDY4MDIsLTMuMTI1KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoNjQuNTAyODA3NjE3MTg3NDksNTEuNjk5MTQyNDU2MDU0NjcpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI2NC41MDI4MDc2MTcxODc0OSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjkiIGZpbGw9ImJsYWNrIj5kZXZpY2U8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9IjkxLjE2OTMxMjQ3NzExMTgiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI5IiBmaWxsPSJibGFjayI+MzwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8L2c+IDwvZz4gPGcgc3Ryb2tlPSIjMDAwIj4gPGcgZmlsbD0iI2ZmZDliMyI+IDxnIHN0cm9rZT0iIzAwMCI+IDxnIGZpbGw9IiNmZmQ5YjMiPiA8cGF0aCBkPSIgTSAxNy45MTY4NCAxMjMuNzY5MTUgTCAtMTcuOTE2ODQgMTIzLjc2OTE1IEMgLTE5LjAyMTQyIDEyMy43NjkxNSAtMTkuOTE2ODQgMTIyLjg3MzczIC0xOS45MTY4NCAxMjEuNzY5MTUgTCAtMTkuOTE2ODQgMTExLjU0MjggQyAtMTkuOTE2ODQgMTEwLjQzODIyIC0xOS4wMjE0MiAxMDkuNTQyOCAtMTcuOTE2ODQgMTA5LjU0MjggTCAxNy45MTY4NCAxMDkuNTQyOCBDIDE5LjAyMTQyIDEwOS41NDI4IDE5LjkxNjg0IDExMC40MzgyMiAxOS45MTY4NCAxMTEuNTQyOCBMIDE5LjkxNjg0IDEyMS43NjkxNSBDIDE5LjkxNjg0IDEyMi44NzM3MyAxOS4wMjE0MiAxMjMuNzY5MTUgMTcuOTE2ODQgMTIzLjc2OTE1IFogTSAtMTkuOTE2ODQgMTA5LjU0MjggICI+PC9wYXRoPiA8L2c+IDwvZz4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwLjMzNzk4LDExNC42NTU5OCkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKDY0LjUwMjgwNzYxNzE4NzQ5LDUxLjY5OTE0MjQ1NjA1NDY3KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1MS42OTkxNDI0NTYwNTQ2NyIgeD0iNjQuNTAyODA3NjE3MTg3NDkiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI4IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5rPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUyLjgxMDI0MTY5OTIxODczNiIgeD0iNjguOTI4Nzg3MjMxNDQ1MyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjYiIGZpbGw9ImJsYWNrIj4wPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI3My4wOTUzOTc5NDkyMTg3NCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjgiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPiw8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9Ijc2Ljg3MzIyOTk4MDQ2ODc0IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iOCIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+djwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1Mi44MTAyNDE2OTkyMTg3MzYiIHg9IjgxLjAxMjE3NjUxMzY3MTg2IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNiIgZmlsbD0iYmxhY2siPjA8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPC9nPiA8L2c+IDxnIHN0cm9rZT0iIzAwMCI+IDxnIGZpbGw9IiNmZmQ5YjMiPiA8ZyBzdHJva2U9IiMwMDAiPiA8ZyBmaWxsPSIjZmZkOWIzIj4gPHBhdGggZD0iIE0gMTM0LjU3MjgxIDcuMTEzMTcgTCA5OC43MzkxNCA3LjExMzE3IEMgOTcuNjM0NTUgNy4xMTMxNyA5Ni43MzkxNCA2LjIxNzc2IDk2LjczOTE0IDUuMTEzMTcgTCA5Ni43MzkxNCAtNS4xMTMxNyBDIDk2LjczOTE0IC02LjIxNzc2IDk3LjYzNDU1IC03LjExMzE3IDk4LjczOTE0IC03LjExMzE3IEwgMTM0LjU3MjgxIC03LjExMzE3IEMgMTM1LjY3NzQgLTcuMTEzMTcgMTM2LjU3MjgxIC02LjIxNzc2IDEzNi41NzI4MSAtNS4xMTMxNyBMIDEzNi41NzI4MSA1LjExMzE3IEMgMTM2LjU3MjgxIDYuMjE3NzYgMTM1LjY3NzQgNy4xMTMxNyAxMzQuNTcyODEgNy4xMTMxNyBaIE0gOTYuNzM5MTQgLTcuMTEzMTcgICI+PC9wYXRoPiA8L2c+IDwvZz4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA2LjMxOCwtMi4wKSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoNjQuNTAyODA3NjE3MTg3NDksNTEuNjk5MTQyNDU2MDU0NjcpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI2NC41MDI4MDc2MTcxODc0OSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjgiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPms8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTIuODEwMjQxNjk5MjE4NzM2IiB4PSI2OC45Mjg3ODcyMzE0NDUzIiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNiIgZmlsbD0iYmxhY2siPjE8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9IjczLjA5NTM5Nzk0OTIxODc0IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iOCIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+LDwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1MS42OTkxNDI0NTYwNTQ2NyIgeD0iNzYuODczMjI5OTgwNDY4NzQiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI4IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj52PC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUyLjgxMDI0MTY5OTIxODczNiIgeD0iODEuMDEyMTc2NTEzNjcxODYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI2IiBmaWxsPSJibGFjayI+MTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8L2c+IDwvZz4gPGcgc3Ryb2tlPSIjMDAwIj4gPGcgZmlsbD0iI2ZmZDliMyI+IDxnIHN0cm9rZT0iIzAwMCI+IDxnIGZpbGw9IiNmZmQ5YjMiPiA8cGF0aCBkPSIgTSAxNy45MTY4NCAtMTA5LjU0MjggTCAtMTcuOTE2ODQgLTEwOS41NDI4IEMgLTE5LjAyMTQyIC0xMDkuNTQyOCAtMTkuOTE2ODQgLTExMC40MzgyMiAtMTkuOTE2ODQgLTExMS41NDI4IEwgLTE5LjkxNjg0IC0xMjEuNzY5MTUgQyAtMTkuOTE2ODQgLTEyMi44NzM3MyAtMTkuMDIxNDIgLTEyMy43NjkxNSAtMTcuOTE2ODQgLTEyMy43NjkxNSBMIDE3LjkxNjg0IC0xMjMuNzY5MTUgQyAxOS4wMjE0MiAtMTIzLjc2OTE1IDE5LjkxNjg0IC0xMjIuODczNzMgMTkuOTE2ODQgLTEyMS43NjkxNSBMIDE5LjkxNjg0IC0xMTEuNTQyOCBDIDE5LjkxNjg0IC0xMTAuNDM4MjIgMTkuMDIxNDIgLTEwOS41NDI4IDE3LjkxNjg0IC0xMDkuNTQyOCBaIE0gLTE5LjkxNjg0IC0xMjMuNzY5MTUgICI+PC9wYXRoPiA8L2c+IDwvZz4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwLjMzNzk4LC0xMTguNjU1OTgpIj4gPGcgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InNjYWxlKC0xLDEpIHRyYW5zbGF0ZSg2NC41MDI4MDc2MTcxODc0OSw1MS42OTkxNDI0NTYwNTQ2Nykgc2NhbGUoLTEsLTEpIj48ZyBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIj4gPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9IjY0LjUwMjgwNzYxNzE4NzQ5IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iOCIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+azwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1Mi44MTAyNDE2OTkyMTg3MzYiIHg9IjY4LjkyODc4NzIzMTQ0NTMiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI2IiBmaWxsPSJibGFjayI+MjwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1MS42OTkxNDI0NTYwNTQ2NyIgeD0iNzMuMDk1Mzk3OTQ5MjE4NzQiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI4IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj4sPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI3Ni44NzMyMjk5ODA0Njg3NCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjgiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPnY8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTIuODEwMjQxNjk5MjE4NzM2IiB4PSI4MS4wMTIxNzY1MTM2NzE4NiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjYiIGZpbGw9ImJsYWNrIj4yPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDwvZz4gPC9nPiA8ZyBzdHJva2U9IiMwMDAiPiA8ZyBmaWxsPSIjZmZkOWIzIj4gPGcgc3Ryb2tlPSIjMDAwIj4gPGcgZmlsbD0iI2ZmZDliMyI+IDxwYXRoIGQ9IiBNIC05OC43MzkxNCA3LjExMzE3IEwgLTEzNC41NzI4MSA3LjExMzE3IEMgLTEzNS42Nzc0IDcuMTEzMTcgLTEzNi41NzI4MSA2LjIxNzc2IC0xMzYuNTcyODEgNS4xMTMxNyBMIC0xMzYuNTcyODEgLTUuMTEzMTcgQyAtMTM2LjU3MjgxIC02LjIxNzc2IC0xMzUuNjc3NCAtNy4xMTMxNyAtMTM0LjU3MjgxIC03LjExMzE3IEwgLTk4LjczOTE0IC03LjExMzE3IEMgLTk3LjYzNDU1IC03LjExMzE3IC05Ni43MzkxNCAtNi4yMTc3NiAtOTYuNzM5MTQgLTUuMTEzMTcgTCAtOTYuNzM5MTQgNS4xMTMxNyBDIC05Ni43MzkxNCA2LjIxNzc2IC05Ny42MzQ1NSA3LjExMzE3IC05OC43MzkxNCA3LjExMzE3IFogTSAtMTM2LjU3MjgxIC03LjExMzE3ICAiPjwvcGF0aD4gPC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjYuOTkzOTYsLTIuMCkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKDY0LjUwMjgwNzYxNzE4NzQ5LDUxLjY5OTE0MjQ1NjA1NDY3KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1MS42OTkxNDI0NTYwNTQ2NyIgeD0iNjQuNTAyODA3NjE3MTg3NDkiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI4IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5rPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUyLjgxMDI0MTY5OTIxODczNiIgeD0iNjguOTI4Nzg3MjMxNDQ1MyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjYiIGZpbGw9ImJsYWNrIj4zPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI3My4wOTUzOTc5NDkyMTg3NCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjgiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPiw8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9Ijc2Ljg3MzIyOTk4MDQ2ODc0IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iOCIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+djwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1Mi44MTAyNDE2OTkyMTg3MzYiIHg9IjgxLjAxMjE3NjUxMzY3MTg2IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNiIgZmlsbD0iYmxhY2siPjM8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPC9nPiA8L2c+IDxnIHN0cm9rZS13aWR0aD0iMC44Ij4gPGcgc3Ryb2tlPSIjYTZhNmE2IiBmaWxsPSIjYTZhNmE2Ij4gPHBhdGggZD0iIE0gNi42MjU0MyA2My44MTg2NiBDIDE3LjEyOTg3IDM5LjQ2MzU4IDI4LjUwMDk5IDI2LjUzMjkzIDQ3LjI4OTc4IDE1LjM5MDY2ICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC44NjAwOCwtMC41MTAwNiwwLjUxMDA2LDAuODYwMDgsNDcuMjg5NzYsMTUuMzkwNjYpIj4gPHBhdGggZD0iIE0gNC42Nzk5IDAuMCBDIDMuMjkzMjQgMC4yNiAxLjAzOTk4IDEuMDM5OTggLTAuNTE5OTkgMS45NDk5NSBMIC0wLjUxOTk5IC0xLjk0OTk1IEMgMS4wMzk5OCAtMS4wMzk5OCAzLjI5MzI0IC0wLjI2IDQuNjc5OSAwLjAgICIgc3Ryb2tlPSJub25lIj48L3BhdGg+ICA8L2c+IDwvZz4gPC9nPiA8ZyBzdHJva2Utd2lkdGg9IjAuOCI+IDxnIHN0cm9rZT0iI2E2YTZhNiIgZmlsbD0iI2E2YTZhNiI+IDxwYXRoIGQ9IiBNIDUxLjMxNDg1IC0xMy4wMDM2NSBDIDI4LjUwMDk5IC0yNi41MzI5MyAxNy4xMjk4NyAtMzkuNDYzNTggOC40Nzg3MSAtNTkuNTIxNTkgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgtMC4zOTYwMSwtMC45MTgyLDAuOTE4MiwtMC4zOTYwMSw4LjQ3ODcxLC01OS41MjE1OSkiPiA8cGF0aCBkPSIgTSA0LjY3OTkgMC4wIEMgMy4yOTMyNCAwLjI2IDEuMDM5OTggMS4wMzk5OCAtMC41MTk5OSAxLjk0OTk1IEwgLTAuNTE5OTkgLTEuOTQ5OTUgQyAxLjAzOTk4IC0xLjAzOTk4IDMuMjkzMjQgLTAuMjYgNC42Nzk5IDAuMCAgIiBzdHJva2U9Im5vbmUiPjwvcGF0aD4gIDwvZz4gPC9nPiA8L2c+IDxnIHN0cm9rZS13aWR0aD0iMC44Ij4gPGcgc3Ryb2tlPSIjYTZhNmE2IiBmaWxsPSIjYTZhNmE2Ij4gPHBhdGggZD0iIE0gLTYuNjI1NDMgLTYzLjgxODY2IEMgLTE3LjEyOTg3IC0zOS40NjM1OCAtMjguNTAwOTkgLTI2LjUzMjkzIC00Ny4yODk3OCAtMTUuMzkwNjYgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgtMC44NjAwOCwwLjUxMDA2LC0wLjUxMDA2LC0wLjg2MDA4LC00Ny4yODk3NiwtMTUuMzkwNjYpIj4gPHBhdGggZD0iIE0gNC42Nzk5IDAuMCBDIDMuMjkzMjQgMC4yNiAxLjAzOTk4IDEuMDM5OTggLTAuNTE5OTkgMS45NDk5NSBMIC0wLjUxOTk5IC0xLjk0OTk1IEMgMS4wMzk5OCAtMS4wMzk5OCAzLjI5MzI0IC0wLjI2IDQuNjc5OSAwLjAgICIgc3Ryb2tlPSJub25lIj48L3BhdGg+ICA8L2c+IDwvZz4gPC9nPiA8ZyBzdHJva2Utd2lkdGg9IjAuOCI+IDxnIHN0cm9rZT0iI2E2YTZhNiIgZmlsbD0iI2E2YTZhNiI+IDxwYXRoIGQ9IiBNIC01MS4zMTQ4NSAxMy4wMDM2NSBDIC0yOC41MDA5OSAyNi41MzI5MyAtMTcuMTI5ODcgMzkuNDYzNTggLTguNDc4NzEgNTkuNTIxNTkgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjM5NjAxLDAuOTE4MiwtMC45MTgyLDAuMzk2MDEsLTguNDc4NzEsNTkuNTIxNTkpIj4gPHBhdGggZD0iIE0gNC42Nzk5IDAuMCBDIDMuMjkzMjQgMC4yNiAxLjAzOTk4IDEuMDM5OTggLTAuNTE5OTkgMS45NDk5NSBMIC0wLjUxOTk5IC0xLjk0OTk1IEMgMS4wMzk5OCAtMS4wMzk5OCAzLjI5MzI0IC0wLjI2IDQuNjc5OSAwLjAgICIgc3Ryb2tlPSJub25lIj48L3BhdGg+ICA8L2c+IDwvZz4gPC9nPiA8ZyBzdHJva2U9IiM4MDgwODAiIGZpbGw9IiM4MDgwODAiPiA8ZyBzdHJva2U9IiM4MDgwODAiIGZpbGw9IiM4MDgwODAiPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00MC42OTQ1LC0zLjQ3MjIxKSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoNjQuNTAyODA3NjE3MTg3NDksNTEuNjk5MTQyNDU2MDU0NjcpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzgwODA4MCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjUxLjY5OTE0MjQ1NjA1NDY3IiB4PSI2NC41MDI4MDc2MTcxODc0OSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSIjODA4MDgwIj5LVjwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI1MS42OTkxNDI0NTYwNTQ2NyIgeD0iODEuNDQ3MzE5MDMwNzYxNyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSIjODA4MDgwIj5ibG88L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9Ijk0LjI4MDcwNDQ5ODI5MSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSIjODA4MDgwIj5ja3M8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNTEuNjk5MTQyNDU2MDU0NjciIHg9IjExMC43ODA3NDY0NTk5NjA5MSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSIjODA4MDgwIj5jaXJjdWxhdGU8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPC9nPiA8L2c+IDwvZz4gPC9nPjwvc3ZnPg==" alt="tikz diagram" loading="lazy" decoding="async"><figcaption><em>source code</em><button class="source-code-button" aria-label="copy source code for this tikz graph" title="copy source code for this tikz graph"><svg class="source-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><use href="#code-icon"></use></svg><svg class="check-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 16 16" fill="currentColor" stroke="none" stroke-width="0" stroke-linecap="round" stroke-linejoin="round"><use href="#github-check"></use></svg></button></figcaption></figure>

```jsx imports={Zoomable,RingRotation}
<Zoomable label="ring attention rotation">
  <RingRotation
    caption="step the ring, watch each device accrue all $p$ slices while its own cache stays at $L/p$."
    devices={4}
  />
</Zoomable>
```

