4568

Использование параллелизма процессора для повышения эффективности программ

Лабораторная работа

Информатика, кибернетика и программирование

Использование параллелизма процессора для повышения эффективности программ Цель работы: научить студента самостоятельно разрабатывать максимально эффективные программы. Материал для изучения. Рассмотрим задачу умножения двух n ...

Русский

2012-11-22

35.5 KB

6 чел.

Использование параллелизма процессора для повышения эффективности программ

Цель работы: научить студента самостоятельно разрабатывать максимально эффективные программы.

Материал для изучения.

Рассмотрим задачу умножения двух n n квадратных  матриц: С = АВ.

Элементы матриц хранятся по строкам, а именно сначала хранятся элементы первой строки, затем второй и т.д.

Таким образом. Последовательнее элементы строки матрицы лежат друг за другом и доступ к ним будет максимально быстрым. Так как стратегия предвыборки элементов в кэш (т.е. чтение каждый раз целого блока оперативной памяти, равного по размеру строке кэша) себя полностью оправдывает. С другой стороны, последовательные элементы столбца матрицы лежат на расстоянии n* sizeof(double) байт друг от друга и доступ к ним будет максимально медленным (поскольку строка кэш-памяти существенно меньше расстояния между элементами).

Вычислим произведение матриц несколькими способами.

1. Стандартный способ. Цикл проведем по строкам матрицы.

для всех   m = 1, 2,…,n

для всех i = 1, 2,,n

 вычислить

В цикле по j (вычисление суммы) элементы одной строки матрицы А (к которым быстрый доступ) будут использованы многократно (в цикле по i), элементы же столбцов матрицы В (к которым относительно медленный доступ) повторно (в цикле по i) не используются. Тем самым при доступе к элементам В кэш-память  практически ничего не дает.

2. Цикл по столбцам матрицы.

для всех   m = 1, 2,…,n

для всех i = 1, 2,…,n

 вычислить

В цикле по j  (вычисление суммы) элементы матрицы А повторно (в цикле по i) не используются. Элементы же столбцов матрицы В используются много кратно (в цикле по i). Кэш память ускоряет доступ к элементам А за счет предвыборки подряд идущих элементов, и ускоряет доступ к элементам В, если столбец целиком поместился в кэш память (тогда в цикле по i обращение к элементам В в оперативной памяти будет только на первом шаге). Отметим, что если размер кэш памяти недостаточен (например n велико), то этот способ может оказаться хуже предыдущего, т.к. ухудшился способ доступа  к А и не получен выигрыш при доступе к В.

3. Третий метод.

Цикл проведем по N N, N=10 блокам матрицы С, внутри блока идем по столбцам.

для всех  bm = 1, 1+N, 1+2N, … ,    bm < n 

для всех bi = 1, 1+N, 1+2N, … ,    bi < n 

 для всех m= bm, bm+1, …, bm+N-1, m<n

   для всех i=bi, bi+1, … , bi+N-1, i < n

   вычислять  

В этом случае большой выигрыш в скорости получаем в том случае если используемые в циклах по m, i, j N строк матрицы А и N столбцов матрицы В поместились в кэш память. Если n  настолько велико что даже один столбец матрицы В не поместился целиком в кэш, то этот способ может оказаться хуже самого первого.

4.  Зададим параметр N таким, что n делится на N нацело. Тогда всякая матрица М может быть представлена:


Где  Mij – NN матрица, k=n/N. Тогда каждый блок Cim произведения С=АВ матриц А и В может быть вычислен через блоки матриц А и В.

 

В вычислении произведения NN матрица матриц Aij  и Bjm участвует только подмножество их N2 элементов матриц А и В . При небольшом N  это подмножество полностью поместится в кэш-памяти и каждое слагаемое послежней суммы быдет вычислено максимально быстро.

5. В предыдущих вариантах преимущества кэш-памяти почти уже были исчерпаны. Для получения дальнейшего прироста производительности вспомним о конвейерной организации процессора (современные процессоры имеют конвейер инструкций, достаточно глубокий). Для его заполнения длина линейного участка программы должна быть как минимум больше глубины конвейера (желательно в несколько раз ). Во всех предыдущих вариантах в самом внутреннем цикле (по j) находится оператор языка, который, в зависимости от целевого процессора, транслируется компилятором в 7 … 12 инструкций (включая операторы обслуживания цикла).  Для увеличения линейного участка программы в предыдущем варианте реализуем цикл следующим образом:

За один проход цикла по j будем вычислять сразу 4 элемента матрицы С – ci,m, ci,m+1, ci+1,m, ci+1,m+1. Поскольку при их вычислении используются повторяющиеся элементы матриц А и В, то также появляются дополнительные резервы для ускорения работы за счет оптимизации компилятора и кэш памяти.

Задание к лабораторной работе.

1. Запрограммировать алгоритмы умножения матриц.

