- •Курс лекций
- •Оглавление
- •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. Типы данных
2.2.Конвейерная обработка данных и команд
Предположим, что мы хотим сложить два числа, представленных в форме с плавающей запятой. Для этого нам потребуется выполнить операции сравнения порядков, выравнивания порядков, сложения мантисс и т.д. Первые ЭВМ выполняли все эти операции для каждой пары аргументов, одна за другой, пока не получали конечное число. Затем, следующая пара слагаемых.
А что, если выделить отдельные этапы общей операции? Каждый этап, закончив свою работу, передает свой результат следующему, одновременно получая новую порцию данных на входе. Получаем выигрыш в скорости, за счет совмещения ранее разнесенных по времени операций. Если в исходной большой операции можно выделить 5 подопераций, каждая из которых длится единицу времени, то на неделимом последовательном устройстве 100 пар аргументов обработается за 500 единиц времени. Если каждую подоперацию выделим в отдельную часть конвейерного устройства, то на 5-м шаге у нас будут первые 5 пар аргументов в разной стадии обработки. Таким образом, весь набор мы обработаем за 5+99=104 единицы времени – практически пятикратное ускорение (очевидно, что оно зависит от числа ступеней конвейера).
Простым выходом было бы заменить весь конвейер обычным параллелизмом. Т.е. взять 5 устройств и обработать на них 100 пар аргументов. Но, в таком случае мы увеличим объем аппаратуры, соответственно, и ее стоимость.
Обработку команды разделяют на такие этапы:
выборка команды;
дешифровка команды;
выборка операндов;
выполнение команды;
сохранение результатов.
Нетрудно заметить, что каждый из этапов выполняется один раз и строго по завершению предыдущего этапа. А раз так, то, после передачи результатов на следующий этап, можно переходить к новым, пришедшим с предыдущего. Если каждую из операций выделить в отдельную часть устройства и расположить в порядке выполнения, то получим конвейер. Каждая часть общего устройства называется ступенью конвейера, а общее количество ступеней – его длинной.
Наряду с конвейером команд можно выделить конвейер данных. Вместе они позволяют достичь очень высокой производительности для счетных задач. Максимально используются возможности такой обработки в высокопроизводительных вычислительных конвейерных системах фирмы CRAY. В этих машинах установлен конвейер арифметических и логических операций и конвейер команд. Также применяется обработка информации несколькими устройствами. Пиковая производительность может составлять 12 GFLOPS.
Сейчас созданы однокристальные векторно-конвейерные процессоры. Их основой является скалярный процессор и 8 одинаковых векторных устройств. Суммарная производительность составляет 64 GFLOPS. На основе таких устройств работает система SX-6 (NEC).
2.3.Высокопроизводительные процессоры
Одним из основных элементов ЭВМ, определяющих ее производительность является процессор. Рассмотрим особенности устройства различных процессоров, позволяющие реализовать высокую производительность.
2.3.1.Суперскалярные процессоры
В процессорах этого типа реализованы как параллельное выполнение команд, так и конвейерная обработка. Если на обычном конвейере параллельная обработка возможна в случае, когда команды находятся на разных стадиях обработки, то суперскалярные процессоры позволяют обрабатывать несколько команд в одном сегменте конвейера. В этом случае . несколько команд могут выполниться одновременно в течение одного такта.
Такая работа стала возможна благодаря использованию нескольких, параллельно работающих конвейеров, а также устройств, позволяющих определить независимость команд. Устройства интерпретации команд (определяющие зависит ли команда от других) снабжены собственной логикой.
Чаще всего в суперскалярных процессорах увеличивают количество целочисленных конвейеров. Это связано с тем, что 80% команд в коде прикладных программ – целочисленные, около 15% - команды условного перехода и очень малый процент – команды с плавающей запятой.
Учитывая, что работают несколько конвейеров, мы получим те же конфликты, которые можно получить при работе с одним. Для их решение применяют алгоритмы внеочередной выборки и завершения команд, условного выполнения команд, прогнозирования переходов.
В суперскалярных процессорах распараллеливание команд заложено на аппаратном уровне. Программы для такого типа процессоров должны быть совместимы на уровне исполняемых файлов.
Параллельные программы можно разделить на статические, динамические и смешанные. По сложившемуся мнению, статические способы реализации программ являются предпочтительными. Это связано с тем, что при анализе кода на стадии компиляции удается выделить и спланировать параллелизм на более глубоком уровне. Однако, если необходимо учитывать текущее состояние программы и распределения ресурсов, то без динамической реализации обойтись нельзя.
Особенности суперскалярных процессоров, кроме своих плюсов, имеют очевидные минусы:
сложная реализация аппаратной части;
ограниченность окна выполнения. Это заметно уменьшает возможности определения потенциально параллельных программ.
Среди представителей суперскалярных процессоров выделяют Pentium, PowerPC, K6/K7, Alpha. В качестве особенностей одного из суперскалярных процессоров фирмы CRAY можно отметить то, что он имеет 136 (!) процессоров. Среди них четыре процессора Dec-Alpha EV5 (300 Mhz) с локальной памятью и чипом маршрутизации. Процессоры Alpha – суперскалярные процессоры, позволяющие обрабатывать два числа с плавающей запятой за цикл работы конвейера.