Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВВС.docx
Скачиваний:
10
Добавлен:
20.09.2019
Размер:
283.44 Кб
Скачать

Лекция № 8 (26.04.12)

Существует закон Андыла, который гласит, что время работы программы определяется ее самой медленной частью. Все множество операций программы можно разбить на множество последовательных операций и множество векторных операций. Если доля велика то большого ускорения работы программы не будет и необходимо менять алгоритм. Кроме того надо учитывать особенность компилятора, который может не распознать векторизуемость отдельных конструкций и сгенерировать для них скалярный код.

Существует 2 фактора снижающих производительность компьютера относительно ее пикового значения:

  1. время разгона векторной команды;

  2. секционирование длинных векторов.

Для инициализации векторной команды требуется несколько тактов, после чего начинается заполнение конвейера и лишь через некоторое время появляются результаты. Вектор-регистр содержит 128 элементов, т.е. для запуска векторной команды длинный вектор необходимо разбить на секции по 128 элементов.

Секцию вектора, расположенную в регистре можно обрабатывать с помощью векторных команд. Т.е. существует 2 цикла:

  1. внешний – по секциям;

  2. внутренний – внутри секции.

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

for (i=0; i<n; i++)

A[i]=B[i]*S+C[1]

Производительность Cray C 90 на этом фрагменте в зависимости от длинны вектора n указано в таблице.

n

МФлопс

1

7

2

14

4

27,6

16

105,5

32

181,9

128

433,7

150

413,2

256

548,0

257

491,0

512

659,2

1024

720,4

2048

768,0

8192

802,0

Из таблицы видно, что с ростом длины вектора доля накладных расходов на инициализацию векторных операций и секционирования падает. Очень короткие циклы выгоднее выполнять не в векторных, а в скалярных режимах, т.к. не надо будет тратить дополнительное время на инициализацию векторных команд.

Следующие факторы, снижающие производительность, заключаются в том, что перед началом выполнения любой операции данные должны быть занесены в регистры. Для этого имеется 3 независимых канала передачи данных, 2 из которых работают на чтение из памяти, а третий на запись. Такая структура хорошо работает для операций требующих не более двух входных векторов.

Например, на котором компьютер может работать в режиме с зацеплением. Операции с 3-мя векторными аргументами не могут быть реализованы столь же эффективно из-за ограниченной пропускной способности тракта процессор – память.

В набор векторных регистров входят 8 регистров по 128 слов в каждом. Другой фактор снижения производительности заключается в том, что часто бывает, что в программе постоянно происходит передача управления из одной части в другую (например, частое обращение к небольшим подпрограммам). Следствием такой структуры является частая перезагрузка буферов команд и следовательно возникнут дополнительные накладные расходы. Для того, чтобы приблизиться к пиковой производительности компьютера надо учитывать при программировании все эти факторы, в том числе и при разработке компиляторов.

Компьютеры ссNUMA (cache coherent Non Uniform Memory Access).

Когерентность КЭШей и неоднородный доступ к общей памяти должен учитываться. Время обращения к памяти зависит от того является ли это обращение к локальной или удаленной памяти. Рассмотрим на примере системы HPS, выпущен в начале 21 века. Может объединять от 2х до 64х процессоров. Все процессоры имеют доступ к общей памяти, организованной с архитектурой ссNUMA. т.е. все процессоры работают в едином адресном пространстве, адресуя любой байт памяти посредством обычных операций чтения – записи. Доступ к локальной памяти идет значительно быстрее, чем к удаленной памяти. Проблемы соответствия данных к КЭШ памяти процессоров решены аппаратным путем. Объем ОП 256 Гб, с возможным наращиванием до 1 Тбайта. Могут использоваться различные типы микропроцессоров (PA-8700, PA-8600, IA-64). Рассмотрим систему на базе процессора PA-8700 (фирма HP). Основу архитектуры составляют вычислительные ячейки, связанные иерархической системой переключателей.

Каждая ячейка является симметричным мультипроцессором, реализованным на одной плате, где есть все необходимые компоненты:

  • процессоры (до 4-х);

  • ОП (до 16 Гб);

  • контроллер ячейку (УУ);

  • Контроллер ввода/вывода (может быть).

Пример используемой ячейки

Центральное место в архитектуре ячейки занимает контроле ячейки состоящий, примерно, из 24 миллионов транзисторов в микросхемном исполнении. Для каждого процессора ячейки есть собственный порт в контролере. Обмен данными между каждым процессором и контроллером идет со скоростью 2 Гб/с. Память ячейки от 2 до 16 Гб. Конструктивно она разделена на 2 блока, каждый из них имеет свой порт в контроллере ячейки (суммарная пропускная способность УУ – М будет 4 Гб/с). Один порт контроллера ячейки всегда связан с внешним коммутатором. Скорость работы порта 8 Гб/с. Он предназначен для связи ячейки с другими ячейками системы. Контроллер ячейки (СС) отвечает из когерентность КЭШ памяти процессоров. В 64-х процессорной конфигурации состоит из 2-х стоек по 32 процессора.

К каждому коммутатору подключается 4 ячейки. Коммутатор содержит 8 портов со скоростью работы 8 Гб/с каждый. Один порт зарезервирован для связи с другими системами.

В суперкомпьютере возможны 3 вида задержек при обращении процессора к памяти:

  1. программа и данные в одной ячейке – задержка минимальная;

  2. программа и данные в разных ячейках, но обе ячейки подключены к одному коммутатору – задержка имеет среднее значение;

  3. программа и данные в разных ячейках, которые подключены к разным коммутаторам. В этом случае запрос идет через 2 коммутатора и задержка максимальная.

Очевидно, что задержка зависит от числа процессоров и числа одновременно работающих приложений. Например, при равномерном распределении запросов задержки будут следующими.

Количество процессоров

1 приложение

Много приложений

4

174

235

8

208

266

16

228

296

32

261

336

64

275

360

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]