быстрый алгоритм вычисления умножения матриц

В середине кода на C ++, eclipse, мне нужно вычислить умножение матриц A и B размером 2400 * 3600 (поэтому размеры не совпадают ). Матрицы хранятся в двухмерных массивах с плавающей запятой. Они не являются разреженными, без ограничений.

Каждое умножение занимает так много времени (несколько минут), и мне серьезно нужно уменьшить его, потому что у меня есть цикл, который повторяется 50 миллионов раз. и каждый раз новые A и B должны умножаться. Приветствуются любые рекомендации, позволяющие уменьшить временную сложность. (даже изменение структуры хранения данных, если вы думаете, что это может помочь). Например, что, если я сохраню данные в одномерных массивах? Или использовать векторы вместо массивов?

В одном конкретном случае первый столбец всегда равен 1, а значения равны 1, -1 или нулю. Есть идеи по этому поводу?
В остальных случаях значения могут быть любыми. ** одно из этих умножений - это X, умноженное на его транспонированное. Есть ли какие-либо рекомендации по этому поводу?

7
задан Pegah 6 June 2011 в 08:21
поделиться