Методические указания и задание на выполнение курсовой работы


Задание

  1. Написать вычислительную подпрограмму по заданию варианта.
  2. Реализовать возможность вызова полпрограммы из п.1 в цикле для заданного диапазона размеров матрицы или вектора с заданным шагом приращения размера.
  3. Встроить измерение времени выполнения главной вычислительной операции с помощью таймера с заданным вариантом таймера.
  4. Собрать статистику времени выполнения вычислительной подпрограммы для нескольких уровней оптимизации в выбранном компиляторе. Построить графики зависимости времени выполнения от размеров.
  5. (только для варианта с умножением матриц) провести транспонирование второй матрицы, сделать обход по ней по строкам, повторить для этого варианта реализации п. 4.
  6. векторизовать вычисления в теле самого вложенного цикла вычислительной подпрограммы. Повторить для этого варианта реализации п. 4.
  7. (для всех вариантов, кроме решения системы линейных уравнений) Реализовать многопоточный вариант вычислительной процедуры. Замерить ускорение для различного числа потоков по сравнению с последовательной версией.
  8. (только для скалярного произведения векторов) Объединить векторизованную версию и многопоточную. Оценить полученный выигрыш в производительности по сравнению с последовательной, векторной и многопоточной версиями.

Рекомендации по выполнению работы

  • Векторизованную версию вычислительной процедуры можно реализовать с помощью SIMD/SSE интринсиков или ассемблерных вставок с SIMD/SSE командами. Если имеется компьютер с процессором с AVX, желательно построить версию на AVX и сравнить выигрыш с SSE.
  • Многопоточную версию вычислительной процедуры можно реализовать с помощью OpenMP, POSIX Threads или Windows Threads.


Номер варианта Вашего индивидуального задания курсовой работы соответствует последней цифре Вашего пароля (если последняя цифра 0, то вариант - 10).

Примерные темы контрольных работ:

Наименование темы
1 Умножение двух квадратных матриц. Элементы матрицы имеют тип float
2 Скалярное произведение двух векторов. Элементы векторов имеют тип float
3 Решение системы линейных уравнений методом Гаусса для переменных типа float
4 Умножение двух квадратных матриц. Элементы матрицы имеют тип long
5 Скалярное произведение двух векторов. Элементы векторов имеют тип long
6 Вычисление свертки двух сигналов. Тип элемента, хранящего значение отсчета сигнала, - float
7 Вычисление свертки двух сигналов. Тип элемента, хранящего значение отсчета сигнала, - long
8 Умножение двух прямоугольных матриц. Элементы матрицы имеют тип short
9 Скалярное произведение двух векторов. Элементы векторов имеют тип short
10 Умножение двух квадратных матриц. Элементы матрицы имеют тип unsigned long


Варианты выбора таймера (номер вариант выбирается по предпоследней цифре пароля)

Варианты выбора таймера

Предпоследняя цифра Таймер
1,5, 9 Таймер астрономического времени (системный таймер)
2, 6, 0 Монотонный таймер
3, 7 Таймер времени выполнения процесса
4, 8 Счетчик тактов