Использование графических процессоров и гетерогенных архитектур

Абрамова О.А., Иткулова Ю.А., Марьин Д.Ф., Малышев В.Л., Моисеева Е.Ф., Гумеров Н.А.

Цель:

Разработка и реализация гетерогенных алгоритмов для численного решения крупномасштабных задач микротечений жидкостей и молекулярной динамики

Графический процессор NVIDIA Tesla C2070

История использования графических процессоров (ГП) для научных расчетов насчитывает всего около десяти лет (стремительное развитие всей вычислительной техники в последние годы показывает, что мы находимся на этапе революционных преобразований в этой области). В основном разработка мощных ГП была связана с ненаучными приложениями, такими как компьютерные игры, где требовалась высокая скорость обработки потоков более или менее однородной информации связанной с графическими дисплеями (видеокарты), что достигалось использованием мультипроцессоров, работающих в параллельном режиме. В какой-то момент выяснилось, что производительность ГП может на порядки превышать производительность центральных процессоров (ЦП), которые использовались для решения научных задач. В это время появились первые разработки по использованию ГП в научных программах как ускорителей. Программирование ГП однако было достаточно трудоемким и порой неприемлемым для механиков, физиков и других специалистов, которые мыслят в терминах своих задач. Появление в середине 2000-х годов программного обеспечения (NVIDIA CUDA), позволяющего программировать ГП с помощью общедоступных языков, таких как Си или Фортран, произвело качественный скачок в использовании ГП и «демократизации» параллельного программирования. В настоящее время ГП и кластеры, состоящие из ГП, обладают самыми лучшими экономическими и экологическими показателями, например, по количеству операций на единицу затраченной энергии или на стоимость оборудования. Таким образом это реализация концепции «реальный суперкомпьютер должен быть маленьким» и альтернатива большому дорогостоящему кластеру, состоящему из одних ЦП.

Рост производительности графических процессоров (GPU) и центральных процессоров (CPU)

ГП может рассматриваться как обычный многоядерный ЦП с большим количеством ядер (например, 512 ядер), что говорит о потенциальной производительности этого устройства. Однако, это не совсем так. Эксплуатация такого большого количества ядер при ограниченных ресурсах памяти позволительна только при существенно другой архитектуре процессора. Например, каждое ядро может обладать весьма малой оперативной памятью быстрого доступа (локальная память). Глобальная память ГП может быть достаточно большой и сравнимой с оперативной памятью ЦП, однако доступ до этой памяти может быть в десятки раз медленней, чем до локальной памяти. Эти особенности архитектуры накладывают ограничения на алгоритмы, которые реально можно ускорить с помощью ГП. Так, простые массивные вычисления (простая обработка массива графической информации, умножение матрицы на вектор и т.п.) могут быть ускорены в десятки и сотни раз. В то же время вычисления, требующие, например, постоянного непоследовательного доступа к глобальной памяти, могут быть ускорены всего в несколько раз, или же не ускорены вообще.

Выход из ситуации, когда должен быть ускорен достаточно сложный алгоритм (например, быстрый метод мультиполей), можно найти, если превратить алгоритм в «гетерогенный», т.е. алгоритм, который расщеплен на части, использующие преимущества различных архитектур (например, ГП и многоядерных ЦП). Гетерогенные алгоритмы обладают рядом несомненных достоинств, например, полным использованием всех ресурсов (в гомогенных алгоритмах, когда процессоры одной архитектуры работают, процессоры другой архитектуры работают вхолостую), и рассматриваются как одно из перспективных направлений.

Разработанные и реализованные в лаборатории гетерогенные алгоритмы для решения крупномасштабных задач микротечений жидкостей и молекулярной динамики не имеют аналогов в мире и продемонстрировали свою эффективность для системы состоящей из нескольких ГП и  многоядерных ЦП. В планах лаборатории модификация алгоритмов для гетерогенных кластеров, содержащих много ГП. Для реализации и тестирования алгоритмов лаборатория обладает достаточными ресурсами (каждый сотрудник работает на компьютере оснащенном 12-ти ядерным ЦП и мощным ГП NVIDIA Tesla C2050, кроме того имеется высокопроизводительный кластер, состоящий из четырех вычислительных нод, каждый из которых оснащена четырьмя ГП NVIDIA Tesla C2075/K20c). Кроме того, планируется проведение крупномасштабных вычислений на основе алгоритмов для гетерогенных кластеров на отечественных и зарубежных суперкомпьютерах, расположенных в других организациях.