Big-PERCIVAL: Exploring the Native Use of 64-Bit Posit Arithmetic in Scientific Computing

The accuracy requirements in many scientific computing workloads result in the use of double-precision floating-point arithmetic in the execution kernels. Nevertheless, emerging real-number representations, such as posit arithmetic, show promise in delivering even higher accuracy in such computations. In this work, we explore the native use of 64-bit posits in a series of numerical benchmarks and compare their timing performance, accuracy and hardware cost to IEEE 754 doubles. In addition, we also study the conjugate gradient method for numerically solving systems of linear equations in real-world applications. For this, we extend the PERCIVAL RISC-V core and the Xposit custom RISC-V extension with posit64 and quire operations. Results show that posit64 can obtain up to 4 orders of magnitude lower mean square error than doubles. This leads to a reduction in the number of iterations required for convergence in some iterative solvers. However, leveraging the quire accumulator register can limit the order of some operations such as matrix multiplications. Furthermore, detailed FPGA and ASIC synthesis results highlight the significant hardware cost of 64-bit posit arithmetic and quire. Despite this, the large accuracy improvements achieved with the same memory bandwidth suggest that posit arithmetic may provide a potential alternative representation for scientific computing.

D. Mallasén, A. A. D. Barrio, and M. Prieto-Matias, “Big-PERCIVAL: Exploring the Native Use of 64-Bit Posit Arithmetic in Scientific Computing,” IEEE Transactions on Computers, vol. 73, no. 6, pp. 1472–1485, Jun. 2024, doi: 10.1109/TC.2024.3377890
@article{mallasen2024BigPERCIVAL,
    title = {Big-{{PERCIVAL}}: {{Exploring}} the {{Native Use}} of 64-{{Bit Posit Arithmetic}} in {{Scientific Computing}}},
    shorttitle = {Big-{{PERCIVAL}}},
    author = {Mallas{\'e}n, David and Barrio, Alberto A. Del and {Prieto-Matias}, Manuel},
    year = {2024},
    journal = {IEEE Transactions on Computers},
    volume = {73},
    number = {6},
    pages = {1472--1485},
    issn = {0018-9340, 1557-9956, 2326-3814},
    doi = {10.1109/TC.2024.3377890},
    langid = {english}
}