25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.8 Ottimizzazione delle operazioni con array 157<br />

! D: scalarizzazione corretta e<br />

! loop reversal<br />

DO i=n-1,2,-1<br />

a(i) = a(i)+a(i-1)<br />

END DO<br />

3.8.12 Loop normalization<br />

<strong>Il</strong> loop normalization converte tutti i cicli in modo tale che l’indice del ciclo valga inizialmente<br />

1 (oppure 0) e sia incrementato di un fattore unitario ad ogni iterazione. Normalizzare un ciclo<br />

può consentire altri tipi di trasformazione come il peeling o la fusione sebbene la sua maggiore<br />

utilità risiede nel fatto di consentire al compilatore di eseguire test di coerenza sulle variabili<br />

indiciate nei cicli, test che di solito possono aver luogo soltanto in presenza di cicli con range<br />

normalizzati. Un esempio di loop normalization è il seguente:<br />

! ciclo originale<br />

DO i=1,n<br />

a(i) = a(i)+k<br />

END DO<br />

DO i=2,n+1<br />

b(i) = a(i-1)+b(i)<br />

END DO<br />

! dopo la normalizzazione<br />

DO i=1,n<br />

a(i) = a(i)+k<br />

END DO<br />

DO i=1,n<br />

b(i+1) = a(i)+b(i+1)<br />

END DO<br />

Si noti che è soltanto dopo l’operazione di normalizzazione che i due cicli potranno essere<br />

eventualmente fusi:<br />

! dopo normalizzazione e fusione<br />

DO i=1,n<br />

a(i) = a(i)+k<br />

b(i+1) = a(i)+b(i+1)<br />

END DO<br />

E’ da notare che tutte queste operazioni vengono svolte automaticamente da alcuni compilatori<br />

a determinati livelli di ottimizzazione il che lascia al programmatore come unica preoccupazione<br />

quella di scrivere programmi che utilizzino cicli nel modo più semplice, chiaro e<br />

compatto possibile, mentre è il compilatore a farsi carico del compito di ottimizzare il codice<br />

”dietro alle quinte”. Nondimeno è importante capire i problemi coinvolti nell’ottimizzazione dei

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!