mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
Restructured from flat .tex/.pdf files into per-paper subdirectories. Added Antje Worring as co-author on all papers. Synced PDFs to pdfs/ for download site.
128 lines
3.6 KiB
TeX
128 lines
3.6 KiB
TeX
\section{Benchmarks}
|
|
|
|
\label{sec:benchmarks}
|
|
%% ============================================================================
|
|
|
|
\subsection{GPU EVM Kernel}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrrr}
|
|
\toprule
|
|
\textbf{Metric} & \textbf{CPU} & \textbf{GPU} & \textbf{Speedup} \\
|
|
\midrule
|
|
Peak opcodes/sec & 17.7\,M & 85.9\,M & 4.85$\times$ \\
|
|
\addlinespace
|
|
\multicolumn{4}{l}{\textit{By transaction complexity (50k txs):}} \\
|
|
500 ops/tx (crossover) & --- & --- & 1.0$\times$ \\
|
|
2{,}000 ops/tx & --- & --- & 2.08$\times$ \\
|
|
5{,}000 ops/tx & --- & --- & 2.83$\times$ \\
|
|
10{,}000 ops/tx & --- & --- & 3.09$\times$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{GPU EVM kernel performance. Apple M1 Max, 32-core Metal GPU.
|
|
Peak measured at 50k txs $\times$ 5k ops = 250M total opcodes.}
|
|
\label{tab:gpu_evm}
|
|
\end{table}
|
|
|
|
\subsection{C++ EVM vs Go EVM}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrrr}
|
|
\toprule
|
|
\textbf{Implementation} & \textbf{Throughput} & \textbf{Best} & \textbf{vs Go} \\
|
|
\midrule
|
|
Go EVM (EVM only) & 4.2--5.4\,Ggas/s & 5.4\,Ggas/s & 1.0$\times$ \\
|
|
C++ evmone++ (full state) & 20.9\,Ggas/s & 23.4\,Ggas/s & \textbf{5.1$\times$} \\
|
|
C++ evmone++ (interpreter) & 416\,Ggas/s & --- & 96$\times$ \\
|
|
\midrule
|
|
Go EVM (total with sigs) & 534--1{,}038\,Mgas/s & --- & --- \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{EVM throughput comparison. ``EVM only'' = signatures pre-cached.
|
|
``Total with sigs'' = end-to-end including secp256k1 ecrecover.}
|
|
\label{tab:cpp_go}
|
|
\end{table}
|
|
|
|
\subsection{Profiling Breakdown}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrr}
|
|
\toprule
|
|
\textbf{Phase} & \textbf{Time (10k txs)} & \textbf{Fraction} \\
|
|
\midrule
|
|
secp256k1 ecrecover & 334\,ms & 87\% \\
|
|
EVM execution & 51\,ms & 13\% \\
|
|
\midrule
|
|
Total & 385\,ms & 100\% \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Go EVM block processing breakdown. 10{,}000 ETH transfers, Apple M1 Max.}
|
|
\label{tab:profile}
|
|
\end{table}
|
|
|
|
\subsection{Parallel ecrecover}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrr}
|
|
\toprule
|
|
\textbf{Configuration} & \textbf{Time} & \textbf{Speedup} \\
|
|
\midrule
|
|
1 CPU core (sequential) & 334\,ms & 1.0$\times$ \\
|
|
10 CPU cores (parallel) & 47\,ms & 7.1$\times$ \\
|
|
\midrule
|
|
End-to-end (sequential) & 385\,ms & --- \\
|
|
End-to-end (parallel sig)& 98\,ms & 3.9$\times$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Parallel ecrecover. 10{,}000 transactions, Apple M1 Max.}
|
|
\label{tab:ecrecover}
|
|
\end{table}
|
|
|
|
\subsection{GPU Memory Scaling}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{rrr}
|
|
\toprule
|
|
\textbf{Transactions} & \textbf{GPU Memory} & \textbf{Per-tx} \\
|
|
\midrule
|
|
10{,}000 & 732\,MB & 73\,KB \\
|
|
50{,}000 & 3.7\,GB & 74\,KB \\
|
|
100{,}000 & 7.3\,GB & 73\,KB \\
|
|
\midrule
|
|
\multicolumn{2}{l}{Persistent state} & $\sim$5\,GB \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{GPU memory consumption. Linear scaling at $\sim$73\,KB per transaction.}
|
|
\label{tab:memory}
|
|
\end{table}
|
|
|
|
\subsection{Cryptographic Acceleration}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrrl}
|
|
\toprule
|
|
\textbf{Operation} & \textbf{CPU} & \textbf{GPU/Parallel} & \textbf{Speedup} \\
|
|
\midrule
|
|
Keccak-256 & 1.3\,Mhash/s & 17.1\,Mhash/s & 13.2$\times$ \\
|
|
EVM opcodes & 17.7\,M/s & 85.9\,M/s & 4.85$\times$ \\
|
|
ecrecover (10k txs) & 334\,ms & 47\,ms & 7.1$\times$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Measured acceleration across all benchmarked operations.}
|
|
\label{tab:accel}
|
|
\end{table}
|
|
|
|
%% ============================================================================
|