- •Многопроцессорные системы – общая характеристика, актуальность. Области применения. История развития. Виды параллелизма – расслоение памяти, векторно-конвейерная обработка, множественные фу.
- •2 Класса архитектур. Общая память – достоинства, недостатки.
- •Классификация Флинна. Примеры.
- •2 Варианта локальной памяти:
- •5. Иерархия памяти в современных компьютерах. Кэш. Терминология. 3 типа кэш-памяти. Стратегии поиска и замещения блоков. Сквозная и обратная запись. Достоинства и недостатки.
- •6. Проблема когерентности кэшей. Кэш с наблюдением (snooping) . Алгоритм mesi.
- •7. Уровни состоятельности. Строгая состоятельность – проблема поиска и проблема синхронизации записи. Владельцы и менеджеры данных. Write-broadcast и write-invalidate схемы записи.
- •Модели с ослаблением состоятельности.
- •Схемы, основанные на каталогах.
- •Виды коммуникационных сред. Составные части. Коммутаторы – простые и составные, с временным и пространственным разделением.
- •Классификация сетей. Терминология. Представление в виде графов. Топологии – решетка, тор, гиперкуб, челнок, дерево и др.
- •Массово-параллельные компьютеры – определение, основные понятия, история. Mpp. Asci Red и Cray t3e.
- •Измерение производительности. Терминология. Время отклика, время цп, таковая частота. Виды тестов. Фирменные тесты. Mips и mflops.
- •Тесты linpack. Ливерморские циклы. Spec. Тесты tpc.
- •Проектирование параллельных алгоритмов. 4 этапа. Характеристика этапов.
- •Декомпозиция – основная задача. 2 метода. Контрольные вопросы.
- •Определение коммуникаций. Варианты. Связь с 1 этапом.
- •Локальные и глобальные коммуникации. Контрольные вопросы.
- •Укрупнение. Цели. Методы. Контрольные вопросы.
- •Время простоя. Пример общей модели.
- •Эффективность и ускорение. Анализ масштабируемости – при фиксированном размере задачи, при переменном размере задачи.
- •Экспериментальные исследования – задачи, характеристика. Сравнение теоретических и экспериментальных данных. Возможные причины отклонений.
- •Модульность в параллельных программах. Виды композиции. Проблема перераспределения данных. Последовательная композиция – spmd. ScaLapack.
- •Параллельная композиция. Конкурентная композиция. Примеры. Правила применения.
- •Анализ производительности программы в целом. Усложняющие факторы. Пример.
- •Средства разработки параллельных программ. Классификация. Pvm – характеристика и идеология. Основные функции.
- •Нити. Синхронизация. Асинхронные коммуникации. Проблема детерминизма. Распределение по процессорам. – 2 фазы. Производительность.
- •Fortran 90 и hpf. Параллельные расширения f90. Основные понятия и директивы hpf. Примеры.
- •OpenMp – идея, технология, основные понятия. Основные директивы. Пример программы.
- •Linda – основные понятия. Функции. Пример – реализация барьерной синхронизации.
Модели с ослаблением состоятельности.
Если снизить требования к состоятельности, можно добиться значительного повышения производительности. В частности, были сделаны выводы о том, что параллельное программирование в модели с общей памятью лишь частично определяет порядок появления событий, как за счет явной синхронизации, так и за счет неявного знания о порядке появления событий в других нитях.
Слабая состоятельность требует, чтобы значение, возвращаемое операцией чтения, было записано операцией записи, которая могла бы непосредственно предшествовать операции чтения при некотором допустимом порядке исполнения отдельных нитей.
На основе этого определения было предложено откладывать обновления до того, как они потребуются - позволяет избежать обновлений, которые не понадобятся никому, а также позволяет собирать обновления в пакет. Вообще использование семантики приложения позволяет значительно повысить производительность, однако ценой усложнения программирования.
Другая модель - «освобождения», предложена разработчиками DASH из Стенфорда. Этот механизм предусматривает разделение обращений к памяти на обычные и синхронизирующие. Синхронизирующие, в свою очередь, делятся на запрос и освобождение. Запрос сигнализирует, что данные нужны, и до момента освобождения не гарантируется выполнение запросов другими процессорами. Снова, это требует явного указания запросов и освобождения программистом. Однако, в отличие от предыдущей модели, не требуется, чтобы:
- все синхронизации были вып-ны ДО обычного обращения;
- все обычные обращения были выполнены до синхронизации;
Схемы, основанные на каталогах.
Кэш с наблюдением «snooping» реализуется обычно аппаратурой кэша. Эта аппаратура наблюдает за шиной, обнаруживая транзакции, изменяющие ячейки, кэшированные в данном модуле. Кэш тж должен генерировать invalidate-транзакции, если происходит запись в разделяемую ячейку.
Основной недостаток snooping - немасштабируемость. Этот недостаток преодолен в схемах, основанных на каталогах. Основное их достоинство – наличие информации о владельце данных, что исключает широковещание, уменьшая требования к коммуникационной среде - поэтому особенно подходит для слабосвязанных систем.
Метод, который допускает существование нескольких чистых копий, но 1 грязной. При этой схеме, каждый кэш поддерживает бит модификации для каждой строки и в каталоге в ОП хранится копия всех тегов и этих битов. При RM в центральном каталоге проверяется, не является ли этот блок грязным в другом кэше. Если да, то он оттуда копируется в память, а затем читается. Иначе читается прямо из памяти. Затем информация в каталоге обновляется, показывая наличие чистой копии данных в кэше. При WM центральный каталог также проверяется. И в этом случае, если блок грязный, он сначала записывается в память. Если нет, он делается недействительным в других кэшах. Затем данные переносятся в запрашивающий кэш и в каталоге опмечается, что они грязные. При WH проверяется бит модификации кэша. Если он уже модифицирован, запись выполняется немедленно. Если чист, каталог информируется о модификации, и затем этот блок во всех кэшах помечается как недействительный.
Аналогичный алгоритм, отличающийся организацией каталога. Здесь для каждого блока хранятся биты модификации в количестве, равном количеству кэшей. Иная организация каталога. Он хранит 2 бита – 4 сост (не кэш, в одном, в многих, модифицирован). В этом случае не хранится информация, в каком кэше модифицированы данные, и требуется широковещание.