- •Параллельные вычисления.
- •История развития многопроцессорной вычислительной техники.
- •Классификация вычислительных систем.
- •Обзор архитектур многопроцессорных систем.
- •Одновременная многопотоковость.
- •Многоядерность.
- •Системы с массовым параллелизмом.
- •Кластерные системы.
- •Ускорители вычислений.
- •Замеры времени на видеокарте.
- •Типы памяти cuda.
- •Работа с константной памятью.
- •Работа с глобальной памятью.
- •Оптимизация работы с глобальной памятью.
- •Разделяемая память и её использование.
- •Реализация на cuda базовых операций над массивами.
- •Принципы программирования на системах с распределенной памятью.
- •Типовые схемы коммуникации в многопроцессорных вычислительных системах.
Классификация вычислительных систем.
Первая классификация предложена Флинном. Данная классификация основывается на двух понятиях: поток команд и поток данных. На основе числа этих потоков выделяются 4 класса архитектур:
SISD – один поток команд, один поток данных.
SIMD – один поток команд, много потоков данных. Данный класс составляют многопроцессорные вычислительные системы (МВС), в которых в каждый отдельный момент времени может выполняться одна и та же команда для обработки нескольких информационных элементов. Подобной архитектурой обладают многопроцессорные системы с единственным устройством управления.
MISD – много потоков команд, один поток данных. Возможно сюда отнести систолические вычислительные системы или системы с конвейерной обработкой данных.
MIMD – много потоков команд, много потоков данных. К данному классу относятся практически все многопроцессорные системы.
Обзор архитектур многопроцессорных систем.
ILLIAC 4 был разработан в 1970 годах. Он включал 64 процессора, работающих по одной программе, применяемой к содержимому собственной ОП каждого процессора. Обмен данными происходил через матрицу коммуникационных каналов. В связи с этим можно выделить матричные суперкомпьютеры. Более широкий класс МВС с распределенной памятью получил название МВС с массовым параллелизмом или МВС с МРР-архитектурой. Каждый процессор в такой системе является универсальным и действует по своей собственной программе. Другое направление на базе векторно-конвейерных компьютеров (CRAY 1) сформировалось направление симметричной мультипроцессорности (SMP-архитектура). В этих ЭВМ объединялось от 2 до шестнадцати процессоров, имеющих равноправный, симметричный доступ к общей ОП. SMP обладает серьёзным недостатком, заключающимся в плохой масштабируемости систем, т.е. при подключении дополнительных процессоров неизбежно наблюдается рост числа конфликтов. А также помимо этих двух систем на рынке присутствуют кластеры и векторно-конвейерные суперкомпьютеры.
Векторно-конвейерные суперкомпьютеры.
В основе данного вида ЭВМ лежат два принципа:
введение набора команд для векторных операций. Векторные операции позволяют манипулировать целыми массивами данных
конвейерная организация обработки потока команд.
Главное назначение векторных операций заключается в распараллеливании операторов цикла. Большая доля вычислительной работы связана с циклами, причем эти действия выполняются компиляторами автоматически. В процессе развития происходило слияние архитектур. Типичными представителями гибридной архитектуры были CRAY J-90, CRAY T-90, NEC SX. В данное время векторные компьютеры проигрывают МРР-системам.
Симметричные мультипроцессоры.
Характерной чертой подобных систем является то, что все процессоры имеют прямой равноправный доступ к любой точке общей памяти. Проблему масштабируемости удалось частично снять разделением памяти на блоки. Однако оказалось, что к одному блоку в любом случае не могут быть подключены более, чем 32 процессора.
UMA – Unified Memory Architecture (унифицированная архитектура памяти (память с однородным доступом)).
NUMA – Non Unified Memory Architecture (архитектура неоднородной памяти).
SMP – Symmetric Multi Processing (симметричная мультипроцессорность).
PVP – Parallel Vector Processors.
NCC-NUMA – Non Coherent Cash (некогерентный кэш).
CC-NUMA –Coherent Cash (когерентный кэш).
СОМА – Cash Only Memory Access.
MPP – Massively Parallel Processing (массивные параллельные вычисления).
ТОП–10 современных суперкомпьютеров.
Tianhe-2 (Milky Way 2) – кластер, Intel 1200 ГГц, ядер – 3 млн. 120 тыс. производительность – 33863 TeraFlops, теоретическая – 55 TeraFlops. Мощность – 18000 КВт, память – 1024000 Гб.
Titan (Cray XK7) – 2,2 ГГц, ядер – 560640, производительность – 17,6 PetaFlops, теоретическая – 27 PetaFlops, мощность – 10000 КВт, память – 710 Тб.
Sequoia (BlueGene/Q) – 1,6 ГГц, IBM, 1573000, 17 PetaFlops, 20 PetaFlops, 7000 КВт, 1,5 Пб.
…
…
…
…
…
SuperMUC
…
Разделение типов суперкомпьютеров основывается на способах организации ОП. Согласно данному подходу различают 2 типа многопроцессорных систем: мультипроцессоры и мультикомпьютеры. У мультикомпьютеров память распределенная.
Мультипроцессоры с системой общей разделяемой памятью.
Для систематики мультипроцессоров учитывается способ построения общей памяти.
Два подхода: UMA, NUMA (однородный и неоднородный).
Одной из главных проблем, возникающих при организации параллельных вычислений на суперкомпьютерах с общей памятью – это доступ с разных процессоров к общим данным и обеспечение в этой связи когерентности, т.е. однозначности содержимого разных КЭШей. Суть в том, что при наличии общих данных копии значений одних и тех же переменных могут оказаться в КЭШах разных процессоров. При этом, если один из процессоров изменит значения разделяемой переменной, то значения копий в КЭШах других процессоров окажутся недействительными и их использование приведет к некорректности расчетов. Обеспечение однозначности КЭШей реализуется на аппаратном уровне. Для этого после изменения значения общей переменной все копии этой переменной в остальных КЭШах отмечаются как недействительные, и последующий доступ к этой переменной потребует обязательного обращения к основной памяти. Необходимость обеспечения когерентности приводит к снижению скорости вычислений и затрудняет создание систем с большим количеством процессоров. Наличие общих данных при параллельных вычислениях приводит к необходимости синхронизации одновременно выполняемых потоков команд. Общий доступ к данным может быть обеспечен и при физически распределенной памяти. Этот подход именуется неоднородный доступ к памяти. Среди этих систем выделяют:
системы, в которых для представления данных используется только локальная кэш-память (СОМА). Примеры: KSR-1, DDM.
системы, которых обеспечивается когерентность локальных КЭШей разных процессоров (СС). Примеры: SGI Orgin, Sun HPC, IBM/Sequent.
системы, в которых обеспечивается общий доступ к локальной памяти разных узлов без поддержки на аппаратном уровне когерентности КЭШа (NCC). Примеры: Cray T3E.
Использование распределенной общей памяти упрощает создание производительных суперкомпьютеров. Однако возникающие проблемы приводят к существенному повышению сложности параллельного программирования.
