Аннотация:
Численные методы, базирующиеся на решении задачи Римана о
распаде произвольного разрыва, крайне требовательны к вычислительным
ресурсам. Для применения данных численных методов на современных расчетных сетках требуется использование суперкомпьютера. Среди различных
инструментов повышения производительности суперкомпьютерных приложений можно выделить векторизацию программного кода. Набор инструкций
AVX-512 обладает рядом уникальных возможностей, позволяющих применить
векторизацию к программному контексту римановского решателя, что ведет
к значительному ускорению решателя. На примере точного римановского
решателя рассматривается практический подход к векторизации разнообразного программного контекста, включая простые линейные участки,
регионы со сложным управлением, а также вложенные циклы. В основе
рассматриваемого подхода лежит возможность одновременного выполнения
на одном процессорном ядре нескольких экземпляров некоторой чистой
функции. Данная возможность достигается путем перевода программного
кода в предикатную форму и использования векторных инструкций. При
этом количество одновременно выполняющихся экземпляров равно ширине
вектора. Показано, что использование возможностей набора команд AVX-512
позволяет успешно векторизовать рассматриваемый программный контекст.
Предложенный подход может быть применен для векторизации широкого
спектра приложений.
Ключевые слова и фразы:
задача Римана о распаде произвольного разрыва, римановский решатель, AVX-512, KNL, векторизация, функции-интринсики.