2. Повести эксперименты на ЭВМ  с разными процессорами.

3. Построить таблицу соотношения скорости работы различных алгоритмов умножения матриц. (матрицы брать размерностью 10001000, 50005000, 1000010000 ). В таблицу заносить значения: отношения времени работы первого варианта к времени работы каждого из пяти вариантов.

4. Написать отчет.

5. Защитить у преподавателя.

Дополнительная литература:

Богачёв К.Ю. Основы параллельного программирования / К.Ю. Богачев. – М.: БИНОМ. Лаборатория знаний, 2003. – 342 с.


 

А также другие работы, которые могут Вас заинтересовать

24412. Типы процессов, развитие процесса в системе (ОС) 662.5 KB
  Каждый вычислительный процесс характеризуется набором действий набором информационных объектов последовательностью обработки и начальными состояниями говорят о наличии полного процесса в системе. Состояние системы определяется действиями производимыми процессами которые могут затребовать захватить или освободить ресурсы. В этом случае типы отношений предшествования которые возможны между процессами можно представить в следующем виде: Развитие процесса P представляется направленной дугой графа.
24413. Понятие семафора, назначение семафора, операции P(Q) и V(Q) 90 KB
  Ее можно проводить из любой точки Интернета в адрес любого сервера а для отслеживания злоумышленника потребуются совместные действия всех провайдеров составляющих цепочку от злоумышленника до атакуемого сервера VPN Потребительская сущность VPN виртуальный защищенный туннель или путь с помощью которого можно организовать удаленный защищенный доступ через открытые каналы Интернета к серверам баз данных FTP и почтовым серверам. VPN это: защита трафика основанная на криптографии; средство коммуникации с гарантией защиты доступа к...
24414. Понятие тупика, характеристика отношений, возникающих в системе (граф запросов и разделения ресурсов).Способ определения наличия тупиковой ситуации в системе (редукция графа) 112 KB
  К основным законам и подзаконным актам регламентирующим деятельность в области защиты информации относятся: Законы Российской Федерации: О федеральных органах правительственной связи и информации от 19.95 № 15ФЗ; Об информации информатизации и защите информации от 20.95 N 170; О лицензировании деятельности предприятий учреждений и организаций по проведению работ связанных с использованием сведений составляющих государственную тайну созданием средств защиты информации а также с осуществлением мероприятий и или оказанием услуг по...
24415. Четыре условия возможности возникновения тупика 77 KB
  Политика безопасности. Процедуры управления безопасностью также важны как и политики безопасности. Если политики безопасности определяют что должно быть защищено то процедуры безопасности определяют как защитить информационные ресурсы компании. Нескольких важных процедур безопасности: 1.
24416. Факторы сложности восстановления систем после тупика 69 KB
  Эксплуатация инфраструктуры безопасности. Эксплуатация инфраструктуры безопасности. Если такое превышение имеет место значит данная строка это одна из первоочередных целей разработки политики безопасности. Если интегральный риск превышает допустимое значение значит в системе набирается множество мелких огрешностей в системе безопасности которые в сумме не дадут предприятию эффективно работать.
24417. Описание формальной модели ОС для абстрактной микропроцессорной ЭВМ 155 KB
  Структуру ОС в t T можно представить с помощью графа Гt вершинами которого являются элементы Р={P0 Pn} множество процессов и множество ресурсов R={r0 rq} а ребра устанавливают связь между вершинами. ОС является динамически изменяемая система то некоторые элементы в моменты времени t1 t2 принадлежащие Т если t1≠t2 представляют структуру ОС в виде графа Гt1 и графа Гt2. Проследим изменения графа Гt отображая структуру ОС в любой момент времени t T. Определим множество Е как совокупность правил фиксирующих изменение структуры...
24419. Понятие ОС ЮНИКС. Основные преимущества, понятие процесса в ОС ЮНИКС, отличие от предыдущих ОС 1.63 MB
  Система UNIX проектировалась как инструмент предназначенный для создания и отладки новых средств ПО. Эти идеи позволили применить UNIX не только на компьютерах с разной архитектурой но и предали этой ОС такую модульность и гибкость которая явилась основным фактором для расширения и развития самой системы. Основным преимуществом UNIX перед другими системами явилось следующее: Единый язык взаимодействия пользователя с системой вне зависимости от применяемой ЭВМ. При разработке UNIX авторы стремились совместить два несовместимых...
24420. Переадресация ввода/вывода и конвейер, зачем и почему 360.5 KB
  Процессор i486 обеспечивает механизм тестирования кеша используемого для команд и данных. Хотя отказ аппаратного обеспечения кеширования крайне маловероятен пользователи могут включить тестирование исправности кеша в число тестов выполняемых автоматически при включении питания. Примечание: Механизм тестирования кеша уникален для процессора i486 и может не поддерживаться в точности следующими версиями процессоров данной линии. При выполнении тестирования кеша само кеширование должно быть отключено.