Este documento detalha o número de operações necessárias para a multiplicação de duas matrizes for).
Ele serve de fundamentação teórica para interpretar os resultados experimentais deste projeto.
A multiplicação de matrizes tem complexidade cúbica,
-
Número de operações por multiplicação de uma linha por uma coluna:
- Para cada célula do resultado, calculamos o produto de
$N$ pares de elementos e somamos os resultados. Isso resulta em$N$ multiplicações e$N-1$ somas para cada célula.
- Para cada célula do resultado, calculamos o produto de
-
Número total de células na matriz resultado:
- A matriz resultado é
$N \times N$ , portanto contém$N^2$ células.
- A matriz resultado é
-
Número total de operações (somas e multiplicações):
- Para cada célula, fazemos
$N$ multiplicações e$N-1$ somas. O número total de operações para a multiplicação das duas matrizes será aproximadamente:$N^2 \times (2N - 1) $
- Para cada célula, fazemos
-
Fórmula final:
$\text{Operações totais} = N^2 \times (2N - 1)$
Para grandes valores de
- Leitura: Leitura dos elementos das duas matrizes.
- Escrita: Escrita do resultado na matriz de saída.
- Soma: Somar os produtos parciais ao elemento da matriz de saída.
- Multiplicação: Multiplicação de elementos correspondentes das duas matrizes.
-
Leituras:
- Para calcular cada elemento da matriz resultado, precisamos ler
$N$ elementos de cada matriz. Isso resulta em$2N^3$ leituras no total.
- Para calcular cada elemento da matriz resultado, precisamos ler
-
Escritas:
- Como a matriz resultado tem
$N^2$ células, fazemos$N^2$ operações de escrita.
- Como a matriz resultado tem
-
Multiplicações:
- Para cada célula da matriz resultado, fazemos
$N$ multiplicações. O total de multiplicações é$N^3$ .
- Para cada célula da matriz resultado, fazemos
-
Somas:
- Para cada célula, realizamos
$N-1$ somas. O total de somas é$N^3 - N^2$ .
- Para cada célula, realizamos
| Operação | Fórmula | Aproximação para grandes (N) |
|---|---|---|
| Leituras | ||
| Escritas | ||
| Multiplicações | ||
| Somas |
-
Leituras:
$2 \times 1000^3 = 2 \times 1.000.000.000 = 2.000.000.000 \, \text{leituras}$ -
Escritas:
$1000^2 = 1.000.000 \, \text{escritas}$ -
Multiplicações:
$1000^3 = 1.000.000.000 \, \text{multiplicações}$ -
Somas:
$1000^3 - 1000^2 = 1.000.000.000 - 1.000.000 = 999.000.000 \, \text{somas}$
Nos gráficos gerados pelo script plot_benchmarks.py, a curva de referência
Os resultados experimentais devem se aproximar (em escala) desse crescimento.