Ήθελα να ρωτήσω σχετικά με τις διαφάνειες του cache optimization, πάνω στο κομμάτι του κώδικα για blocking που φαίνεται παρακάτω.<br><br>/* After */<br>for (jj = 0; jj < N; jj = jj+B)<br>for (kk = 0; kk < N; kk = kk+B)<br>
for (i = 0; i < N; i = i+1)<br>for (j = jj; j < min(jj+B-1,N); j = j+1)<br>{r = 0;<br>for (k = kk; k < min(kk+B-1,N); k =<br>k+1)<br>r = r + y[i][k]*z[k][j];<br>x[i][j] = x[i][j] + r;<br>};<br><br>Μήπως πρέπει να είναι min(jj+B,N) αντι για jj+B-1 και αντίστοιχα το
ίδιο για το kk+Β; γιατί έτσι όπως είναι,
γίνεται μια λιγότερη επανάληψη σε καθεμια απ'τις δυο γραμμές και ο κώδικας δεν φαίνεται να είναι ισοδύναμος με τον αρχικό. Αν κάνω λάθος μπορείτε να μου εξηγήσετε τη χρησιμότητα του -1; <br>Και δυο διευκρινίσεις στην άσκηση: στο ερώτημα b του cache blocking, πρέπει να εφαρμόσουμε blocking σε i,j και k ταυτόχρονα ή στα τρία ξεχωριστά; στο ερώτημα c ποιές εννοούνται οι εκδόσεις που υλοποιήσαμε; <br>