- •Курс лекций
- •Оглавление
- •1. Архитектура и принципы работы обычных эвм с центральным процессором (cpu) 9
- •2. Методы повышения производительности традиционных эвм 27
- •3. Типы архитектур высокопроизводительных вычислительных систем 45
- •4. Потоковые параллельные вычисления для физического моделирования 62
- •5. Применение графических процессоров на примерах сложения матриц и решения дифференциальных уравнений 82
- •6. Молекулярная динамика на графическом процессоре 100
- •7. Высокоскоростное моделирование систем с дальнодействием 125
- •8. Восстановление потенциалов межчастичных взаимодействий по температурной зависимости периода решетки методами высокоскоростного мдм на графических процессорах 145
- •9. Базовые особенности программирования графических процессоров шейдерной модели 4.0 160
- •Введение
- •1.Архитектура и принципы работы обычных эвм с центральным процессором (cpu)
- •1.1.Структура традиционной эвм
- •1.2.Организация работы эвм
- •1.3.Иерархия памяти компьютера
- •1.4. Выполнение команд
- •1.5.Требования к коммуникационным линиям
- •1.6.Устройства ввода-вывода
- •2.Методы повышения производительности традиционных эвм
- •2.1. Распараллеливание расчетов
- •2.2.Конвейерная обработка данных и команд
- •2.3.Высокопроизводительные процессоры
- •2.3.1.Суперскалярные процессоры
- •2.3.2.Процессоры risc с сокращенным набором команд
- •2.3.3.Процессоры со сверхдлинным командным словом
- •2.3.4.Векторные процессоры
- •2.3.5.Процессоры для параллельных компьютеров
- •2.3.6.Процессоры с многопоточной архитектурой
- •2.3.7.Технология Hyper-Threading
- •2.4.Требования к памяти высокопроизводительных эвм
- •2.5.Коммуникационная сеть высокопроизводительных эвм
- •2.5.1.Статические и динамические топологии и маршрутизация коммуникационных систем
- •2.5.2.Многокаскадные сети и методы коммутации
- •2.6.Классификация архитектур параллельных компьютеров
- •3.Типы архитектур высокопроизводительных вычислительных систем
- •3.1.Simd архитектура (с разделяемой и распределенной памятью)
- •3.2. Mimd архитектура с разделяемой и распределенной памятью
- •3.3. Комбинированные системы
- •3.4. Мультипроцессорные и мультикомпьютерные системы
- •3.5.Кластеры пэвм и рабочих станций
- •3.6.Особенности параллельного программирования
- •4.Потоковые параллельные вычисления для физического моделирования
- •4.1.Общие принципы распараллеливания расчётов
- •4.2.Обмен данными между процессором и памятью
- •4.3.Графические процессоры как вычислительные системы для поточно-параллельных расчётов
- •4.3.1.Вычислительные возможности центральных процессоров общего назначения и графических процессоров
- •4.3.2.Графический конвейер
- •4.3.3.История программируемости графических процессоров
- •4.3.4.Требования к алгоритмам для gpu, поддерживающих шейдерную модель 3.0
- •4.3.5.Возможности gpu в рамках шейдерной модели 3.0 и взаимодействие gpu с памятью
- •4.3.6.Проблема одинарной точности
- •4.4.Средства программирования графических процессоров
- •4.4.1.Общая структура программы для физического моделирования на графическом процессоре
- •4.4.2.Необходимое программное обеспечение
- •4.5.Области использования графических процессоров
- •5.Применение графических процессоров на примерах сложения матриц и решения дифференциальных уравнений
- •5.1.Распараллеливание независимых вычислений
- •5.2.Используемый графический процессор
- •5.3.Представление данных для графического процессора
- •5.4.Программирование вычислительного ядра
- •5.5.Взаимодействие центрального и графического процессоров
- •5.5.1.Функции центрального процессора
- •5.5.2.Пример программы
- •6.Молекулярная динамика на графическом процессоре
- •6.1.Принципы моделирования ионных кристаллов методом молекулярной динамики
- •6.2.Программирование графического процессора для расчёта действующих на ионы результирующих сил
- •6.2.1.Исходные данные
- •6.2.2.Представление исходных данных для gpu
- •6.2.3.Алгоритм расчёта результирующих сил с использованием графического процессора
- •6.2.4.Шейдер для расчёта результирующей силы
- •6.3.Исполнение шейдера из программы мд-моделирования на c#
- •6.3.1.Этапы алгоритма моделирования, исполняемые на cpu
- •6.3.2.Процедуры на c#, обеспечивающие работу с графическим процессором
- •6.4.Постановка граничных условий и стабилизация макросостояния молекулярно-динамической системы
- •6.4.1.Компенсация импульса и момента импульса
- •6.4.2.Стабилизация температуры
- •7.Высокоскоростное моделирование систем с дальнодействием
- •7.1.Актуальность моделирования
- •7.2.Высокоскоростные алгоритмы моделирования систем с дальнодействующими силами
- •7.3.Методика высокоскоростного молекулярно-динамического моделирования диоксида урана
- •7.4.Экспериментальные результаты и их обсуждение
- •7.5.Анализ зависимостей среднего квадрата смещений ионов кислорода от времени
- •8.Восстановление потенциалов межчастичных взаимодействий по температурной зависимости периода решетки методами высокоскоростного мдм на графических процессорах
- •8.1.Задача восстановления потенциалов межчастичных взаимодействий в кристаллах
- •8.2.Исходные данные и метод восстановления потенциалов
- •8.3.Модель и детали реализации
- •9.Базовые особенности программирования графических процессоров шейдерной модели 4.0
- •9.1.Предпосылки появления новой шейдерной модели
- •9.2.Архитектура gpu шейдерной модели 4.0. Преимущества этой модели
- •9.2.1.Иерархия вычислительных блоков и памяти в шейдерной модели 4.0
- •9.2.2.Конвейерная обработка данных на gpu sm4
- •9.2.3.Логическая структура вычислений на gpu sm4
- •9.2.4.Преимущества gpu шейдерной модели 4.0
- •9.3.Средства высокоуровневого программирования gpu шейдерной модели 4.0
- •9.3.1.Совместимость с шейдерной моделью 3.0
- •9.3.2.Специальные средства программирования gpu sm4. Cuda
- •9.3.3.Средства для написания и компиляции программ на cuda
- •9.3.4.Структура программы на cuda
- •9.4.Перемножение матриц на cuda
- •9.4.1.Алгоритм перемножения матриц
- •9.4.2.Процедура перемножения матриц на gpu sm4
- •9.4.3.Вызов процедуры перемножения матриц из программы на c
- •9.5.Молекулярная динамика на cuda
- •9.5.1.Алгоритм с использованием разделяемой памяти
- •9.5.2.Расчёт сил на gpu с использованием 3-го закона Ньютона
- •Библиографический список
- •Приложение 1 Операторы и функции языка hlsl, использованные в курсе лекций п.1.2. Типы данных
4.3.4.Требования к алгоритмам для gpu, поддерживающих шейдерную модель 3.0
Результаты расчётов на GPU не обязательно сразу выводятся на экран, их можно записывать в оперативную память компьютера и в дальнейшем использовать произвольным образом. Это позволяет программировать графические процессоры для расчётов, не связанных с отображением графики, в частности – для моделирования физических процессов.
Как уже отмечено в предыдущем разделе, совокупность возможностей графического процессора, доступных программисту, называют шейдерной моделью. Первой шейдерной моделью была модель 1.0, современные графические процессоры поддерживают шейдерные модели 3.0 либо 4.0. GPU старших шейдерных моделей могут исполнять программы, написанные для предыдущих моделей, причём более эффективно, за счёт оптимизации взаимодействия с памятью и увеличением количества конвейеров.
В настоящей работе мы рассмотрим программирование графических процессоров с использованием шейдерной модели 3.0 (Shader Model 3.0 (SM3)). Эта модель достаточна для того, чтобы в полной мере реализовать поточно-параллельную обработку однотипных данных.
Рис. 4.7. Принцип поточно-параллельной обработки данных (SIMD)
Модель 4.0 позволила бы оптимизировать некоторые алгоритмы за счёт произвольного (а не поточного) доступа к исходным данным (см., например, [13]), но эта возможность уже не имеет прямого отношения к поточно-параллельному программированию, так что здесь мы её не рассматриваем.
Принцип программирования, реализованный в SM3, известен под аббревиатурой SIMD, от англ. Single Instruction – Multiple Data, т.е. Одна Инструкция – Множество Данных. Название принципа отражает тот факт, что GPU применяет одну и ту же последовательность инструкций одновременно ко многим элементам из входного потока данных. Принцип SIMD схематично показан на рис. 4.7. Можно сказать, что графический процессор преобразует поток данных в поток результатов, используя шейдеры как функцию преобразования.
Поскольку модель SM3 разработана для программирования графического конвейера, она требует представления вычислительной задачи в форме задачи обработки 3D-графики, следующим ниже образом.
Исходные данные, предназначенные для потоковой обработки, должны быть представлены в виде массива однотипных объектов (в общем случае – 4-мерных векторов из вещественных чисел). Таких массивов может быть несколько.
Допустимо использование дополнительных массивов, содержащих параметры обработки данных (см. реализацию молекулярной динамики ниже).
К каждому из элементов входных массивов при потоковой обработке должен применяться один и тот же алгоритм, не зависящий от результатов обработки других элементов (этот алгоритм называют вычислительным ядром, на рис. 4.1 вычислительное ядро образовано операциями 1 – m).
Массивы исходных данных передаются как информация, предназначенная для закрашивания треугольников при обработке графики. Алгоритм обработки этих данных нужно записать в пиксельный шейдер вместо алгоритма расчёта цветов треугольников. Порядок обработки такой информации показан на рис. 4.8.
Ячейки массива исходных данных нужно представить как элементы поверхности треугольников, для которых рассчитываются цвета (рис. 4.8). Вместо границ циклов перебора исходных данных (таких, как цикл по i на рис. 4.1) автоматически используются границы отображаемых треугольников. Даже если в программируемой задаче физического моделирования никаких треугольников нет, потребуется задать границы треугольников в соответствии с диапазоном изменения входных данных.
Вычислительное ядро программируется как содержание пиксельного шейдера – специальной процедуры в тексте программы для графического процессора (см. примеры в следующем разделе).
Результатом расчёта должен быть один массив 4-мерных векторов, совпадающий по размеру с массивами входных данных. После завершения расчёта элементы этого массива автоматически записываются в область видеопамяти (памяти GPU, см. рис. 4.5), которую называют рендер-целью. Принцип формирования массива результатов показан на рис. 4.7.
Центральный процессор компьютера имеет доступ к видеопамяти, включая ту область, где хранится рендер-цель. С использованием той части программы, которая исполняется на центральном процессоре, рендер-цель должна быть скопирована в оперативную память компьютера для дальнейшей обработки.
Рис. 4.8. Представление исходных данных, алгоритма их обработки и массива результатов в форме закрашивания треугольников. Стрелочки показывают, как происходил бы перебор данных на CPU, при замене треугольников циклами. Поскольку рендер-цель не обязательно выводить на экран, вместо расчёта цветов к исходным данным можно применить произвольный алгоритм обработки, например – реализующий физическое моделирование
Рис. 4.9. Соответствие между массивами результатов и исходных данных