Fluid simulations accelerated with 16 bits: Approaching 4x speedup on A64FX by squeezing ShallowWaters.jl into Float16
Most Earth-system simulations run on conventional central processing units 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...
Main Authors: | , , , , |
---|---|
Format: | Journal article |
Language: | English |
Published: |
Wiley
2022
|
_version_ | 1797099430094045184 |
---|---|
author | Klöwer, M Hatfield, S Croci, M Düben, PD Palmer, TN |
author_facet | Klöwer, M Hatfield, S Croci, M Düben, PD Palmer, TN |
author_sort | Klöwer, M |
collection | OXFORD |
description | Most Earth-system simulations run on conventional central processing units 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 bits. 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 65,504. 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 up to 3.8x on A64FX with Float16. Adding a compensated time integration, speedups reach up to 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.
|
first_indexed | 2024-03-07T05:23:35Z |
format | Journal article |
id | oxford-uuid:dfc6648e-f50f-43ae-98dd-e92bb3482059 |
institution | University of Oxford |
language | English |
last_indexed | 2024-03-07T05:23:35Z |
publishDate | 2022 |
publisher | Wiley |
record_format | dspace |
spelling | oxford-uuid:dfc6648e-f50f-43ae-98dd-e92bb34820592022-03-27T09:41:52ZFluid simulations accelerated with 16 bits: Approaching 4x speedup on A64FX by squeezing ShallowWaters.jl into Float16Journal articlehttp://purl.org/coar/resource_type/c_dcae04bcuuid:dfc6648e-f50f-43ae-98dd-e92bb3482059EnglishSymplectic ElementsWiley2022Klöwer, MHatfield, SCroci, MDüben, PDPalmer, TNMost Earth-system simulations run on conventional central processing units 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 bits. 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 65,504. 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 up to 3.8x on A64FX with Float16. Adding a compensated time integration, speedups reach up to 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. |
spellingShingle | Klöwer, M Hatfield, S Croci, M Düben, PD Palmer, TN Fluid simulations accelerated with 16 bits: Approaching 4x speedup on A64FX by squeezing ShallowWaters.jl into Float16 |
title | Fluid simulations accelerated with 16 bits: Approaching 4x speedup on A64FX by squeezing ShallowWaters.jl into Float16 |
title_full | Fluid simulations accelerated with 16 bits: Approaching 4x speedup on A64FX by squeezing ShallowWaters.jl into Float16 |
title_fullStr | Fluid simulations accelerated with 16 bits: Approaching 4x speedup on A64FX by squeezing ShallowWaters.jl into Float16 |
title_full_unstemmed | Fluid simulations accelerated with 16 bits: Approaching 4x speedup on A64FX by squeezing ShallowWaters.jl into Float16 |
title_short | Fluid simulations accelerated with 16 bits: Approaching 4x speedup on A64FX by squeezing ShallowWaters.jl into Float16 |
title_sort | fluid simulations accelerated with 16 bits approaching 4x speedup on a64fx by squeezing shallowwaters jl into float16 |
work_keys_str_mv | AT klowerm fluidsimulationsacceleratedwith16bitsapproaching4xspeedupona64fxbysqueezingshallowwatersjlintofloat16 AT hatfields fluidsimulationsacceleratedwith16bitsapproaching4xspeedupona64fxbysqueezingshallowwatersjlintofloat16 AT crocim fluidsimulationsacceleratedwith16bitsapproaching4xspeedupona64fxbysqueezingshallowwatersjlintofloat16 AT dubenpd fluidsimulationsacceleratedwith16bitsapproaching4xspeedupona64fxbysqueezingshallowwatersjlintofloat16 AT palmertn fluidsimulationsacceleratedwith16bitsapproaching4xspeedupona64fxbysqueezingshallowwatersjlintofloat16 |