Ithela na kanw mia erwtisoula panw sto 4o erwtima giati isws na min exw katalavei kati kala...
Otan leme oti gia na efarmostei register blocking tha prepei to eswterikotero loop na periexei invariant anafores,auto de simainei oti to eswterikotero loop tha prepei na einai ws pros tin metavliti k afou o pinakas pou mas endiaferei einai o C[i][j]?
I mipws exw mperdeutei? Oxi tpt allo,apla moy fainetai periergo,mias kai to eswterikotero loop tis blocked ekdosis pou eftiaksa sto erwtima 3 den einai ws pros to k...
Kai ena akoma erwtima,o specifier register pws prepei na xrisimopoiithei?P.x. ws "register C[i][j]+=A[i][k]*B[k][j];" i kapws alliws,giati ap' oso epsaksa,autos xrisimopoieitai kata ti dilwsi tis metavlitis,pragma pou de sumvainei edw...
Euxaristw ek twn proterwn!
xristos86 wrote:
Otan leme oti gia na efarmostei register blocking tha prepei to eswterikotero loop na periexei invariant anafores,auto de simainei oti to eswterikotero loop tha prepei na einai ws pros tin metavliti k afou o pinakas pou mas endiaferei einai o C[i][j]?
I mipws exw mperdeutei? Oxi tpt allo,apla moy fainetai periergo,mias kai to eswterikotero loop tis blocked ekdosis pou eftiaksa sto erwtima 3 den einai ws pros to k...
Νομίζω ότι η εκφώνηση το λέει καθαρά: στο 4.1 χρησιμοποιείτε την blocked έκδοση που κατασκευάσατε στο 3 για να εφαρμόσετε register blocking πάνω σε αυτήν. Το register blocking θα γίνει με βάση την αναφορά εκείνη η οποία είναι invariant ως προς το εσωτερικότερο loop (της blocked έκδοσης του ερ. 3), και μπορεί να μην είναι αναγκαστικά ο πίνακας C[i][j]. Το 4.4 είναι αυτό που ζητάει να κάνετε register blocking στα στοιχεία του C (εξηγεί η εκφώνηση με βάση ποιο σκεπτικό), σε περίπτωση που στο 4.1 δεν ήταν ο C ο πίνακας πάνω στον οποίον κάνατε register blocking.
Kai ena akoma erwtima,o specifier register pws prepei na xrisimopoiithei?P.x. ws "register C[i][j]+=A[i][k]*B[k][j];" i kapws alliws,giati ap' oso epsaksa,autos xrisimopoieitai kata ti dilwsi tis metavlitis,pragma pou de sumvainei edw...
O storage class specifier "register" θα χρησιμοποιηθεί στη δήλωση των μεταβλητών οι οποίες θα αντικαταστήσουν τις αναφορές στα στοιχεία του πίνακα εκείνου ως προς τον οποίον κάνουμε το register blocking. Π.χ., στο slide 35 των αντίστοιχων διαφανειών του μαθήματος, στην τελευταία τροποποίηση που έχουμε κάνει στον κώδικα, έχουμε τις αναφορές x[i][j], x[i+1][j], x[i][j+1], x[i+1][j+1]. Κάθε μία από αυτές θα πρέπει να αντικατασταθεί από αναφορά σε απλή float μεταβλητή, προσδιορισμένη κατά τη δήλωσή της ως "register". Θα πρέπει να φροντίσετε βεβαίως ώστε πριν και μετά το εσωτερικότερο loop να γίνονται σωστά οι αντιγραφές τιμών από τις αναφορές στον πίνακα προς στις αντίστοιχες "register" μεταβλητές, και πάλι πίσω.
Ν.
advcomparch@lists.cslab.ece.ntua.gr