#gem5
#gem5
Вопрос:
Возможно ли запустить симуляцию в течение определенного количества тактов, а затем прочитать значение выбранной статистики из скрипта конфигурации Python?
Ответ №1:
Редактировать: исправление было отправлено по адресу:https://gem5-review.googlesource.com/c/public/gem5/ /33176
По состоянию на 3ca404da175a66e0b958165ad75eb5f54cb5e772 это кажется невозможным, но, вероятно, это легко реализовать.
У нас уже есть цикл, который просматривает всю статистику в Python под src/python/m5/stats/__init__.py
, поэтому есть статические объекты python, полностью открытые и повторяемые, но фактическое значение статистики отображается без них, только имя статистики:
def _dump_to_visitor(visitor, root=None):
# Legacy stats
if root is None:
for stat in stats_list:
stat.visit(visitor)
# New stats
def dump_group(group):
for stat in group.getStats():
stat.visit(visitor)
Затем метод visit выводит значение для записи в файл статистики, но Python этого не делает.
Однако visit
уже есть расширение python C для pybind11, определенное в src / python /pybind11/stats.cc:
py::class_<Stats::Info, std::unique_ptr<Stats::Info, py::nodelete>>(
m, "Info")
.def("visit", amp;Stats::Info::visit)
;
таким образом, вам, вероятно, потребуется указать значение там.
Одна неприятность заключается в том, что каждый тип статистики, производный от Stats::Info
, имеет разное представление данных, например, скаляры возвращают double
:
class ScalarInfo : public Info
{
public:
virtual Counter value() const = 0;
но векторы std::vector
:
class VectorInfo : public Info
{
public:
virtual const VCounter amp;value() const = 0;
и поэтому нет базового value()
метода из-за разных типов возвращаемых данных, вам просто нужно предоставить по одному для каждого базового класса.
TODO, который я все еще не мог увидеть value()
метод на Python, вероятно, потому, что они все еще были объектами базового класса, требует дополнительного изучения.
Ответ №2:
Вы можете использовать вариант gem5-stat-summarizer. gem5-stat-summarizer используется для извлечения выбранной статистики gem5 в CSV-файл, когда у вас есть несколько stats.txt файлы