Задача B. Параллельное перемножение матриц

Входной файл:Стандартный вход   Ограничение времени:15 сек
Выходной файл:Стандартный выход   Ограничение памяти:4000 Мб

Условие

Вам дан класс с основными функциями для реализации матриц со следующим интерфейсом.

        class DenseMat {
          public:
            DenseMat(int32_t rows = 0, int32_t cols = 0);
            DenseMat(int32_t rows, int32_t cols, const std::vector<int32_t>& data);

            int32_t Rows() const;
            int32_t Cols() const;

            const int32_t& operator()(int row, int col) const;
            int32_t& operator()(int row, int col);

            bool operator==(const DenseMat& other) const;
                  bool operator!=(const DenseMat& other) const;
        };
      

Требуется реализовать функцию DenseMat MatMulParal(const DenseMat& a, const DenseMat& b, int thread_count); , которая выдает результат умножения матрицы a на матрицу b.

Функция должна использовать алгоритм параллельного умножения матриц, используя thread_count потоков. При перемножении матриц вычисление каждого i, j-го элемента матрицы-результата не зависит от порядка вычисления остальных элементов, поэтому вы можете вычислять отдельные части матрицы-результата независимо в разных потоках без синхронизации между ними.

Тестирующая система будет проверять, что:

Материалы задачи

main.cpp task.xml

0.068s 0.014s 17