«Как только мы поняли, что ограничением производительности является пропускная способность памяти, нам действительно пришлось приступить к работе», — заявил Александр Хайнеке (научный сотрудник, Intel Labs) в своей презентации о LIBXSMM на первом ближневосточном собрании группы пользователей Intel Extreme Performance Users Group в KAUST (Университет науки и технологий имени короля Абдуллы) в Саудовской Аравии.

Многие приложения для высокопроизводительных вычислений могут извлечь выгоду из использования библиотеки LIBXSMM, ориентированной на процессоры Intel, для умножения малых, плотных или разреженных матриц и небольших сверток. LIBXSMM — это кросс-организационный проект, в который входят ученые из Калифорнийского университета в Сан-Франциско и Intel. Библиотека находится в свободном доступе на github.

Хайнеке отмечает, что высокопроизводительные вычисления движутся в новых направлениях, особенно потому, что «более низкая точность должна играть важную роль в высокопроизводительных вычислениях в наши дни, поскольку она значительно возрастает благодаря глубокому обучению», наряду с объединенным моделированием, в котором операции из нескольких задач выполняются параллельно, используют SIMD. возможности современных процессоров.

Низкая точность должна играть важную роль в высокопроизводительных вычислениях в наши дни, поскольку она значительно возрастает благодаря глубокому обучению — Александр Хайнеке, научный сотрудник Intel Labs

Исследования глубокого обучения меняют наше понимание числовой точности. Выполнение с более низкой точностью увеличивает эффективную пропускную способность элемента данных из памяти. Например, использование чисел с одинарной точностью (32-разрядных) вместо чисел с двойной точностью (64-разрядных) означает, что процессор может фактически получать в два раза больше значений с плавающей запятой в секунду.

Запуск с пониженной точностью помогает ускорить интенсивное вычислительное обучение глубоких нейронных сетей (ГНС).

LIBXSMM обеспечивает такой же выигрыш в производительности для приложений высокопроизводительных вычислений, особенно для широко используемых операций с небольшими и разреженными матрицами. В сочетании с пользовательской компиляцией архитектуры JIT (Just in Time) для конкретной архитектуры библиотека LIBXSMM обеспечивает как высокую производительность, так и масштабируемость для многих поколений процессоров Intel. Например, LIBXSMM может достичь очень высокого процента пиковой теоретической производительности для операций с разреженными матрицами на процессорах Intel в диапазоне от 78% на новейшем процессоре Intel Xeon Phi 7295 (кодовое название Knights Mill), содержащем 72 ядра, до 70 ядер. % масштабируемый процессор Intel Xeon 8180 с 28 ядрами. Старые процессоры также выигрывают от LIBXSMM.

Примеры высокопроизводительных высокопроизводительных вычислений

Эти преимущества в сочетании с объединенным моделированием значительно улучшают даже высокоточные коды HPC.

Хайнеке конкретизировал свои заявления о производительности и масштабировании, сообщив о производительности 64-битных вычислений с плавающей запятой, превышающей 10 PF/s на суперкомпьютере Cori-II NERSC (Национальный центр научных исследований в области энергетики) вместе с результатами масштабируемости от 32 до 3200 узлов на Argonne Theta. суперкомпьютер.

В частности, в сотрудничестве с Intel Александр Брейер и Ифэн Цуй из Суперкомпьютерного центра Сан-Диего (SDSC) Калифорнийского университета в Сан-Диего разработали новый пакет программного обеспечения для сейсморазведки под названием EDGE (Extreme-Scale Discontinuous Galerkin Environment). В последних симуляциях используется LIBXSMM, и на сегодняшний день они являются самыми быстрыми в мире. Ученые могут использовать эту симуляцию для более точного прогнозирования движений грунта, чтобы спасти жизни и минимизировать материальный ущерб.

В блоге UCSD сообщается, что исследователи UCSD достигли скорости 10,4 PFLOP/с (или 10,4 квадриллиона вычислений в секунду) на суперкомпьютере NERSC Cori-II. Это побило предыдущий рекорд сейсмической производительности 8,6 PFLOPS, установленный на китайском суперкомпьютере Tianhe-2.

В сотрудничестве с Intel Александр Брейер и Ифэн Цуй из SDSC побили предыдущий рекорд сейсмической производительности 8,6 PFLOPS, установленный на китайском суперкомпьютере Tianhe-2. — Блог UCSD.

Исследовательские проекты являются частью объявленного в начале 2016 года сотрудничества, в рамках которого Intel открыла вычислительный центр в SDSC, чтобы сосредоточиться на сейсмических исследованиях.

Вики LIBXSMM github показывает, что библиотека LIBXSMM является общим решением HPC. В частности, LIBXSMM использовался в CP2K (пакет молекулярной динамики с открытым исходным кодом), кодах спектральных элементов, инновационном пакете вычислительной гидродинамики (CFD) на основе Python PyFR и библиотеке Eigen Math для автоматизации управляющих рабочих нагрузок [i]. Неудивительно, что вики показывают, что LIBXSMM также приносит пользу пакетам глубокого обучения.

Оптимизированные матричные операции связывают глубокое обучение с высокопроизводительными вычислениями через LIBXSMM

Хайнеке отмечает, что глубокое обучение быстро становится следующим убийственным приложением, демонстрирующим очень регулярные вычислительные модели, которые можно выполнять с меньшей точностью. Чтобы улучшить глубокое обучение, поставщики оборудования вводят специальные функциональные блоки, такие как Intel QFMA, для ускорения умножения матриц. Intel отмечает, что Quad Fused Multiply Add (QFMA) удваивает производительность одинарной точности. [ii]

