Files
papers/evmgpu-benchmark/sections/13-named-competitor-comparison.tex
zeekay 21038c00b9 papers: add named-competitor comparison-table scaffolds + repro spec to 5 benchmark papers
Add explicit, literature-backed comparison scaffolds to:
- lux-pq-consensus-benchmarks (sec 09): vs Mysticeti-C, HotStuff/-2, Tendermint, Snowman
- lux-quasar-benchmarks (sec 15): vs Mysticeti-C, HotStuff-2, CometBFT, Snowman, TowerBFT
- lux-fhe-benchmarks (sec 12): vs TFHE-rs, Concrete, OpenFHE, Microsoft SEAL
- lux-zap-benchmarks (sec 14): vs Protobuf, FlatBuffers, Cap'n Proto, gRPC, QUIC, JSON-RPC
- evmgpu-benchmark (sec 13): vs geth, reth, erigon, evmone, Block-STM, pevm

Lux/competitor columns explicitly marked [TBD-measure] where not yet
benchmarked against the competitor's own published harness. Every
competitor cell is sourced to a cited paper, repo benchmark, or
vendor doc. Each scaffold ends with a Reproducibility spec
(hardware, software pins, commands, decision rule) for the actual
controlled run.

No invented Lux numbers; existing internal numbers retained but
flagged as not-yet-apples-to-apples vs literature.
2026-05-13 01:09:15 -07:00

123 lines
6.4 KiB
TeX

