Καλησπέρα. Έχω υλοποιήσει έναν tournament predictor, φτιάχνοντας δύο instances των κλάσεων που έχω για Local και Global predictors. Κάνω κανονικά compile, αλλά όταν εκτελώ τον tournament predictor, τρώω ERROR άμεσα, και στο nohup.out παίρνω: 0 [25203] [ ] [stats.cc : 177] *ERROR* Duplicate statistic branch_predictor.num-correct[0]
Μπορεί να εξηγήσει κανείς τί ακριβώς σημαίνει αυτό το σφάλμα? Ευχαριστώ,Βασίλης
Καλησπέρα,
Το πρόβλημα είναι πως όταν φτιάχνεις ένα instance της κλάσης του tournament predictor και δύο instances των κλάσεων για Local και Global predictor καλείται αντίστοιχα τρείς φορές ο constructor της υπερκλάσης τους, BranchPredictor. Στο αρχείο "sniper/common/performance_model/branch_predictor.cc" στην γραμμή 18 ορίζεται ο αντίστοιχος constructor. Βλέπεις ότι κάνει:
registerStatsMetric(name, core_id, "num-correct", &m_correct_predictions); registerStatsMetric(name, core_id, "num-incorrect", &m_incorrect_predictions);
δηλαδή δηλώνει τα αντίστοιχα στατιστικά στον sniper. Όταν ο constructor καλείται δεύτερη φορά πάει να κάνει register ένα στατιστικό που είναι ήδη registered στον sniper για αυτό σου πετάει και το αντίστοιχο error.
Μπορείς να ξεπεράσεις αυτό το πρόβλημα με δύο τρόπους:
1. Ο tournament predictor να μην χρησιμοποιεί τις δύο κλάσεις που έχεις ήδη φτιάξει αλλά να κάνεις copy/paste όλη την λειτουργικότητά τους στο αρχείο του tournament.
2. Να δημιουργήσεις έναν επιπλέον constructor για κάθε έναν από τους δύο predictors (local και global) ο οποίος να καλεί τον constructor της κλάσης BranchPredictor χωρίς ορίσματα (δηλαδή τον constructor που ορίζεται στη γραμμή 12 του branch_predictor.cc).
Π.χ:
LocalHistoryBranchPredictor(...τα ορίσματα που χρησιμοποιείς..., int dummy) : BranchPredictor() { /* Ίδιος κώδικας με τον άλλο constructor */ }
Έτσι όταν δημιουργείς τον tournament predictor αντί να δώσεις new LocalHistoryBranchPredictor(...ορίσματα...);
θα δώσεις new LocalHistoryBranchPredictor(...ορίσματα..., 0);
και θα αποφύγεις να ξαναγίνουν register τα ίδια στατιστικά.
Καλή συνέχεια, Δημήτρης
Καλησπέρα. Έχω υλοποιήσει έναν tournament predictor, φτιάχνοντας δύο instances των κλάσεων που έχω για Local και Global predictors. Κάνω κανονικά compile, αλλά όταν εκτελώ τον tournament predictor, τρώω ERROR άμεσα, και στο nohup.out παίρνω: 0 [25203] [ ] [stats.cc : 177] *ERROR* Duplicate statistic branch_predictor.num-correct[0]
Μπορεί να εξηγήσει κανείς τί ακριβώς σημαίνει αυτό το σφάλμα? Ευχαριστώ,Βασίλης
Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
advcomparch@lists.cslab.ece.ntua.gr