- •Курс лекций
- •Оглавление
- •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.3.3.Процессоры со сверхдлинным командным словом
Суперскалярные процессоры со сверхдлинным командным словом-
VLIW (Very Long Instruction Word) в процессе работы выявляют параллелизм команд во время трансляции. Транслятор, анализируя программу, выделяет операции, которые можно выполнять параллельно, и строит из них «большие» команды. Как только «большая» команда поступает на выполнение, обычные команды из нее выполняются параллельно. Такая реализация ведет к ряду недостатков (нет совместимости на уровне бинарных файлов, необходим канал с большой разрядностью, увеличивается исполняемый код).
Архитектура VLIW – одна из реализаций внутреннего параллелизма в микропроцессорах. Быстродействие можно повышать за счет увеличения тактовой частоты или за счет количества операций, выполняемых за один такт. Первый способ можно реализовать при использовании «быстрых» технологий (использовать вместо кремния арсенид галлия) и глубокой конвейеризации (задействовать все логические элементы кристалла). Чтобы реализовать второй способ, необходимо разместить на одном чипе несколько функциональных модулей и обеспечить надежность при параллельном исполнении инструкций.
Говоря о надежности, имеется ввиду правильность результата. Если необходимо выполнить следующие действия А=В+С, В=Е+Н. Очевидно что результат первого выражения зависит от результата второго. При планировании порядка вычислений необходимо учитывать такие нюансы. Если не будет подобного контроля, то получить верный результат вычисления можно лишь с какой-то вероятностью.
VLIW-архитектура передает планирование программному обеспечению. Т.е. на этапе компиляции происходит поиск независимых инструкций, составление из них длинных инструкций, которые затем обрабатываются одновременно. Если компилятору попадаются связанные данные, то ему необходимо найти возможность развязать их. Это можно сделать с помощью переупорядочивания программы (перемещение программных модулей). Для большего распараллеливания программы VLIW-процессорам можно дать возможность просматривать операции из разных базовых блоков. В дальнейшем VLIW-процессоры можно дополнить небольшим аппаратным устройством, которое будет собирать статистические данные при циклической работе с переменными. Естественно, что глубоко просматривать программный код можно и на RISC-процессорах, но соотношение «эффективность/цена» намного выше у VLIW.
Примечание. Фирма Intel решила эту проблему на аппаратном уровне. Но размеры планировщика вычислений растут по мере увеличения количества функциональных модулей. На данном этапе развития техники, число обрабатываемых за цикл операций для суперскалярных машин составляет 5-6.
Описав VLIW-процессоры едва ли не идеальным решением для всех задач, ни разу не было сказано о недостатках таких систем. Первым является то, что эффективность практически полностью ложится на компилятор, а потому, он должен максимально соответствовать всем особенностям архитектуры процессора. Так например, при выпуске нового процессора с другим количеством обрабатывающих модулей (или с тем же количеством, но с другим быстродействием), нам придется заново компилировать все старое программное обеспечение заново. Конечно, можно как фирма Intel сразу ввести ограничения на то, что в системе будет использоваться трехкомандное слово. В таком случае программное обеспечение (для любой модификации этой системы) сначала пишется на промежуточном языке. А перевод в машинный код производится уже на ЭВМ заказчика. Но такой подход не всегда оправдывает себя, потому что, зачастую необходимо, объяснять компилятору что необходимо делать на этой конкретной машине (вполне возможно, что и в этой конкретной операционной системе). Нельзя забывать и о потерях в скорости относительно программного обеспечения, которое изначально писалось под такую платформу. Вторым явным недостатком является то, что оптимизация обеспечивается для статической программы. Предсказать поведение компилятора в непредвиденной ситуации (когда происходит ожидание действия человека) практически невозможно.
Предложение среди разработчиков программного обеспечения настолько велико, что большинство производителей отказываются от «чистого VLIW».