Καλημέρα,
On 06/18/2010 04:47 AM, Georgios Ioannidis wrote:
Καλημέρα σας. Στο παράρτημα Α των εκφωνήσεων της 4ης σειράς αρχικοποιείτε τους πίνακες ως εξής:
init_matrix(A, N); init_matrix(B, N); init_matrix(C, N);
Τα στοιχεία του πίνακα C όμως δεν θα πρέπει να αρχικοποιηθούν στο 0; Γιατί έτσι όλα τα στοιχεία πλην του C[0][0] είναι μη μηδενικά και λόγω του "C[i][j] +=" που έπεται, το αποτέλεσμα που προκύπτει είναι ουσιαστικά C=A*A+A αντί για C=A*A. Αν και αυτό κανονικά δεν αναμένεται να επηρεάσει τα αποτελέσματά μας, σωστά;
Σε παραπέμπω σε αντίστοιχη ερώτηση που είχε γίνει για το ίδιο θέμα πέρυσι: http://lists.cslab.ece.ntua.gr/pipermail/advcomparch/2009-June/000290.html Η ουσία είναι ότι η αρχικοποίηση με αυτό τον τρόπο αποτρέπει τυχόν "απρόοπτες" βελτιστοποιήσεις από τον compiler, που ενδεχομένως να επηρέαζαν τον κώδικα που σε ενδιαφέρει να αξιολογήσεις. Προφανώς, αν σε ενδιαφέρει το αποτέλεσμα του πολλαπλασιασμού ο C θα πρέπει να είναι αρχικοποιημένος σε 0.
Επί τη ευκαιρία στις διαφάνειες της "Lec6-caches-10.pdf", σελ. 33, υπάρχει το εξής: for (j = jj; j< min(jj+B-1,N); j = j+1) Το σωστό δεν θα έπρεπε να είναι: for (j = jj; j< min(jj+B,N); j = j+1) ??
Σωστά. Θα το διορθώσουμε.
Ν.