Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Обеспечение переносимости программ, использующих SIMD расширенияПоиск на нашем сайте Библиотеки подпрограмм
Для некоторых предметных областей существуют эффективно реализованные библиотеки операций, оптимизированные под различные вычислительные системы. Наиболее ярким примером таких библиотек можно назвать BLAS и Lapack, которые содержат процедуры, реализующие многие операции линейной алгебры (работа с векторами, матрицами). Существуют реализации этих библиотеки под многие архитектуры, что обеспечивает переносимость программ, написанных с их использованием. Каждая реализация стремится учесть все особенности целевой архитектуры для достижения высокой производительности, в частности, векторные операции, кэш-память.
При использовании SIMD расширений возникает проблема поддержки исполнения программы на процессорах, где использованные расширения не поддерживаются. Например, в вашей программе может быть вычислительная функция, использующая инструкции из расширения AVX. Чтобы обеспечить возможность выполнения вашей программы на процессорах, где не поддерживается AVX, вам необходимо 1) уметь определять внутри программы, какие расширения поддерживает процессор и система, на которых она выполняется; 2) иметь несколько реализаций функции где используются SIMD расширения (например, AVX версия, SSE версия и версия без использования SIMD расширений). Для определения поддерживаемых расширений в архитектуре x86 используется инструкция CPUID.
Задание:
Обращение матрицы A размером N*N можно выполнить с помощью разложения в ряд: A-1=(I + R + R2 + ...)B, I - единичная матрица (на диагонали - единицы, остальные - нули), Aij - элемент матрицы А с индексом (i,j). 1) Написать три варианта программы вычисления обратной матрицы: ñ без использования специальных расширений (обычный вариант), ñ с использованием встроенных векторных функций расширения SSE. ñ с использованием библиотеки BLAS.
Каждый вариант программы: ñ оптимизировать по скорости, насколько это возможно, ñ проверить на правильность на небольшом тесте. Использовать тип данных float. Размер N предполагать кратным четырем.
2) Сравнить время работы четырех вариантов программы для N=1024, число шагов 10: ñ обычный без векторизации компилятором, ñ обычный с векторизацией компилятором (нужно указать тип процессора), ñ с ручной векторизацией, ñ c использованием BLAS. Определить: ñ среднее время одной итерации цикла (умножение + сложение матриц), ñ время вычислений вне цикла (общее время минус время в цикле).
Замер времени выполнить несколько раз, в качестве результата взять минимальное время. Для измерения времени использовать функцию times (измерения времени работы процесса). По результатам измерений сделать вывод.
Контрольные вопросы:
Список литературы для РГР 1. Касперски К. Техника оптимизации программ. Эффективное использование памяти. – СПб.: БХВ-Петербург, 2003. – 464 с. 2. Грушин В.В. Выполнение математических операций в ЭВМ. Погрешности компьютерной арифметики: Учебное пособие / СПбГЭТУ "ЛЭТИ". СПб., 1999. 56 с. 3. Г.Р. Эндрюс. Основы многопоточного параллельного и распределенного программирования. – М.: Изд. Дом Вильямс, 2003. – 330 с. 4. OpenMP Homepage, http://www.openmp.org 5. Гуров В.В. Архитектура микропроцессоров: Учебное пособие. – М..: Интернет-Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2010. – 272 с. 6. Калачев А.В. Многоядерные процессоры: Учебное пособие. – М..: Интернет-Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2011. – 247 с.
|
||
|
Последнее изменение этой страницы: 2024-07-06; просмотров: 56; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.005 с.) |