Если у вас есть несколько процессоров, которые могут работать параллельно, то вы можете рассчитать любую мощность до мощности (2 ^ k) за k шагов. Например: чтобы вычислить , вы рассчитываете:M15
Этап 1: Рассчитать M2
Этап 2: Рассчитать и M 4 = M 2 ∗ M 2M3=M2∗MM4=M2∗M2
Этап 3: вычислить и M 8 = M 4 ∗ M 4M7=M4∗M3M8=M4∗M4
Этап 4: Расчет M15=M8∗M7
Это на одно умножение больше, чем вычисление в трех умножениях и повышение M 5 до третьей степени в двух других умножениях, но должно быть быстрее, если у вас есть два процессора. Для произвольной высокой мощности вам понадобится больше процессоров.M5M5
Если вы используете алгоритм перебора для умножения, умножая строку на столбец, вы можете сэкономить некоторое время, рассчитав одну строку продукта, а затем сразу же использовать эту строку для следующего продукта. Это помогло бы при расчете , где можно начать вычисление M 3 , как только первый ряд M 2 был рассчитан; это не будет то , что полезно с M 4 , так как нам нужны обе строки и столбцы М 2 . Для больших держав вы, вероятно, могли бы определить, какие полномочия рассчитывать.M3M3M2M4M2
И после публикации этого становится очевидным , что вы можете использовать несколько процессоры очень легко: Вы начинаете путем вычисления первой строки . Когда у вас есть этот ряд, у вас есть вся информация, необходимая для вычисления первой строки M 3 = M 2 ∗ M , поэтому вы рассчитываете второй ряд M 2 и первый ряд M 3 параллельно. Затем вы можете рассчитать третий ряд М 2 , второй ряд М 3 и первый ряд М 4 параллельно и так далее.M2= М* MM3= М2* MM2M3M2M3M4
Это будет выполнять намного больше операций, чем необходимо (например, 14 умножений матриц для вместо минимальных 5 или 6 четырехэтапного метода). Если мощность невелика по сравнению с количеством процессоров, это все равно будет быстрее. Но вычисление M 1000 с четырьмя процессорами с использованием этого метода будет неэффективным; сделать это оптимальным способом было бы интересной проблемой.M15M1000
Комбинирование подходов: например, используя четыре процессора, вы можете вычислять AB, ABC, ABCD и ABCDE практически параллельно, вычисляя каждый продукт по одной строке за раз. Это позволяет рассчитать все четыре от до M 5, используя четыре процессора примерно за одно время, как один продукт с одним процессором.M2M5
Учитывая эти четыре результата и оригинальный M, вы можете вычислить четыре из матриц до М 25 в то же время снова, при условии , что матрицы в большинстве пяти держав друг от друга. Таким образом , каждая мощность до М 25 может быть рассчитана примерно в два раз времени одного процессора матричного продукта.M6M25M25
С помощью этих вычисленных матриц все матрицы до и еще несколько до M 125 можно рассчитать в три раза за время одного матричного продукта, если доступны четыре процессора. С k процессорами это должно возрасти как минимум до мощности k ( k + 1 ) 2 .M108M125к ( к + 1 )2