Блок задач

12. Многопоточность

Сложность 5

Задача «Матрицы»

Постановка задачи

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

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

Все операции (сложение, вычитание, умножение, детерминант) класса Matrix должны быть 2-х видов: синхронные и асинхронные.

Требования

  1. Написать unit test'ы для реализованных классов и функций.
  2. Провести замеры времени выполнения многопоточного подхода и последовательного.