Аннотация:
Numerical methods based on solving the Riemann problem of the
decay of an arbitrary discontinuity are extremely demanding of computational
resources. Applying the data of numerical methods to modern computational grids
requires the use of a supercomputer. Among the various tools for improving the
performance of supercomputer applications, we can emphasize the vectorization
of program code. The AVX-512 instruction set has a number of unique features
allowing to apply vectorization to the Riemann solver software context, which
results in a significant acceleration of the solver. Using the exact Riemann
solver as an example, the article discusses practical approach to vectorizing
a various program contexts, including simple linear blocks, regions with complex
control, and nested loops. The basis of the approach under consideration is the
possibility of simultaneously executing several instances of some pure function
on the same processor core. This feature is achieved by translating the program
code into the predicate form and using AVX-512 vector instructions. In this case
the number of simultaneously running instances is equal to the width of the
vector. It is shown that using the features of the AVX-512 instruction set allows
to successfully vectorize the considered program context. The proposed approach
can be applied to vectorize a wide range of applications.
Ключевые слова и фразы:
Riemann problem of the decay of an arbitrary discontinuity, Riemann
solver, AVX-512, KNL, vectorization, intrinsic functions.