В середине кода С++, eclipse, мне нужно вычислить умножение матриц A и B с размером 2400 * 3600 (поэтому размеры не совпадают). Матрицы хранятся в двухмерных массивах с плавающей запятой. Они не разрежены, ограничений нет.
Каждое умножение занимает очень много времени (несколько минут), и мне серьезно нужно его уменьшить, потому что у меня есть цикл, который повторяется 50 миллионов раз. и каждый раз новые A и B должны быть умножены. Любые рекомендации приветствуются для уменьшения временной сложности. (даже изменение структуры хранения данных, если вы думаете, что это может помочь). Например, что, если я буду хранить данные в одномерных массивах? Или использовать векторы вместо массивов?
В одном конкретном случае первый столбец всегда равен 1, а значения равны 1, -1 или нулю. Есть идеи для этого случая?
В других случаях значения могут быть любыми. ** одно из этих умножений равно Х, умноженному на его транспонированное. Есть какие-то рекомендации по этому конкретному?
(i,j)->value
. - person Emile Cormier   schedule 06.06.2011