- •Курс лекций
- •Оглавление
- •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. Типы данных
1.4. Выполнение команд
При написании программы используют язык программирования высокого уровня или Assembler. Написанную программу с помощью транслятора переводят в машинный язык. Как было сказано ранее, программа – это последовательность машинных команд. Команда состоит из кода команды и операндов (обрабатываемых данных). Некоторые команды могут и не содержать операндов (например, команды начала или конца модуля программы). В качестве операндов могут выступать адреса в оперативной памяти, имена регистров, непосредственно данные и т.д. При запуске программы системный загрузчик отправляет программу (или исполняемый модуль). Далее процессор выполняет ее.
1.5.Требования к коммуникационным линиям
Представить себе ЭВМ, не имеющую возможности подключения к коммуникационным линиям очень сложно. Поэтому требования к этим самым линиям очень высоки. Даже если мы объединим несколько вычислительных систем, не предоставляя им возможности выхода в глобальную сеть, мы должны настроить сеть таким образом, чтобы она обеспечивала:
Высокую скорость передачи. При передаче большого объема данных между сверхбыстрыми ЭВМ медленное соединение неизбежно станет узким местом.
Отсутствие потерь. При передаче большого объема данных (а при создании вычислительных комплексов это неизбежно) вероятны потери данных. Т.е. вы передаете число 2 (0010 – в двоичной системе счисления), теряется один бит, и при получении у нас число 001, а это уже 1 (в десятичной системе счисления). Естественно существуют контрольные суммы и тому подобные проверки. Но для ускорения работы, лучше свести потери к минимуму.
Помехозащищенность. Случай аналогичный предыдущему, но тут вместо потери одного бита можно принять неправильный бит (или того хуже, принять лишний – если большой уровень шума). 0001 (1) => 0011 (3)
Надежность. Под надежностью можно понимать как надежность всей системы (случайный сбой не должен приводить к последствиям, устранять которые будут несколько дней), так и надежность каждого компонента системы (вплоть до сетевой карты отдельно взятой ЭВМ).
Масштабируемость. Если вы захотите подключить к выполнению задачи еще одну вычислительную машину, то переделывать из-за этого всю архитектуру комплекса – непозволительная роскошь.
Легкий доступ ко всем ЭВМ. В любой момент можно подключиться к любой считающей машине. Любая машина может получить данные с любой другой.
1.6.Устройства ввода-вывода
При упоминании устройств ввода-вывода на ум сразу приходят клавиатура, мышь и монитор. Это те основные средства, с помощью которых происходит взаимодействие с ЭВМ. Конечно, список этих устройств можно расширить принтером, сканером – это, то чем пользовался практически каждый. Можно к этим же устройствам отнести и более экзотические средства, такие как плоттер, манипулятор, трэк-болл и прочие. Но служат они для одних и тех же целей. По большому счету, для вычислительных систем необходимы только монитор и клавиатура (если ЭВМ работает под управление ОС семейства Linux, то можно обойтись и без мыши). Каких-то особых требований к устройствам ввода-вывода не предъявляют, чаще всего их выбирают по цене или каким-то внешним параметрам.