Calcolo dei flops

bartofra
Ciao a tutti, ho veramente un grosso problema a calcolare il numero di flops utilizzati da un calcolatore
per eseguire una generica funzione.

Ad esempio ho letto che il costo computazionale del prodotto tra due matrici quadrate N x N è pari a
$2*N^3$

Se però faccio i calcoli ad esempio con 2 matrici 2 x 2, $ A$ e$ B$ tali che:

$A = ((a,b),(c,d))$ e $ B = ((e,f),(g,h))$

mi viene: $ A * B$ =

$ a * e + b*g$
$ a * f + b*h$
$ c * e + d*g$
$ c * f + d*h$

Per ogni riga ho quindi 2 moltiplicazioni e una somma, in totale fanno 12 operazioni e non $2*N^3=16 flops$

Qualcuno potrebbe per cortesia spiegarmi cosa mi sta sfuggendo?

Grazie

Risposte
bartofra
Sempre in merito all'argomento. Nell'esempio in oggetto ho effettivamente $N^3$ moltiplicazioni. Ma il totale fa 12 e non 16.

Se per esempio moltiplico due matrici di dimensione 4 x 4 , mi ritrovo $N^3 = 64$, devo poi aggiungere le operazioni di somma che sono 3 per ogni elemento calcolato della matrice somma. Quindi ho $N^3 + 3*16= 112 $ ma la formula darebbe $2*N^3=128$

_fabricius_1
Da quello che ho avuto modo di vedere, quando si parla di costo computazionale si riporta solo il termine di ordine massimo trascurando quelli di ordine inferiore.

Se moltiplichi due matrici di ordine N, per calcolare ogni elemento hai bisogno di N moltiplicazioni ed $N-1$ addizioni, quindi in totale si effettuano $N^3$ moltiplicazioni ed $N^2(N-1)$ addizioni, in tutto $2N^3-N^2$ operazioni. Il termine di grado massimo è $2N^3$, gli altri si trascurano. Talvolta non si riporta nemmeno il coefficiente del termine di grado massimo.

bartofra
Grazie. Quello che trae in inganno e che queste formule vengono sempre
Scritte come se fossero formule precise, e invece
Evidentemente non lo sono.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.