[Advcomparch] Πρόβλημα στον tournament predictor

Dimitrios Siakavaras jimsiak at cslab.ece.ntua.gr
Sun May 31 14:59:53 EEST 2015


Καλησπέρα,

Το πρόβλημα είναι πως όταν φτιάχνεις ένα 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 at lists.cslab.ece.ntua.gr
> http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
>



More information about the Advcomparch mailing list