Ήθελα να ρωτήσω σχετικά με τις διαφάνειες του 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 ποιές εννοούνται οι εκδόσεις που υλοποιήσαμε;
Ναι, θα έπρεπε να είναι 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@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
advcomparch@lists.cslab.ece.ntua.gr