Skip to content

Instantly share code, notes, and snippets.

@finbarrtimbers
Created April 3, 2026 03:12
Show Gist options
  • Select an option

  • Save finbarrtimbers/153dae1598b17c75a9690cd848e86818 to your computer and use it in GitHub Desktop.

Select an option

Save finbarrtimbers/153dae1598b17c75a9690cd848e86818 to your computer and use it in GitHub Desktop.

Revisions

  1. finbarrtimbers created this gist Apr 3, 2026.
    114 changes: 114 additions & 0 deletions diagram.tex
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,114 @@
    % ===================== SUBFIGURE A: Static batching =====================
    \begin{subfigure}{\linewidth}
    \centering
    \begin{tikzpicture}
    % Grid (4 rows x 8 cols)
    \gridlines{0}{0}{4}{8}

    % ----- PROMPTS: different lengths per row -----
    % Row index: 1 = top
    % Row 1: length 2
    \fillcell{0}{0}{4}{1}{1}{prompt}
    \fillcell{0}{0}{4}{1}{2}{prompt}
    \celltext{0}{0}{4}{1}{1}{\bfseries S1}

    % Row 2: length 3
    \fillcell{0}{0}{4}{2}{1}{prompt}
    \fillcell{0}{0}{4}{2}{2}{prompt}
    \fillcell{0}{0}{4}{2}{3}{prompt}
    \celltext{0}{0}{4}{2}{1}{\bfseries S2}

    % Row 3: length 1
    \fillcell{0}{0}{4}{3}{1}{prompt}
    \celltext{0}{0}{4}{3}{1}{\bfseries S3}

    % Row 4: length 4
    \fillcell{0}{0}{4}{4}{1}{prompt}
    \fillcell{0}{0}{4}{4}{2}{prompt}
    \fillcell{0}{0}{4}{4}{3}{prompt}
    \fillcell{0}{0}{4}{4}{4}{prompt}
    \celltext{0}{0}{4}{4}{1}{\bfseries S4}

    % ----- GENERATED + END + IDLE (same timing as your mock) -----
    % Row 1: gen at c=3..5, END at 6, idle 7..8
    \foreach \c in {3,4,5} { \fillcell{0}{0}{4}{1}{\c}{gen} }
    \fillcell{0}{0}{4}{1}{6}{eos} \celltext{0}{0}{4}{1}{6}{\bfseries END}
    \foreach \c in {7,8} { \fillcell{0}{0}{4}{1}{\c}{idleshade} }

    % Row 2: gen at c=4,5,6,7; END at 8
    \foreach \c in {4,5,6,7} { \fillcell{0}{0}{4}{2}{\c}{gen} }
    \fillcell{0}{0}{4}{2}{8}{eos} \celltext{0}{0}{4}{2}{8}{\bfseries END}

    % Row 3: gen at c=2,3; END at 4; idle 5..8
    \foreach \c in {2,3} { \fillcell{0}{0}{4}{3}{\c}{gen} }
    \fillcell{0}{0}{4}{3}{4}{eos} \celltext{0}{0}{4}{3}{4}{\bfseries END}
    \foreach \c in {5,6,7,8} { \fillcell{0}{0}{4}{3}{\c}{idleshade} }

    % Row 4: gen at c=5,6; END at 7; idle 8
    \foreach \c in {5,6} { \fillcell{0}{0}{4}{4}{\c}{gen} }
    \fillcell{0}{0}{4}{4}{7}{eos} \celltext{0}{0}{4}{4}{7}{\bfseries END}
    \fillcell{0}{0}{4}{4}{8}{idleshade}
    \end{tikzpicture}
    \caption{Static batching wastes compute after early finishes (gray cells).}
    \end{subfigure}

    \vspace{0.7cm}

    % ===================== SUBFIGURE B: Continuous batching =====================
    \begin{subfigure}{\linewidth}
    \centering
    \begin{tikzpicture}
    % Grid
    \gridlines{0}{0}{4}{8}

    % ----- PROMPTS (same lengths as above) -----
    % Row 1 (S1)
    \fillcell{0}{0}{4}{1}{1}{prompt}
    \fillcell{0}{0}{4}{1}{2}{prompt}
    \celltext{0}{0}{4}{1}{1}{\bfseries S1}

    % Row 2 (S2)
    \foreach \c in {1,2,3} { \fillcell{0}{0}{4}{2}{\c}{prompt} }
    \celltext{0}{0}{4}{2}{1}{\bfseries S2}

    % Row 3 (S3)
    \fillcell{0}{0}{4}{3}{1}{prompt}
    \celltext{0}{0}{4}{3}{1}{\bfseries S3}

    % Row 4 (S4)
    \foreach \c in {1,2,3,4} { \fillcell{0}{0}{4}{4}{\c}{prompt} }
    \celltext{0}{0}{4}{4}{1}{\bfseries S4}

    % ----- GENERATED + END + BACKFILL -----
    % Row 1: gen c=3..5; END at 6; backfill S5 at c=7 prompt, c=8 gen
    \foreach \c in {3,4,5} { \fillcell{0}{0}{4}{1}{\c}{gen} }
    \fillcell{0}{0}{4}{1}{6}{eos} \celltext{0}{0}{4}{1}{6}{\bfseries END}
    \fillcell{0}{0}{4}{1}{7}{prompt}
    \fillcell{0}{0}{4}{1}{8}{gen}
    \celltext{0}{0}{4}{1}{7}{\bfseries S5}

    % Row 2: gen c=4..7; END at 8
    \foreach \c in {4,5,6,7} { \fillcell{0}{0}{4}{2}{\c}{gen} }
    \fillcell{0}{0}{4}{2}{8}{eos} \celltext{0}{0}{4}{2}{8}{\bfseries END}

    % Row 3: gen c=2,3; END at 4; backfill S6 with prompt c=5,6 then gen c=7,8
    \foreach \c in {2,3} { \fillcell{0}{0}{4}{3}{\c}{gen} }
    \fillcell{0}{0}{4}{3}{4}{eos} \celltext{0}{0}{4}{3}{4}{\bfseries END}
    \fillcell{0}{0}{4}{3}{5}{prompt}
    \fillcell{0}{0}{4}{3}{6}{prompt}
    \fillcell{0}{0}{4}{3}{7}{gen}
    \fillcell{0}{0}{4}{3}{8}{gen}
    \celltext{0}{0}{4}{3}{5}{\bfseries S6}

    % Row 4: gen c=5,6; END at 7; backfill S7 with prompt at c=8
    \foreach \c in {5,6} { \fillcell{0}{0}{4}{4}{\c}{gen} }
    \fillcell{0}{0}{4}{4}{7}{eos} \celltext{0}{0}{4}{4}{7}{\bfseries END}
    \fillcell{0}{0}{4}{4}{8}{prompt}
    \celltext{0}{0}{4}{4}{8}{\bfseries S7}
    \end{tikzpicture}
    \caption{Continuous batching backfills finished rows immediately (no gray waste).}
    \end{subfigure}

    \caption{Static vs.\ continuous batching.}
    \label{fig:batching_subfigs}
    \end{figure}