\section{Named-Competitor Comparison Scaffold}
\label{sec:evmgpu-named-comp}
%% ============================================================================
This section pins the EVM acceleration claim to specific competitors with
their published numbers. Lux columns are \texttt{[TBD-measure]} except
where this paper has already measured the value (those cells cite the
relevant internal section).
\subsection{Competitors and Why}
\begin{itemize}
\item \textbf{geth} (\texttt{go-ethereum})~\cite{gethgithub} ---
Ethereum mainnet reference client; the baseline every other
execution layer is measured against.
\item \textbf{reth} (Paradigm)~\cite{rethgithub,paradigmreth2024} ---
Rust execution client. Paradigm's published target is 1\,Ggas/s;
their April 2024 post reports 100--200\,Mgas/s live sync and
a 690\,Mgas/s historical-sync run on opBNB.
\item \textbf{erigon} (\texttt{erigontech/erigon})~\cite{erigongithub}
--- Go execution client with staged sync; widely reported as
4$\times$ faster than geth on historical sync~\cite{chainstackgetherigon}.
\item \textbf{evmone} (\texttt{ipsilon/evmone})~\cite{evmonegithub} ---
C++ interpreter; baseline for ``how fast can the interpreter
alone go'' (already measured in this paper).
\item \textbf{pevm} / Block-STM (Aptos, Risechain)~\cite{blockstmppopp,pevmrise}
--- parallel-EVM baselines. Block-STM publishes up to 170k
TPS / 32-thread; pevm reports similar magnitudes on EVM.
\end{itemize}
\subsection{Throughput Scaffold}
\begin{table}[h]
\centering
\small
\begin{tabular}{@{}lllrl@{}}
\toprule
\textbf{Client} & \textbf{Backend} & \textbf{Workload} & \textbf{Throughput} & \textbf{Source} \\
\midrule
\textbf{Lux GPU EVM kernel} & Metal (M1 Max) & opcode mix & 85.9\,M ops/s & Tab.~\ref{tab:peak} \\
\textbf{Lux C++ evmone+state} & CPU & full block & 20.9\,Ggas/s & Tab.~\ref{tab:cpp_vs_go} \\
\textbf{Lux Go EVM (baseline)} & CPU & full block & 4.2--5.4\,Ggas/s & Tab.~\ref{tab:cpp_vs_go} \\
\textbf{Lux + parallel ecrecover} & 10-core CPU & block w/ sigs & 7.1$\times$ over 1-core & Tab.~\ref{tab:ecrecover} \\
\midrule
geth (latest) & CPU & live mainnet sync & $\sim$25--50\,Mgas/s (typ.) & \cite{gethgithub,paradigmreth2024} \\
reth (Paradigm) & CPU & live mainnet sync & 100--200\,Mgas/s & \cite{paradigmreth2024} \\
reth (Paradigm) & CPU & historical opBNB sync & 690\,Mgas/s & \cite{paradigmreth2024} \\
erigon & CPU & full sync vs.\ geth & 4$\times$ geth & \cite{chainstackgetherigon} \\
evmone (C++ interp.) & CPU & interp.-only & $\sim$416\,Ggas/s & this paper, Tab.~\ref{tab:cpp_vs_go} \\
Block-STM (Aptos) & 32-thread CPU & Aptos workload & up to 170k TPS & \cite{blockstmppopp} \\
Block-STM (Diem) & 32-thread CPU & Diem workload & up to 110k TPS & \cite{blockstmppopp} \\
\bottomrule
\end{tabular}
\caption{EVM/execution throughput comparison scaffold. Lux rows are
already measured (this paper); the comparison is against the cited
upstream-published numbers. The units differ deliberately (TPS vs.\ Mgas/s
vs.\ opcodes/s) --- the Reproducibility spec below unifies them.}
\label{tab:evmgpu-comparison}
\end{table}
\subsection{Crypto Bottleneck Comparison}
\begin{table}[h]
\centering
\small
\begin{tabular}{@{}lrrl@{}}
\toprule
\textbf{Operation} & \textbf{Lux (this paper)} & \textbf{Baseline} & \textbf{Source} \\
\midrule
\texttt{ecrecover} (single) & \texttt{[TBD-measure]} & $\sim$60--100\,\textmu s (\texttt{secp256k1}) & \cite{secp256k1lib} \\
\texttt{ecrecover} parallel & 7.1$\times$ on 10 cores & linear scaling (lib-limited) & Tab.~\ref{tab:ecrecover} \\
\texttt{ecrecover} GPU (Metal) & 20--24$\times$ vs.\ CPU (Lux memory) & none published & \texttt{[TBD-baseline]} \\
BLS12-381 aggregate verify & \texttt{[TBD-measure]} & blst 1.0--1.5\,ms (n$\sim$128) & \cite{supranationalblstevm} \\
\bottomrule
\end{tabular}
\caption{Crypto-operation comparison. \texttt{ecrecover} dominates 87\%
of Go EVM block-processing time (Sec.~5, Tab.~\ref{tab:profile}), so this
is the highest-leverage row to populate.}
\label{tab:evmgpu-crypto}
\end{table}
\subsection{Reproducibility Specification}
\label{sec:evmgpu-repro}
To turn the unit-normalised entries in Table~\ref{tab:evmgpu-comparison}
into apples-to-apples cells, all five backends must be re-run on the
same machine against the same trace.
\begin{itemize}
\item \textbf{Hardware.} (1) Apple M1 Max 64\,GiB (matches this paper's
existing measurements); (2) AWS \texttt{c7i.16xlarge} (Intel
Sapphire Rapids, 64 vCPU); (3) AWS \texttt{p4d.24xlarge} (8$\times$A100)
for the GPU path.
\item \textbf{Workload.} Replay mainnet blocks 17{,}000{,}000 --
17{,}010{,}000 (10k blocks, $\sim$30\,M gas avg, $\sim$160\,M
tx-sigs total). This is the same range Paradigm used in
\cite{paradigmreth2024}.
\item \textbf{Builds.} \texttt{ethereum/go-ethereum@latest};
\texttt{paradigmxyz/reth@latest}; \texttt{erigontech/erigon@latest};
\texttt{ipsilon/evmone@latest}; \texttt{risechain/pevm@latest}.
\item \textbf{Metric normalisation.} Report Mgas/s for every backend;
TPS only as a secondary metric (since gas-per-tx varies). Walltime
of full replay; CPU\%/thread; peak RSS; disk read GB.
\item \textbf{Commands.}
\begin{verbatim}
# reth (sync from snapshot to block 17_010_000)
reth import --chain mainnet ./mainnet-17M.rlp
# geth (import RLP)
geth import ./mainnet-17M.rlp
# erigon (stage sync to specific block)
erigon --chain mainnet --datadir ./erigon-data
# Lux (this paper)
bench-evmgpu --replay ./mainnet-17M.rlp --backend gpu
\end{verbatim}
\item \textbf{Decision rule.} Lux GPU EVM wins only if Mgas/s on the
Apple M1 Max GPU path \emph{exceeds reth on a comparable-class
CPU machine}, measured on the same RLP range. The current
4.85$\times$ headline is opcodes/s, not gas/s --- the
gas/s number on the same trace is the falsifiable claim.
\end{itemize}
%% ============================================================================