- •Курс лекций
- •Оглавление
- •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.Потоковые параллельные вычисления для физического моделирования
4.1.Общие принципы распараллеливания расчётов
Задачи вычислительного моделирования физических систем очень часто связаны с независимым применением одного и того же набора операций (одного и того же алгоритма обработки) к большому количеству объектов одинакового типа.
Н апример, в молекулярной динамике на каждом временном шаге необходимо рассчитывать силы, действующие на каждую из частиц, а затем определять ускорения, скорости и перемещения частиц, соответствующие этим силам. Ещё более распространённый метод Монте-Карло предполагает независимую обработку большого количества однотипных случайных событий. Очевидно, что решение подобных задач можно очень существенно ускорить путём распараллеливания расчётов.
Пусть есть некоторый набор однотипных данных (N элементов), которые требуется обработать в соответствии с заданным алгоритмом. Блок-схема последовательных вычислений, без какого-либо распараллеливания, будет иметь общий вид, показанный на рис. 4.1. Из этой блок-схемы видно, что возможны 3 типа распараллеливания расчётов [11]:
Распараллеливание по данным. Если операции 1 - m (рис. 4.1) над каждым i-м элементом не зависят от исхода операций над остальными элементами, то эти элементы не обязательно обрабатывать последовательно. Расчёты можно распределить между несколькими вычислительными блоками (процессорами, конвейерами, машинами), как это показано на рис. 4.2. Именно такое распараллеливание характерно для физического моделирования.
Рис. 4.2. Распараллеливание по данным
Распараллеливание по инструкциям. Может оказаться, что некоторые инструкции из набора операций 1 – m независимы друг от друга, и тогда, при наличии нескольких вычислительных блоков, эти инструкции могут быть исполнены параллельно. Схема распараллеливания по инструкциям показана на рис. 4.3. Такое распараллеливание аппаратно реализовано в современных центральных процессорах общего назначения, поскольку оно эффективно при исполнении программ, интенсивно обменивающихся разнородной информацией с другими программами и с пользователями ПК.
Рис. 4.3. Распараллеливание по инструкциям
Распараллеливание по задачам. Возможно, если задачи 1 - k (рис. 4.1) независимы друг от друга. Особенно актуально для сетевых серверов и других вычислительных систем, выполняющих одновременно несколько функций либо обслуживающих многих пользователей.
4.2.Обмен данными между процессором и памятью
Моделирование физических систем обычно связано с обработкой больших массивов данных (например, как в молекулярной динамике, - с расчётом траекторий большого количества частиц). Эти данные хранятся в памяти, доступной процессору (оперативная память компьютера, видеопамять, кэш). Двумя основными характеристиками, определяющими эффективность взаимодействия процессора с памятью, являются латентность и пропускная способность.
Латентность – это время доступа к памяти, т.е. время ожидания процессором данных после запроса. Латентностью определяется производительность вычислений при решении задач, требующих частого обращения к произвольным, неупорядоченным ячейкам памяти. Такой обмен с памятью характерен для «кибернетических» задач, связанных со сложным управлением потоком команд, обработкой уникальных входных сигналов. В числе этих задач интерактивные приложения, – приложения, управляемые пользователем в ходе исполнения, - которые обычны для персональных компьютеров. Современные интерактивные приложения обычно обмениваются с пользователем и другими приложениями большим количеством разнородной информации.
Недостаточная латентность памяти ограничивает возможности процессоров, работающих на высокой частоте, поскольку они не успевают получать данные для обработки.
Пропускная способность (ПС) характеризует объём данных, которыми процессор может обменяться с памятью за единицу времени. Высокая пропускная способность оказывается важнее латентности в задачах, позволяющих организовать считывание данных из последовательных ячеек памяти непрерывным потоком.
Высокую пропускную способность памяти можно эффективно использовать в задачах физического моделирования, которые связаны с применением сравнительно несложных алгоритмов обработки к большим массивам данных.
В последние годы пропускная способность памяти (ПС памяти) увеличивается существенно быстрее, чем уменьшается латентность. В табл. 4.1. приведены современные времена удвоения ПС памяти различных типов [12]. В последнем столбце табл. 4.1. даны величины уменьшения латентности памяти тех же типов за то же время (т.е. за время удвоения ПС). Видно, что во всех случаях латентность улучшалась гораздо менее чем в два раза, то есть – существенно медленнее, чем возрастала пропускная способность. Такая тенденция указывает на перспективность разработки алгоритмов физического моделирования, ориентированных скорее на потоковую обработку данных, эффективность которой определяется пропускной способностью памяти, чем на произвольный доступ к памяти. Эффективность потоковой обработки данных в большей мере определяется пропускной способностью памяти, чем латентностью, а эффективность произвольного доступа – наоборот.
Из табл. 4.1. видно, что пропускная способность кэша процессоров и оперативной памяти (которые задействованы при физическом моделировании на ПК) удваивается за 2-3 года. Можно ожидать, что и в ближайшем будущем эта тенденция сохранится.
Таблица 4.1.
Динамика улучшения пропускной способности и латентности памяти [12]
Тип памяти |
Время удвоения ПС, годы |
Улучшение латентности за то же время, разы |
Кэш процессоров |
1.7 |
1.3 |
Оперативная память (DRAM) |
2.9 |
1.2 |
Доступ к данным по сетям |
2.1 |
1.3 |
Дисковая память |
2.8 |
1.3 |