Calcolo dei flops
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
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
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$
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$
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.
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.
Grazie. Quello che trae in inganno e che queste formule vengono sempre
Scritte come se fossero formule precise, e invece
Evidentemente non lo sono.
Scritte come se fossero formule precise, e invece
Evidentemente non lo sono.