\documentclass[10pt]{article}

\usepackage{fullpage}
\usepackage{setspace}
\usepackage{parskip}
\usepackage{titlesec}
\usepackage[section]{placeins}
\usepackage{xcolor}
\usepackage{breakcites}
\usepackage{lineno}
\usepackage{hyphenat}





\PassOptionsToPackage{hyphens}{url}
\usepackage[colorlinks = true,
            linkcolor = blue,
            urlcolor  = blue,
            citecolor = blue,
            anchorcolor = blue]{hyperref}
\usepackage{etoolbox}
\makeatletter
\patchcmd\@combinedblfloats{\box\@outputbox}{\unvbox\@outputbox}{}{%
  \errmessage{\noexpand\@combinedblfloats could not be patched}%
}%
\makeatother


\usepackage{natbib}




\renewenvironment{abstract}
  {{\bfseries\noindent{\abstractname}\par\nobreak}\footnotesize}
  {\bigskip}

\titlespacing{\section}{0pt}{*3}{*1}
\titlespacing{\subsection}{0pt}{*2}{*0.5}
\titlespacing{\subsubsection}{0pt}{*1.5}{0pt}


\usepackage{authblk}


\usepackage{graphicx}
\usepackage[space]{grffile}
\usepackage{latexsym}
\usepackage{textcomp}
\usepackage{longtable}
\usepackage{tabulary}
\usepackage{booktabs,array,multirow}
\usepackage{amsfonts,amsmath,amssymb}
\providecommand\citet{\cite}
\providecommand\citep{\cite}
\providecommand\citealt{\cite}
% You can conditionalize code for latexml or normal latex using this.
\newif\iflatexml\latexmlfalse
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}%

\AtBeginDocument{\DeclareGraphicsExtensions{.pdf,.PDF,.eps,.EPS,.png,.PNG,.tif,.TIF,.jpg,.JPG,.jpeg,.JPEG}}

\usepackage[utf8]{inputenc}
\usepackage[ngerman,english]{babel}



\usepackage{float}








\begin{document}

\title{Fluid simulations accelerated with 16 bit: Approaching 4x speedup on
A64FX by squeezing ShallowWaters.jl into Float16}



\author[1,1]{Milan Klöwer}%
\author[2,2]{Sam Hatfield}%
\author[1,1]{Matteo Croci}%
\author[2,2]{Peter Düben}%
\author[1,1]{Tim Palmer}%
\affil[1]{University of Oxford}%
\affil[2]{European Centre for Medium-Range Weather Forecasts}%


\vspace{-1em}



  
  \date{May 27, 2024}


\begingroup
\let\center\flushleft
\let\endcenter\endflushleft
\maketitle
\endgroup





\selectlanguage{english}
\begin{abstract}
Most Earth-system simulations run on conventional CPUs in 64-bit double
precision floating-point numbers Float64, although the need for
high-precision calculations in the presence of large uncertainties has
been questioned. Fugaku, currently the world's fastest supercomputer, is
based on A64FX microprocessors, which also support the 16-bit
low-precision format Float16. We investigate the Float16 performance on
A64FX with ShallowWaters.jl, the first fluid circulation model that runs
entirely with 16-bit arithmetic. The model implements techniques that
address precision and dynamic range issues in 16 bit. The
precision-critical time integration is augmented to include compensated
summation to minimize rounding errors. Such a compensated time
integration is as precise but faster than mixed-precision with 16 and
32-bit floats. As subnormals are inefficiently supported on A64FX the
very limited range available in Float16 is 6.10-5 to 65504. We develop
the analysis-number format Sherlogs.jl to log the arithmetic results
during the simulation. The equations in ShallowWaters.jl are then
systematically rescaled to fit into Float16, using 97\% of the available
representable numbers. Consequently, we benchmark speedups of 3.8x on
A64FX with Float16. Adding a compensated time integration the speedup is
3.6x. Although ShallowWaters.jl is simplified compared to large
Earth-system models, it shares essential algorithms and therefore shows
that 16-bit calculations are indeed a competitive way to accelerate
Earth-system simulations on available hardware.%
\end{abstract}%



\sloppy




\selectlanguage{english}
\FloatBarrier
\end{document}

