Параллельные алгоритмы вычислительной алгебры. Современные компьютеры

Содержание

Слайд 2

Часть 2: Современные компьютеры История развития компьютеров. Особенности современных ЦПУ и графических ускорителей.

Часть 2: Современные компьютеры

История развития компьютеров.
Особенности современных ЦПУ и графических

ускорителей.
Слайд 3

История развития компьютеров Это не есть исторический экскурс в прошлое в

История развития компьютеров

Это не есть исторический экскурс в прошлое в классическом

понимании:
Человек
Счёты
Механические счёты
Компьютер
Кластер
Многоядерный компьютер
Многоядерный кластер
Неоднородный многоядерный компьютер
Неоднородный многоядерный кластер
Слайд 4

История развития компьютеров Человек Особенности: требует еду, питьё, жильё, необходим отдых,

История развития компьютеров

Человек
Особенности: требует еду, питьё, жильё, необходим отдых, неоднородно обучаем,

изобретателен, ...
Пример: Напишите число «пи» до куда сможете...
3,1415926535897932384626433832795
Дополнительные данные (окружение):
100 000 лет назад?
5000 лет назад?
600 лет назад?
100 лет назад?
50 лет назад?
Сейчас? Дорогой арифмометр
Завтра? Очень дорогой арифмометр
В Китае?
В России?
Вопросы устойчивости возникли именно благодаря желанию человека посчитать!
Элементарная вычислительная математика родилась здесь.
Слайд 5

История развития компьютеров (Механические) Счёты Особенности: конечная арфиметика, требуют не сильно

История развития компьютеров

(Механические) Счёты
Особенности: конечная арфиметика, требуют не сильно квалифицированного оператора,

ускоряют процесс вычислений, ...
В России исчезли лет 20 назад. Первая атомная бомба была рассчитана на счётах. Схема Годунова возникла на счётах.
Главное: позволяют делать вычисления параллельно!
Не имели широкого применения до появления сильной нужды в моделировании. Дополнительно: появилась нужда в оптимизации вычислений на основе аналитических рассуждений.
Слайд 6

История развития компьютеров Компьютер Особенности: электрический привод, бинарное предсталение о мире,

История развития компьютеров

Компьютер
Особенности: электрический привод, бинарное предсталение о мире, повторябельность, умение

выполнять программы, умение хранить биты, надёжность?...
Острая нужда в оптимизации вычислений в связи с дороговизной машины поначалу.
Именно в этот момент и родилась классическая вычислительная математика, которую вы учите в нашем университете.
Основная проблема вычислительной математики: минимизировать вычисления (число операций в алгоритме) и минимизировать используемую память (сопряжённые градиенты, например)
Всего 25 лет назад компьютер с 40МБ памяти на диске можно было обменять на автомобиль.
Слайд 7

История развития компьютеров Компьютер Итак, компьютер это скорость выполнения операций («флопсы»)

История развития компьютеров

Компьютер
Итак, компьютер это
скорость выполнения операций («флопсы»)
количество требуемой

памяти (байты)
Дополнительно: какие именно операции выполняются, например, схема единственного деления в методе Гаусса
Почему? Деление – это операция, которая не может быть выполнена за ~1 такт в отличие от сложения, умножения, вычитания
Слайд 8

История развития компьютеров Компьютер Тактовая частота – основная характеристика процессора. Именно

История развития компьютеров

Компьютер
Тактовая частота – основная характеристика процессора. Именно она определяет

сколько операций (тех операций, что процессор в состоянии исполнять) процессор в состоянии выполнить за секунду.
С точки зрения вычислительной линейной алгебры вторая основная характеристика – количество операций с плавающей точкой (с вещественными числами), которые может выполнить процессор за 1 такт
Итог:
Flops(Флопс) = floating point operations per second.
Объединение основных характеристик даёт нам главную характеристику с точки зрения вычислительной линейной алгебры – количество операций с плавающей точкой, которые может выполнить процессор.
Слайд 9

История развития компьютеров Компьютер Дополнительно: относительно современный процессор может выполнять несколько

История развития компьютеров

Компьютер
Дополнительно: относительно современный процессор может выполнять несколько операций с

