É necessário encontrar a potência (número inteiro positivo) da matriz de números reais. Existem muitos algoritmos eficientes de multiplicação de matrizes (por exemplo, alguns algoritmos paralelos são Cannon, DNS ), mas existem algoritmos destinados exatamente a encontrar o poder da matriz e que são mais eficientes do que a execução seqüencial da multiplicação de matrizes? Estou particularmente interessado em algoritmos paralelos.
11
Respostas:
fonte
Há dois níveis nos quais você pode analisar acelerações paralelas com exponenciação de matriz: o nível "macro-algorítmico" que decide quais matrizes multiplicar e o nível "micro-algorítmico" onde você pode acelerar as multiplicações com paralelismo.
(Nota: a página da wikipedia é para cálculo geral da matriz. Não tenho certeza se isso pode ser paralelizado ainda mais usando as informações que estamos construindo ao quadrado uma matriz.)
A questão é: podemos vencer isso com paralelismo? Eu afirmo que a resposta é não.
A razão simples é que a exponenciação ao quadrado é essencialmente um algoritmo de programação dinâmica; permite que você pule todo o trabalho reutilizando sub-resultados, mas isso, por sua vez, cria uma dependência de dados que não permite o paralelismo. Se nos livrarmos da dependência de dados, mas também aumentamos bastante a quantidade de trabalho que temos que fazer.
No entanto, se realizássemos a exponenciação dessa maneira, ficaria assim:
fonte
fonte