Еще со времен первых систем Cray в суперкомпьютерах применяются векторные операции, а поддержка коротких векторов реализована уже и в ПК, что сегодня возможно благодаря применению в x86-процессорах Intel технологии AVX512, обеспечивающей работу с векторами длиной 512 бит (8 чисел с плавающей запятой двойной точности, DP). При поддержке распространенных в HPC-приложениях команд типа «умножить-и-сложить» каждое соответствующее исполнительное устройство в процессоре архитектуры Intel Skylake дает 16 DP-результатов за такт. Новые процессоры NEC SX-Aurora (SX-10+) поддерживают работу с более длинными векторами и с более расширенной функциональностью.

Процессоры SX-10+, именуемые в NEC также Vector Engine (VE), имеют 8 ядер, состоящих из скалярного и векторного блока. В каждом ядре содержится по 64 векторных регистра длиной по 256 DP-элементов, имеющих по 64-разряда. Соответственно, суммарная емкость регистров в каждом ядре составляет 128 Кбайт. В эти регистры помещаются исходные данные для выполнения векторных команд и результаты.

Ядра SX-10+ поддерживают выполнение векторных команд «умножить-и-сложить», для чего у них имеется по три устройства FMA (Floating Point Multiply Add) [1, 2], однако на каждом такте из векторных регистров в FMA поступает по 32 DP-элемента (е) векторов и формируется 32 DP-числа результата (рис. 1). Общая операция над 256 DP-элементами векторов завершается за 8 тактов. Таким образом, пиковая производительность ядра за такт составляет 32 x 2 x 3 = 192 FLOPS. Для сравнения, поддерживающие технологию AVX512 ядра процессоров Skylake дают за такт по 32 FLOPS, как и ядра процессоров-акселераторов KNL (Xeon Phi семейства x200 содержат до 72 ядер) [3], а в Tesla V100 используются 80 потоковых мультипроцессоров, содержащих по 32 DP-устройства (ядра), которые выдают по два результата, или 64 FLOPS за такт, для одного потокового мультипроцессора и, соответственно, 5120 FLOPS на весь V100.

Рис. 1. Операция «умножить-и-сложить» над векторными регистрами

Производительность VE при работе с 32-разрядными числами одинарной точности вдвое выше, чем при работе с DP [1], однако большинство HPC-приложений работают с DP, поэтому далее все обсуждаемые результаты относятся именно к DP.

Кроме FMA-устройств, каждое ядро SX-10+ имеет устройство для выполнения деления и извлечения квадратного корня, дающих существенный вклад в полное время расчета (например, в приложениях молекулярной механики или молекулярной динамики), однако эти операции при расчете пиковой производительности не учитываются. Ядра VE содержат также устройства для выполнения операций над числами с фиксированной запятой и логических операций. Все эти устройства работают с векторными регистрами [2].

Очень важной для обеспечения эффективной работы с векторами является поддержка пошаговой загрузки векторных регистров из памяти и соответствующей записи из них в память. Кроме того, в SX-Aurora имеются еще и более сложные команды сборки/разборки векторных регистров с непрямым доступом к памяти типа работы с элементами массивов, имеющих двухуровневую индексацию a (index (i)), в синтаксисе языка Fortran. Эти команды поддерживались и в предыдущем поколении векторных процессоров NEC SX-ACE.

Другой кардинально важный для обеспечения высокой производительности компонент архитектуры VE — подсистема памяти. В VE применяется стандарт памяти с высокой пропускной способностью — High Bandwidth Memory (HBM2), трехмерная память стековой...

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.

Поделитесь материалом с коллегами и друзьями

Купить номер с этой статьей в PDF