Хайнеке отмечает, что это может принести пользу приложениям HPC. Наиболее распространенным ядром глубокого обучения является GEMM (общее матричное умножение) и свертка, которые идеально подходят для распараллеливания, поскольку они отображают длинные цепочки из множества независимых внутренних продуктов. Более того, свертки демонстрируют большую пространственную и временную локальность, чем GEMM, что может принести пользу разреженным операторам.

Он заявляет: «Мы можем собрать это для высокопроизводительных вычислений, используя большое количество флоп/с с более низкой точностью». Например, запуск предварительных условий с очень низкой точностью и оценка того, можно ли запускать решатели с FP32 вместо FP64, и запуск объединенных симуляций для использования ядер, подобных GEMM, где локальность внутри оператора может принести пользу разреженным операциям.

Снижение точности приводит к более быстрому решению.

Большим неизвестным при использовании пониженной точности является влияние на поведение сходимости численного алгоритма. Проблема заключается в том, что симуляция может занять больше времени, чтобы найти решение (например, сходиться к приемлемому решению) с точки зрения времени настенных часов, даже если использование арифметических типов с более низкой точностью означает, что код работает быстрее на оборудовании и выполняет больше Flop/s. .

Хайнеке использовал результаты теста LOH.1 в EDGE, чтобы показать, что более высокая производительность приводит к более быстрому времени выполнения при использовании более низкой точности. Другими словами, сходимость не была проблемой при использовании пониженной точности.

Экстремальная производительность разреженной матрицы

EDGE использует возможности LIBXSMM для запуска объединенных симуляций для повышения производительности. Не вдаваясь в технические подробности, решатель EDGE может использовать результаты ряда различных сейсмических источников в своем прямом решателе, как показано ниже. Вкратце, решатель использует LIBXSMM для одновременного выполнения множества небольших операций с разреженными матрицами.

В научной литературе это обычно называют распараллеливанием нескольких правых частей УЧП, но авторы EDGE предпочитают термин объединенное моделирование, чтобы подчеркнуть преимущества их подхода, а именно [iii]:

1. Возможность выполнять полные векторные операции даже при использовании разреженных матричных операций путем слияния кратных векторной ширины. Операции без слияния могут иметь заполнение нулями до 50%, что представляет собой потерянный флоп/с.

2. Структуры данных автоматически выравниваются для векторных операций.

3. Структуры данных, предназначенные только для чтения, могут существенно увеличить интенсивность вычислений.

4. Объединенные симуляции менее чувствительны к задержкам памяти и условным переходам. Это снижает потери производительности из-за задержек при запуске или неправильных прогнозов переходов. Это также помогает уменьшить задержки в сети из-за больших сообщений MPI, имеющих одинаковые частоты обмена.

На семинаре KAUST Extreme Computing Workshop Хайнеке сообщил о результатах усилий SDSC, которые продемонстрировали, что LIBXSMM может достичь очень высокого процента пиковой теоретической производительности для операций с разреженными матрицами на процессорах Intel, начиная с 78% на Intel Xeon. Phi 7295 (кодовое название Knights Mill) с 72 ядрами до 70% процессора Intel Xeon Scalable Processor 8180 с 28 ядрами. Это в пределах нескольких процентов от производительности высокооптимизированной операции DGEMM с плотной матрицей (GEMM с двойной точностью), что подчеркивает преимущества JIT-генерации кода LIBXSMM и объединенных операций для операций с разреженными матрицами.

Объединенные симуляции также помогают в вычислениях с распределенной памятью. На следующем изображении показаны как высокая производительность операций с плавающей запятой, так и пиковая эффективность при выполнении теста LOH.1 в EDGE на 16 узлах с использованием различных поколений процессоров Intel, а именно процессоров Intel Xeon Scalable, Intel Xeon Phi (KNL) и Intel Xeon Phi для машинное обучение (КНМ).

Резюме

Небольшие ядра умножения матриц очень распространены в научных приложениях. Наличие библиотеки, которая генерирует код для конкретной архитектуры процессора и может обеспечить высокий процент максимальной производительности, особенно на разреженных матрицах, бесценно. Перспективное использование объединенных симуляций и использование оптимизированных для аппаратного обеспечения возможностей глубокого обучения с более низкой точностью указывает на то, что LIBXSMM принесет еще большую пользу приложениям HPC в будущем, поскольку поставщики оборудования будут развертывать большее количество продуктов, оптимизированных для глубокого обучения. До сих пор LIBXSMM успешно интегрировался в другие научные коды, использующие небольшие матричные умножения: семейство Nek5000/Box, выигравшее Гордона Белла, CP2K (финалист Гордона Белла) и SeisSol (финалист Гордона Белла и победитель SC Best Paper), а также глубокое обучение. фреймворк Tensorflow и пакет линейной алгебры C++ Eigen.

Роб Фарбер — глобальный консультант по технологиям и автор с обширным опытом в области высокопроизводительных вычислений и передовых вычислительных технологий, которые он применяет в национальных лабораториях и коммерческих организациях. С Робом можно связаться по адресу [email protected]

[i] https://software.intel.com/sites/default/files/managed/4f/73/parallel-universe-issue-31.pdf

[ii] https://itpeernetwork.intel.com/accelerating-deep-learning-workloads/

[iii] Для получения дополнительной информации см. http://hypocenter.usc.edu/research/SSA/breuera_ssa.pdf