плавающей точкой за 1 такт параллельно (несколько вычислительных блоков могут работать одновременно и несколько чисел могут обрабатываться на 1 блоке [векторизация]) . Но...
с точки зрения нашей вычислительной математики это не столь важно, об этом заботиться либо компилятор, либо библиотека высокопроизводительных программ.
Тем не менее, вы должны знать о выравнивании данных:
__declspec(align(128)) /4096 и др. степени 2/
malloc и иже с ним – даёт не выровненные данные
Массивы нужно было выравнивать всегда (до последнего времени)
Слайд 10

История развития компьютеров Компьютер Выравнивание (связано с векторизацией, т.е., с SSE,

История развития компьютеров

Компьютер
Выравнивание (связано с векторизацией, т.е., с SSE, AVX и

прочими подобными вещами):
+(*)
=
Чтобы выполнять такие операции, адрес «Число 0» должен быть кратен некоторому числу байт равному степени 2 (выровнен на это число байт) – это ускоряет программу и даёт стабильный результат по производительности на нынче устаревающих процессорах (например, процессоры Интел до Нехалема (Nehalem))

Невыровненные данные увеличивают время вычислений в разы, но только в начале и конце серии однотипных вычислений

Слайд 11

Компьютер Особенности процессорной памяти (кэша) Состоит из линий и банков (объединение

Компьютер
Особенности процессорной памяти (кэша)
Состоит из линий и банков (объединение линий)
...
Длина линии

– несколько байт (64, например)
Размер банка – от килобайт до мегабайт
Ассоциативность кеша – количество банков (2, 4, 8)
Следствие 1: Избегать НЕ непрерывных обращений к памяти
Следствие 2: Избегать обращений к памяти кратных размеру кэша

История развития компьютеров

Чтение\запись ТОЛЬКО линиями

Слайд 12

История развития компьютеров Компьютер Дополнительно: Скорость доставки данных растёт на порядок

История развития компьютеров

Компьютер
Дополнительно:
Скорость доставки данных растёт на порядок медленнее, чем скорость

обработки оных данных (флопсы)
Появляется необходимость минимизировать пересылки из\в память и эксплуатировать параллелизм вычислений и (более медленной!) доставки данных
Слайд 13

История развития компьютеров Кластер ... Особенности: необходимость управлять разделёнными данными, учёт

История развития компьютеров

Кластер
...
Особенности: необходимость управлять разделёнными данными, учёт скорости обмена данными,

...
Та же самая проблема, что и в отдельном процессоре – скорость передачи данных мала по сравнению с вычислительными возможностями
Слайд 14

Многоядерный компьютер История развития компьютеров

Многоядерный компьютер

История развития компьютеров

Слайд 15

Многоядерный кластер Разные скорости доступа до разных участков памяти КОМПЬЮТЕР История

Многоядерный кластер
Разные скорости доступа до разных участков памяти

КОМПЬЮТЕР

История развития компьютеров

КОМПЬЮТЕР

Диспетчер

Разная скорость

доступа

Разная скорость доступа

Слайд 16

История развития компьютеров Неоднородный многоядерный компьютер Неоднородный многоядерный кластер То же

История развития компьютеров

Неоднородный многоядерный компьютер
Неоднородный многоядерный кластер
То же самое, что и

обычный многоядерный компьютер\кластер, только ядра могут иметь разные характеристики в пределах одного компьютера
Слайд 17

История развития компьютеров Итог: Компьютер – это иерархия вычислительных модулей, иерархия

История развития компьютеров

Итог:
Компьютер – это иерархия вычислительных модулей, иерархия памяти и

связи между ними, работающие с существенно разными скоростями.
Дополнительно: графические карты – это тот же процессор с памятью. Сейчас в состоянии работать независимо от существования ЦПУ, в противном случае порождают неоднородный компьютер, где характеристики ЦПУ (мало ядер, но они много умеют) отличаются от характеристик карты (много ядер, но они мало что умеют)
Слайд 18

Резюме Вычислительные метдоы существуют с тех пор, как человек научился считать

Резюме

Вычислительные метдоы существуют с тех пор, как человек научился считать
Компьютеров много

и разных – сначала нужно узнать, что за компьютер вам достался
Компьютер = процессор (Флопсы) + память (байты) + провода (биты в секунду)
Выравнивайте данные (массивы)
Избегайте последовательных обращений в массивах кратных размеру кэша (степень 2!)
Избегать НЕ непрерывных обращений к памяти