[Advcomparch] blocking
Konstantinos Nikas
knikas at cslab.ece.ntua.gr
Sun Jul 5 17:13:53 EEST 2009
Ναι, θα έπρεπε να είναι jj+B.
Γενικότερα, το blocking αλλάζει τη σειρά με την οποία τα δεδομένα
προσπελαύνονται, αλλά δεν πρέπει να επηρεάζει την εγκυρότητα του κώδικα.
Επομένως, πρέπει να γίνουν και πάλι όλες οι επαναλήψεις.
Για την άσκηση στο ερώτημα b το blocking θα εφαρμοστεί ταυτόχρονα στα
loops. Στο c αναφερόμαστε στις εκδόσεις που υλοποίησατε για τα ερωτήματα
a και b.
K.
Stelios wrote:
> Ήθελα να ρωτήσω σχετικά με τις διαφάνειες του cache optimization,
> πάνω στο κομμάτι του κώδικα για blocking που φαίνεται παρακάτω.
>
> /* After */
> for (jj = 0; jj < N; jj = jj+B)
> for (kk = 0; kk < N; kk = kk+B)
> for (i = 0; i < N; i = i+1)
> for (j = jj; j < min(jj+B-1,N); j = j+1)
> {r = 0;
> for (k = kk; k < min(kk+B-1,N); k =
> k+1)
> r = r + y[i][k]*z[k][j];
> x[i][j] = x[i][j] + r;
> };
>
> Μήπως πρέπει να είναι min(jj+B,N) αντι για jj+B-1 και αντίστοιχα το
> ίδιο για το kk+Β; γιατί έτσι όπως είναι, γίνεται μια λιγότερη
> επανάληψη σε καθεμια απ'τις δυο γραμμές και ο κώδικας δεν φαίνεται να
> είναι ισοδύναμος με τον αρχικό. Αν κάνω λάθος μπορείτε να μου
> εξηγήσετε τη χρησιμότητα του -1;
> Και δυο διευκρινίσεις στην άσκηση: στο ερώτημα b του cache blocking,
> πρέπει να εφαρμόσουμε blocking σε i,j και k ταυτόχρονα ή στα τρία
> ξεχωριστά; στο ερώτημα c ποιές εννοούνται οι εκδόσεις που υλοποιήσαμε;
> ------------------------------------------------------------------------
>
> _______________________________________________
> Advcomparch mailing list
> Advcomparch at lists.cslab.ece.ntua.gr
> http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
>
--
Dr. Konstantinos Nikas
Computing Systems Laboratory
School of Electrical and Computer Engineering
National Technical University of Athens
Tel: +30-210-7722495
e-mail: knikas at cslab.ece.ntua.gr
http://www.cslab.ece.ntua.gr/~knikas
More information about the Advcomparch
mailing list