Автор статьи
Валерия
Эксперт по сдаче вступительных испытаний в ВУЗах
- Изучить векторные расширения для доступных микропроцессоров.
- Получить базовые навыки использования в программах на языке C векторные расширения архитектуры x86.
- Исследовать влияние векторизации вычислений на время работы программ при использовании векторных расширений.
- Разработать программу обращения матрицы с помощью разложения в ряд по заданной формуле на языке C, используя возможности компилятора по генерации SIMD кода.
- Используя встроенные функции потокового SIMD расширения, разработать программу обращения матрицы.
- Разработать программу обращения матрицы с использованием библиотеки BLAS.
- Встроить в каждую из программ код измерения времени работы программы.
- Измерить время работы всех программ для матриц с разными размерами и нарисовать графики с результатами измерений в осях OX – размер матрицы, OY – время работы с секундах.
- Выявить влияние способа векторизации на время выполнения всех версий программ и сделать выводы о достоинствах и недостатках каждого изученного способа векторизации.
- Сформулировать рекомендации по эффективному использованию SIMD расширений в счетных программах.
- Изучить команду CPUID архитектуры x86, команды базовый набор инструкций MMX, 3DNow, SSE, SSE2, SSE3, AVX, AltiVec, встроенные функции потокового SIMD расширения, набор ключей компилятора для генерации кода для SIMD расширений и подпрограммы обработки библиотеки BLAS.
- Разработать программу обращения матрицы с помощью разложения в ряд по заданной формуле на языке C.
I — единичная матрица (на диагонали — единицы, остальные — нули), Aij — элемент матрицы А с индексом (i,j).
- Сгенерировать для разработанной программы два исполняемых файла: один обычный и второй с использованием возможностей компилятора по генерации SSE кода.
- Векторизовать вычисление подпрограммы умножения матриц с помощью встроенных функций потокового SIMD расширения для архитектур x86 и x86_64.
- Разработать программу обращения матрицы (можно взять любой алгоритм) с использованием библиотеки BLAS.
- Для проведения замеров времени исполнения программ на множестве матриц с различными размерами написать скрипт (на bash, csh или ином скриптовом языке), запускающий компиляцию и счет программы в цикле по размеру массива.
- Для отрисовки графиков времени работы программ использовать утилиту GNU Plot.
- По результатам тестирования сформулировать рекомендации по эффективному программированию микропроцессоров с векторными расширениями
О сайте
Ссылка на первоисточник:
https://www.omgtu.ru
Поделитесь в соцсетях: