|
1 | | -% RingKernel: A GPU-Native Persistent Actor Model |
2 | | -% Technical Paper - Main Document |
| 1 | +% The GPU-Native Persistent Actor Model |
| 2 | +% Technical Paper - arXiv Preprint Style |
3 | 3 | % |
4 | | -% Target venues: arXiv (cs.DC, cs.PL), ASPLOS, EuroSys, PLDI, PPoPP |
| 4 | +% Describes a paradigm for treating GPU compute units as actors with |
| 5 | +% persistent kernels, lock-free message passing, and causal ordering. |
5 | 6 | % |
6 | | -\documentclass[11pt,a4paper]{article} |
7 | | - |
8 | | -% Page geometry |
9 | | -\usepackage[margin=1in]{geometry} |
| 7 | +% Implementations: RingKernel (Rust), DotCompute (.NET), Orleans.GpuBridge, RustGraph |
| 8 | +% |
| 9 | +% Target: arXiv (cs.DC, cs.PL, cs.AR) |
| 10 | +% |
| 11 | +\documentclass[11pt,letterpaper]{article} |
| 12 | + |
| 13 | +%% ============================================================================ |
| 14 | +%% arXiv-style formatting |
| 15 | +%% ============================================================================ |
| 16 | + |
| 17 | +% Page geometry - generous margins for readability |
| 18 | +\usepackage[ |
| 19 | + letterpaper, |
| 20 | + top=1in, |
| 21 | + bottom=1in, |
| 22 | + left=1.25in, |
| 23 | + right=1.25in |
| 24 | +]{geometry} |
| 25 | + |
| 26 | +% Typography |
| 27 | +\usepackage[T1]{fontenc} |
| 28 | +\usepackage{lmodern} % Latin Modern fonts |
| 29 | +\usepackage{microtype} % Improved typography |
| 30 | +\usepackage{setspace} |
| 31 | +\setstretch{1.15} % Slightly increased line spacing |
| 32 | + |
| 33 | +% Math |
| 34 | +\usepackage{amsmath} |
| 35 | +\usepackage{amssymb} |
| 36 | +\usepackage{amsthm} |
10 | 37 |
|
11 | | -% Packages |
| 38 | +% Tables and figures |
12 | 39 | \usepackage{booktabs} |
| 40 | +\usepackage{multirow} |
13 | 41 | \usepackage{subcaption} |
| 42 | +\usepackage{graphicx} |
| 43 | +\usepackage{float} |
| 44 | + |
| 45 | +% Code listings |
14 | 46 | \usepackage{listings} |
15 | 47 | \usepackage{xcolor} |
| 48 | + |
| 49 | +% Graphics |
16 | 50 | \usepackage{tikz} |
17 | 51 | \usepackage{pgfplots} |
18 | | -% algorithm/algpseudocode removed - use lstlisting for pseudocode |
| 52 | +\pgfplotsset{compat=1.16} |
| 53 | +\usetikzlibrary{shapes,arrows,positioning,fit,calc} |
| 54 | + |
| 55 | +% References and links |
19 | 56 | \usepackage{hyperref} |
20 | | -\usepackage{amsmath} |
21 | | -\usepackage{amssymb} |
22 | | -\usepackage{graphicx} |
23 | | -\usepackage{multirow} |
24 | 57 | \usepackage{url} |
25 | | -\usepackage{natbib} |
| 58 | +\usepackage[numbers,sort&compress]{natbib} |
26 | 59 |
|
27 | | -\pgfplotsset{compat=1.16} |
28 | | -\usetikzlibrary{shapes,arrows,positioning,fit,calc} |
| 60 | +% Author handling |
| 61 | +\usepackage{authblk} |
| 62 | +\usepackage{orcidlink} % ORCID icons |
29 | 63 |
|
30 | | -% Hyperref setup |
| 64 | +%% ============================================================================ |
| 65 | +%% Hyperref setup |
| 66 | +%% ============================================================================ |
31 | 67 | \hypersetup{ |
32 | 68 | colorlinks=true, |
33 | | - linkcolor=blue, |
| 69 | + linkcolor=blue!70!black, |
34 | 70 | filecolor=magenta, |
35 | | - urlcolor=cyan, |
36 | | - citecolor=blue, |
| 71 | + urlcolor=blue!70!black, |
| 72 | + citecolor=green!50!black, |
| 73 | + pdftitle={The GPU-Native Persistent Actor Model}, |
| 74 | + pdfauthor={Michael Ivertowski}, |
| 75 | + pdfsubject={GPU Computing, Actor Model, Distributed Systems}, |
| 76 | + pdfkeywords={Actor Model, GPU, CUDA, Persistent Kernels, HLC} |
37 | 77 | } |
38 | 78 |
|
39 | | -% Code listing style for Rust |
| 79 | +%% ============================================================================ |
| 80 | +%% Code listing styles |
| 81 | +%% ============================================================================ |
| 82 | + |
| 83 | +% Rust |
40 | 84 | \lstdefinelanguage{Rust}{ |
41 | 85 | keywords={fn, let, mut, if, else, match, for, while, loop, return, struct, enum, impl, trait, pub, use, mod, async, await, self, Self, where, type, const, static, unsafe, extern, crate, super}, |
42 | | - keywordstyle=\color{blue}\bfseries, |
43 | | - keywords=[2]{i32, i64, u32, u64, f32, f64, bool, usize, isize, String, Vec, Option, Result, Arc, Box}, |
44 | | - keywordstyle=[2]\color{teal}, |
| 86 | + keywordstyle=\color{blue!80!black}\bfseries, |
| 87 | + keywords=[2]{i32, i64, u32, u64, f32, f64, bool, usize, isize, String, Vec, Option, Result, Arc, Box, AtomicU32, AtomicU64}, |
| 88 | + keywordstyle=[2]\color{teal!80!black}, |
45 | 89 | comment=[l]{//}, |
46 | 90 | morecomment=[s]{/*}{*/}, |
47 | 91 | commentstyle=\color{gray}\itshape, |
48 | | - stringstyle=\color{red}, |
| 92 | + stringstyle=\color{red!70!black}, |
49 | 93 | morestring=[b]", |
50 | 94 | basicstyle=\ttfamily\small, |
51 | 95 | breaklines=true, |
52 | 96 | showstringspaces=false, |
53 | 97 | tabsize=2, |
54 | 98 | } |
55 | 99 |
|
56 | | -% Code listing style for CUDA |
| 100 | +% CUDA |
57 | 101 | \lstdefinelanguage{CUDA}{ |
58 | 102 | language=C++, |
59 | | - morekeywords={__global__, __device__, __shared__, __host__, threadIdx, blockIdx, blockDim, gridDim, atomicAdd, atomicCAS, __syncthreads}, |
60 | | - keywordstyle=\color{blue}\bfseries, |
| 103 | + morekeywords={__global__, __device__, __shared__, __host__, threadIdx, blockIdx, blockDim, gridDim, atomicAdd, atomicCAS, __syncthreads, __threadfence}, |
| 104 | + keywordstyle=\color{blue!80!black}\bfseries, |
61 | 105 | commentstyle=\color{gray}\itshape, |
62 | | - stringstyle=\color{red}, |
| 106 | + stringstyle=\color{red!70!black}, |
63 | 107 | basicstyle=\ttfamily\small, |
64 | 108 | breaklines=true, |
65 | 109 | showstringspaces=false, |
|
68 | 112 | \lstset{ |
69 | 113 | language=Rust, |
70 | 114 | frame=single, |
| 115 | + framerule=0.5pt, |
| 116 | + rulecolor=\color{gray!50}, |
71 | 117 | numbers=left, |
72 | 118 | numberstyle=\tiny\color{gray}, |
73 | 119 | xleftmargin=2em, |
74 | 120 | framexleftmargin=1.5em, |
| 121 | + backgroundcolor=\color{gray!5}, |
| 122 | + captionpos=b, |
75 | 123 | } |
76 | 124 |
|
77 | | -% Document metadata |
78 | | -\title{\textbf{RingKernel: A GPU-Native Persistent Actor Model for\\High-Performance Concurrent Computing}} |
| 125 | +%% ============================================================================ |
| 126 | +%% Custom commands |
| 127 | +%% ============================================================================ |
| 128 | +\newcommand{\arxiv}[1]{\href{https://arxiv.org/abs/#1}{arXiv:#1}} |
| 129 | +\newcommand{\github}[1]{\href{https://github.com/#1}{\texttt{github.com/#1}}} |
79 | 130 |
|
80 | | -\author{ |
81 | | - Michael Ivertowski\\ |
82 | | - \textit{Independent Researcher}\\ |
83 | | - Zurich, Switzerland\\ |
84 | | - \texttt{mivertowski@outlook.com} |
| 131 | +%% ============================================================================ |
| 132 | +%% Document metadata |
| 133 | +%% ============================================================================ |
| 134 | + |
| 135 | +\title{% |
| 136 | + \LARGE\textbf{The GPU-Native Persistent Actor Model:}\\[0.3em] |
| 137 | + \Large\textbf{Bringing Actor Semantics to Massively Parallel Hardware} |
| 138 | +} |
| 139 | + |
| 140 | +\author[1]{Michael Ivertowski~\orcidlink{0009-0008-7829-2249}} |
| 141 | +\affil[1]{% |
| 142 | + Ernst \& Young AG\\ |
| 143 | + Zurich, Switzerland\\ |
| 144 | + \texttt{michael.ivertowski@ch.ey.com} |
85 | 145 | } |
86 | 146 |
|
87 | | -\date{\today} |
| 147 | +\date{% |
| 148 | + January 2026\\[1em] |
| 149 | + \small\textit{Preprint. Under review.} |
| 150 | +} |
88 | 151 |
|
| 152 | +%% ============================================================================ |
| 153 | +%% Document |
| 154 | +%% ============================================================================ |
89 | 155 | \begin{document} |
90 | 156 |
|
91 | 157 | \maketitle |
92 | 158 |
|
93 | | -% Abstract |
| 159 | +%% Abstract |
94 | 160 | \begin{abstract} |
| 161 | +\noindent |
95 | 162 | \input{sections/00-abstract} |
96 | 163 | \end{abstract} |
97 | 164 |
|
98 | 165 | \vspace{1em} |
99 | | -\noindent\textbf{Keywords:} Actor Model, GPU Computing, Persistent Kernels, Message Passing, CUDA, Hybrid Logical Clocks, Lock-Free Algorithms |
| 166 | +\noindent\textbf{Keywords:} Actor Model, GPU Computing, Persistent Kernels, Message Passing, Hybrid Logical Clocks, Lock-Free Algorithms, CUDA, WebGPU, Distributed Systems, Graph Analytics |
100 | 167 |
|
101 | | -\vspace{1em} |
| 168 | +\vspace{0.5em} |
| 169 | +\noindent\textbf{ACM CCS:} Computer systems organization $\rightarrow$ Parallel architectures; Software and its engineering $\rightarrow$ Concurrent programming structures |
| 170 | + |
| 171 | +\vspace{1.5em} |
102 | 172 |
|
103 | | -% Main content sections |
| 173 | +%% Main content sections |
104 | 174 | \input{sections/01-introduction} |
105 | 175 | \input{sections/02-background} |
106 | 176 | \input{sections/03-related-work} |
|
110 | 180 | \input{sections/07-discussion} |
111 | 181 | \input{sections/08-conclusion} |
112 | 182 |
|
113 | | -% Acknowledgments |
| 183 | +%% Acknowledgments |
114 | 184 | \section*{Acknowledgments} |
115 | 185 | We thank the open-source community for their contributions to the CUDA ecosystem, |
116 | 186 | particularly the cudarc project for Rust CUDA bindings. We also acknowledge the |
117 | 187 | foundational work on the actor model by Carl Hewitt and colleagues. |
118 | 188 |
|
119 | | -% Bibliography |
| 189 | +%% Bibliography |
120 | 190 | \bibliographystyle{plainnat} |
121 | 191 | \bibliography{references} |
122 | 192 |
|
123 | | -% Appendix |
| 193 | +%% Appendix |
124 | 194 | \appendix |
125 | 195 | \input{sections/09-appendix} |
126 | 196 |
|
|
0 commit comments