Zhantong Qiu has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/67339?usp=email )
Change subject: stdlib: Implement Simpoint Resources
......................................................................
stdlib: Implement Simpoint Resources
This patches does the following:
- Adds 'SimpointResource' which encapsulates Simpoint data and
functionality. It replaces the old 'gem5.util.simpoint.SimPoint'
class. Simpoints can be loaded from gem5-resources using the
`obtain_resource` function.
- Adds 'SimpointDirectoryResource'. This inherits form
'SimpointResource'. While 'SimpointResource' takes raw Simpoint data
via parameters, 'SimpointDirectoryResource' assumes the data exists
in files, in a directory.
- Updates the
"configs/example/gem5_library/checkpoints/simpoints-se-checkpoint.py"
and
"configs/example/gem5_library/checkpoints/simpoints-se-restory.py"
example files to utilize this new Simpoint resource classes.
**Note**: While the old "SimPoint" class
("src/python/gem5/util/simpoint.py") is marked as deprecated, it may be
difficult to utilize given updates to the APIs in the gem5 stdlib Cores
and Simulator modules.
Change-Id: I9bed5c643ffc735838c9f22a58c53547941010e7
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/67339
Tested-by: kokoro <noreply+kok...@google.com>
Reviewed-by: Bobby Bruce <bbr...@ucdavis.edu>
Maintainer: Bobby Bruce <bbr...@ucdavis.edu>
---
M configs/example/gem5_library/checkpoints/simpoints-se-checkpoint.py
M configs/example/gem5_library/checkpoints/simpoints-se-restore.py
M src/python/gem5/components/boards/se_binary_workload.py
M src/python/gem5/resources/resource.py
M src/python/gem5/simulate/exit_event_generators.py
M src/python/gem5/utils/simpoint.py
M tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py
M tests/pyunit/stdlib/resources/pyunit_resource_specialization.py
M tests/pyunit/stdlib/resources/refs/resource-specialization.json
9 files changed, 387 insertions(+), 77 deletions(-)
Approvals:
Bobby Bruce: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git
a/configs/example/gem5_library/checkpoints/simpoints-se-checkpoint.py
b/configs/example/gem5_library/checkpoints/simpoints-se-checkpoint.py
index d2d1af7..b5eb7e9 100644
--- a/configs/example/gem5_library/checkpoints/simpoints-se-checkpoint.py
+++ b/configs/example/gem5_library/checkpoints/simpoints-se-checkpoint.py
@@ -58,6 +58,7 @@
from gem5.components.processors.cpu_types import CPUTypes
from gem5.isas import ISA
from gem5.resources.workload import Workload
+from gem5.resources.resource import obtain_resource, SimpointResource
from pathlib import Path
from gem5.components.cachehierarchies.classic.no_cache import NoCache
from gem5.simulate.exit_event_generators import (
@@ -108,7 +109,23 @@
cache_hierarchy=cache_hierarchy,
)
-board.set_workload(Workload("x86-print-this-15000-with-simpoints"))
+# board.set_workload(
+# Workload("x86-print-this-15000-with-simpoints")
+#
+# **Note: This has been removed until we update the resources.json file to
+# encapsulate the new Simpoint format.
+# Below we set the simpount manually.
+
+board.set_se_simpoint_workload(
+ binary=obtain_resource("x86-print-this"),
+ arguments=["print this", 15000],
+ simpoint=SimpointResource(
+ simpoint_interval=1000000,
+ simpoint_list=[2, 3, 4, 15],
+ weight_list=[0.1, 0.2, 0.4, 0.3],
+ warmup_interval=1000000,
+ ),
+)
dir = Path(args.checkpoint_path)
dir.mkdir(exist_ok=True)
diff --git
a/configs/example/gem5_library/checkpoints/simpoints-se-restore.py
b/configs/example/gem5_library/checkpoints/simpoints-se-restore.py
index f8f48d0..5ff82db 100644
--- a/configs/example/gem5_library/checkpoints/simpoints-se-restore.py
+++ b/configs/example/gem5_library/checkpoints/simpoints-se-restore.py
@@ -63,8 +63,9 @@
from gem5.components.processors.simple_processor import SimpleProcessor
from gem5.components.processors.cpu_types import CPUTypes
from gem5.isas import ISA
-from gem5.resources.resource import Resource
+from gem5.resources.resource import SimpointResource, obtain_resource
from gem5.resources.workload import Workload
+from gem5.resources.resource import SimpointResource
from pathlib import Path
from m5.stats import reset, dump
@@ -96,11 +97,29 @@
cache_hierarchy=cache_hierarchy,
)
-# Here we obtain the workloadfrom gem5 resources, the checkpoint in this
+# Here we obtain the workload from gem5 resources, the checkpoint in this
# workload was generated from
# `configs/example/gem5_library/checkpoints/simpoints-se-checkpoint.py`.
-board.set_workload(
- Workload("x86-print-this-15000-with-simpoints-and-checkpoint")
+# board.set_workload(
+# Workload("x86-print-this-15000-with-simpoints-and-checkpoint")
+#
+# **Note: This has been removed until we update the resources.json file to
+# encapsulate the new Simpoint format.
+# Below we set the simpount manually.
+#
+# This loads a single checkpoint as an example of using simpoints to
simulate
+# the function of a single simpoint region.
+
+board.set_se_simpoint_workload(
+ binary=obtain_resource("x86-print-this"),
+ arguments=["print this", 15000],
+ simpoint=SimpointResource(
+ simpoint_interval=1000000,
+ simpoint_list=[2, 3, 4, 15],
+ weight_list=[0.1, 0.2, 0.4, 0.3],
+ warmup_interval=1000000,
+ ),
+ checkpoint=obtain_resource("simpoints-se-checkpoints-v22-1-v2"),
)
diff --git a/src/python/gem5/components/boards/se_binary_workload.py
b/src/python/gem5/components/boards/se_binary_workload.py
index acedfaf..3193110 100644
--- a/src/python/gem5/components/boards/se_binary_workload.py
+++ b/src/python/gem5/components/boards/se_binary_workload.py
@@ -31,8 +31,8 @@
BinaryResource,
CheckpointResource,
SimpointResource,
+ SimpointDirectoryResource,
)
-from gem5.utils.simpoint import SimPoint
from m5.objects import SEWorkload, Process
@@ -125,7 +125,7 @@
self,
binary: BinaryResource,
arguments: List[str] = [],
- simpoint: Union[SimpointResource, SimPoint] = None,
+ simpoint: SimpointResource = None,
checkpoint: Optional[Union[Path, CheckpointResource]] = None,
) -> None:
"""Set up the system to run a SimPoint workload.
@@ -135,28 +135,23 @@
* Dynamically linked executables are partially supported when the
host
ISA and the simulated ISA are the same.
- **Warning:** SimPoints only works with one core
+ **Warning:** Simpoints only works with one core
:param binary: The resource encapsulating the binary to be run.
:param arguments: The input arguments for the binary
- :param simpoint: The SimPoint object or Resource that contains the
list of
+ :param simpoint: The SimpointResource that contains the list of
SimPoints starting instructions, the list of weights, and the
SimPoints
interval
:param checkpoint: The checkpoint directory. Used to restore the
simulation to that checkpoint.
"""
- # convert input to SimPoint if necessary
- if isinstance(simpoint, SimpointResource):
- self._simpoint_object = SimPoint(simpoint)
- else:
- assert isinstance(simpoint, SimPoint)
- self._simpoint_object = simpoint
+ self._simpoint_resource = simpoint
if self.get_processor().get_num_cores() > 1:
warn("SimPoints only works with one core")
self.get_processor().get_cores()[0]._set_simpoint(
- inst_starts=self._simpoint_object.get_simpoint_start_insts(),
+ inst_starts=self._simpoint_resource.get_simpoint_start_insts(),
board_initialized=False,
)
@@ -167,11 +162,11 @@
checkpoint=checkpoint,
)
- def get_simpoint(self) -> SimPoint:
+ def get_simpoint(self) -> SimpointResource:
"""
- Returns the SimPoint object set. If no SimPoint object has been
set an
- exception is thrown.
+ Returns the SimpointResorce object set. If no SimpointResource
object
+ has been set an exception is thrown.
"""
- if getattr(self, "_simpoint_object", None):
- return self._simpoint_object
+ if getattr(self, "_simpoint_resource", None):
+ return self._simpoint_resource
raise Exception("This board does not have a simpoint set.")
diff --git a/src/python/gem5/resources/resource.py
b/src/python/gem5/resources/resource.py
index 0987453..678497e 100644
--- a/src/python/gem5/resources/resource.py
+++ b/src/python/gem5/resources/resource.py
@@ -27,13 +27,13 @@
from abc import ABCMeta
import os
from pathlib import Path
-from m5.util import warn
+from m5.util import warn, fatal
from .downloader import get_resource, get_resources_json_obj
from ..isas import ISA, get_isa_from_str
-from typing import Optional, Dict, Union, Type
+from typing import Optional, Dict, Union, Type, Tuple, List
"""
Resources are items needed to run a simulation, such as a disk image,
kernel,
@@ -72,7 +72,7 @@
):
"""
:param local_path: The path on the host system where this resource
is
- located
+ located.
:param documentation: Documentation describing this resource. Not a
required parameter. By default is None.
:param source: The source (as in "source code") for this resource.
This
@@ -280,22 +280,205 @@
)
-class SimpointResource(DirectoryResource):
- """A simpoint resource."""
+class SimpointResource(AbstractResource):
+ """A simpoint resource. This resource stores all information required
to
+ perform a Simpoint creation and restore. It contains the Simpoint, the
+ Simpoint interval, the weight for each Simpoint, the full warmup
length,
+ and the warmup length for each Simpoint.
+ """
def __init__(
self,
- local_path: str,
+ simpoint_interval: int = None,
+ simpoint_list: List[int] = None,
+ weight_list: List[float] = None,
+ warmup_interval: int = 0,
+ workload_name: Optional[str] = None,
documentation: Optional[str] = None,
source: Optional[str] = None,
+ local_path: Optional[str] = None,
**kwargs,
):
+ """
+ :param simpoint_interval: The simpoint interval.
+ :param simpoint_list: The simpoint list.
+ :param weight_list: The weight list.
+ :param warmup_interval: The warmup interval. Default to zero (a
value
+ of zero means effectively not set).
+ :param workload_name: Simpoints are typically associated with a
+ particular workload due to their dependency on chosen input
parameters.
+ This field helps backtrack to that resource if required. This
should
+ relate to a workload "name" field in the resource.json file.
+ """
+
super().__init__(
local_path=local_path,
documentation=documentation,
source=source,
)
+ self._weight_list = weight_list
+ self._simpoint_list = simpoint_list
+ self._simpoint_interval = simpoint_interval
+ self._warmup_interval = warmup_interval
+ self._workload_name = workload_name
+
+ self._simpoint_start_insts = list(
+ inst * simpoint_interval for inst in self.get_simpoint_list()
+ )
+
+ if self._warmup_interval != 0:
+ self._warmup_list = self._set_warmup_list()
+ else:
+ self._warmup_list = [0] * len(self.get_simpoint_start_insts)
+
+ def get_simpoint_list(self) -> List[int]:
+ """Returns the a list containing all the Simpoints for the
workload."""
+ return self._simpoint_list
+
+ def get_simpoint_start_insts(self) -> List[int]:
+ """Returns a lst containing all the Simpoint starting instrunction
+ points for the workload. This was calculated by multiplying the
+ Simpoint with the Simpoint interval when it was generated."""
+ return self._simpoint_start_insts
+
+ def get_warmup_interval(self) -> int:
+ """Returns the instruction length of the warmup interval."""
+ return self._warmup_interval
+
+ def get_weight_list(self) -> List[float]:
+ """Returns the list that contains the weight for each Simpoint. The
+ order of the weights matches that of the list returned by
+ `get_simpoint_list(). I.e. `get_weight_list()[3]` is the weight for
+ simpoint `get_simpoint_list()[3]`."""
+ return self._weight_list
+
+ def get_simpoint_interval(self) -> int:
+ """Returns the Simpoint interval value."""
+ return self._simpoint_interval
+
+ def get_warmup_list(self) -> List[int]:
+ """Returns the a list containing the warmup length for each
Simpoint.
+ Each warmup length in this list corresponds to the Simpoint at the
same
+ index in `get_simpoint_list()`. I.e., `get_warmup_list()[4]` is the
+ warmup length for Simpoint `get_simpoint_list()[4]`."""
+ return self._warmup_list
+
+ def get_workload_name(self) -> Optional[str]:
+ """Return the workload name this Simpoint is associated with."""
+ return self._workload_name
+
+ def _set_warmup_list(self) -> List[int]:
+ """
+ This function uses the warmup_interval, fits it into the
+ simpoint_start_insts, and outputs a list of warmup instruction
lengths
+ for each SimPoint.
+
+ The warmup instruction length is calculated using the starting
+ instruction of a SimPoint to minus the warmup_interval and the
ending
+ instruction of the last SimPoint. If it is less than 0, then the
warmup
+ instruction length is the gap between the starting instruction of a
+ SimPoint and the ending instruction of the last SimPoint.
+ """
+ warmup_list = []
+ for index, start_inst in
enumerate(self.get_simpoint_start_insts()):
+ warmup_inst = start_inst - self.get_warmup_interval()
+ if warmup_inst < 0:
+ warmup_inst = start_inst
+ else:
+ warmup_inst = self.get_warmup_interval()
+ warmup_list.append(warmup_inst)
+ # change the starting instruction of a SimPoint to include the
+ # warmup instruction length
+ self._simpoint_start_insts[index] = start_inst - warmup_inst
+ return warmup_list
+
+
+class SimpointDirectoryResource(SimpointResource):
+ """A Simpoint diretory resource. This Simpoint Resource assumes the
+ existance of a directory containing a simpoint file and a weight
file."""
+
+ def __init__(
+ self,
+ local_path: str,
+ simpoint_file: str,
+ weight_file: str,
+ simpoint_interval: int,
+ warmup_interval: int,
+ workload_name: Optional[str] = None,
+ documentation: Optional[str] = None,
+ source: Optional[str] = None,
+ **kwargs,
+ ):
+ """
+ :param simpoint_file: The Simpoint file. This file is a list of
+ Simpoints, each on its own line. It should map 1-to-1 to the
weights
+ file.
+ :param weight_file: The Simpoint weights file. This file is a list
of
+ weights, each on its own line.
+ """
+ self._simpoint_file = simpoint_file
+ self._weight_file = weight_file
+
+ # This is a little hack. The functions `get_simpoint_file` and
+ # `get_weight_file` use the local path, so we set it here despite
it
+ # also being set in the `AbstractResource` constructor. This isn't
+ # elegant but does not harm.
+ self._local_path = local_path
+ (
+ simpoint_list,
+ weight_list,
+ ) = self._get_weights_and_simpoints_from_file()
+
+ super().__init__(
+ simpoint_interval=simpoint_interval,
+ simpoint_list=simpoint_list,
+ weight_list=weight_list,
+ warmup_interval=warmup_interval,
+ workload_name=workload_name,
+ local_path=local_path,
+ documentation=documentation,
+ source=source,
+ )
+
+ def get_simpoint_file(self) -> Path:
+ """Return the Simpoint File path."""
+ return Path(Path(self._local_path) / self._simpoint_file)
+
+ def get_weight_file(self) -> Path:
+ """Returns the Weight File path."""
+ return Path(Path(self._local_path) / self._weight_file)
+
+ def _get_weights_and_simpoints_from_file(
+ self,
+ ) -> Tuple[List[int], List[int]]:
+ """This is a helper function to extract the weights and simpoints
from
+ the files.
+ """
+ simpoint_weight_pair = []
+ with open(self.get_simpoint_file()) as simpoint_file, open(
+ self.get_weight_file()
+ ) as weight_file:
+ while True:
+ line = simpoint_file.readline()
+ if not line:
+ break
+ interval = int(line.split(" ", 1)[0])
+ line = weight_file.readline()
+ if not line:
+ fatal("not engough weights")
+ weight = float(line.split(" ", 1)[0])
+ simpoint_weight_pair.append((interval, weight))
+ simpoint_weight_pair.sort(key=lambda obj: obj[0])
+ # use simpoint to sort
+
+ weight_list = []
+ simpoint_list = []
+ for simpoint, weight in simpoint_weight_pair:
+ simpoint_list.append(simpoint)
+ weight_list.append(weight)
+ return simpoint_list, weight_list
+
def obtain_resource(
resource_name: str,
@@ -529,5 +712,6 @@
"file": FileResource,
"directory": DirectoryResource,
"simpoint": SimpointResource,
+ "simpoint-directory": SimpointDirectoryResource,
"resource": Resource,
}
diff --git a/src/python/gem5/simulate/exit_event_generators.py
b/src/python/gem5/simulate/exit_event_generators.py
index d6732bb..738e128 100644
--- a/src/python/gem5/simulate/exit_event_generators.py
+++ b/src/python/gem5/simulate/exit_event_generators.py
@@ -28,7 +28,7 @@
import m5.stats
from ..components.processors.abstract_processor import AbstractProcessor
from ..components.processors.switchable_processor import
SwitchableProcessor
-from ..utils.simpoint import SimPoint
+from ..resources.resource import SimpointResource
from m5.util import warn
from pathlib import Path
@@ -134,7 +134,7 @@
def simpoints_save_checkpoint_generator(
- checkpoint_dir: Path, simpoint: SimPoint
+ checkpoint_dir: Path, simpoint: SimpointResource
):
"""
A generator for taking multiple checkpoints for SimPoints. It will
save the
diff --git a/src/python/gem5/utils/simpoint.py
b/src/python/gem5/utils/simpoint.py
index 9e861cc..eab92e2 100644
--- a/src/python/gem5/utils/simpoint.py
+++ b/src/python/gem5/utils/simpoint.py
@@ -24,10 +24,10 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import fatal
+from m5.util import fatal, warn
from pathlib import Path
from typing import List, Tuple
-from gem5.resources.resource import Resource, CustomResource
+from gem5.resources.resource import SimpointResource
class SimPoint:
@@ -39,7 +39,7 @@
def __init__(
self,
- simpoint_resource: CustomResource = None,
+ simpoint_resource: SimpointResource = None,
simpoint_interval: int = None,
simpoint_file_path: Path = None,
weight_file_path: Path = None,
@@ -70,12 +70,19 @@
The warmup_list only works correctly with sorted simpoint_list.
"""
+ warn(
+ "This `SimPoint` class has been deprecated in favor of "
+ "`SimpointResource` and `SimpointDirectory` resource which may
be "
+ "found in `gem5.resources.resource`. Please utilize these.
This "
+ "`SimPoint` class will be removed in future releases of gem5."
+ )
+
# initalize input if you're passing in a CustomResource
if simpoint_resource is not None:
simpoint_directory = str(simpoint_resource.get_local_path())
- simpoint_file_path = Path(simpoint_directory
+ "/simpoint.simpt")
- weight_file_path = Path(simpoint_directory
+ "/simpoint.weight")
+ simpoint_file_path = simpoint_directory.get_simpoint_file()
+ weight_file_path = simpoint_resource.get_weight_file()
simpoint_interval = (
simpoint_resource.get_metadata()
.get("additional_metadata")
diff --git
a/tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py
b/tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py
index 514894f..9b5c2c6 100644
--- a/tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py
+++ b/tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py
@@ -94,44 +94,44 @@
length=constants.quick_tag,
)
-# gem5_verify_config(
-# name="test-simpoints-se-checkpoint",
-# fixtures=(),
-# verifiers=(),
-# config=joinpath(
-# config.base_dir,
-# "configs",
-# "example",
-# "gem5_library",
-# "checkpoints",
-# "simpoints-se-checkpoint.py",
-# ),
-# config_args=[
-# "--checkpoint-path",
-# joinpath(resource_path, "se_checkpoint_folder-save"),
-# ],
-# valid_isas=(constants.all_compiled_tag,),
-# valid_hosts=constants.supported_hosts,
-# length=constants.quick_tag,
-# )
+gem5_verify_config(
+ name="test-simpoints-se-checkpoint",
+ fixtures=(),
+ verifiers=(),
+ config=joinpath(
+ config.base_dir,
+ "configs",
+ "example",
+ "gem5_library",
+ "checkpoints",
+ "simpoints-se-checkpoint.py",
+ ),
+ config_args=[
+ "--checkpoint-path",
+ joinpath(resource_path, "se_checkpoint_folder-save"),
+ ],
+ valid_isas=(constants.all_compiled_tag,),
+ valid_hosts=constants.supported_hosts,
+ length=constants.quick_tag,
+)
-# gem5_verify_config(
-# name="test-simpoints-se-restore",
-# fixtures=(),
-# verifiers=(),
-# config=joinpath(
-# config.base_dir,
-# "configs",
-# "example",
-# "gem5_library",
-# "checkpoints",
-# "simpoints-se-restore.py",
-# ),
-# config_args=[],
-# valid_isas=(constants.all_compiled_tag,),
-# valid_hosts=constants.supported_hosts,
-# length=constants.quick_tag,
-# )
+gem5_verify_config(
+ name="test-simpoints-se-restore",
+ fixtures=(),
+ verifiers=(),
+ config=joinpath(
+ config.base_dir,
+ "configs",
+ "example",
+ "gem5_library",
+ "checkpoints",
+ "simpoints-se-restore.py",
+ ),
+ config_args=[],
+ valid_isas=(constants.all_compiled_tag,),
+ valid_hosts=constants.supported_hosts,
+ length=constants.quick_tag,
+)
if os.access("/dev/kvm", mode=os.R_OK | os.W_OK):
# The x86-ubuntu-run uses KVM cores, this test will therefore only be
run
diff --git
a/tests/pyunit/stdlib/resources/pyunit_resource_specialization.py
b/tests/pyunit/stdlib/resources/pyunit_resource_specialization.py
index e0a8ddd..f31e35d 100644
--- a/tests/pyunit/stdlib/resources/pyunit_resource_specialization.py
+++ b/tests/pyunit/stdlib/resources/pyunit_resource_specialization.py
@@ -26,6 +26,7 @@
import os
import unittest
+from pathlib import Path
from gem5.resources.resource import *
from gem5.isas import ISA
@@ -155,6 +156,40 @@
self.assertIsNone(resource.get_documentation())
self.assertIsNone(resource.get_source())
+ def test_simpoint_directory_resource(self) -> None:
+ """Tests the loading of a Simpoint directory resource."""
+ resource = obtain_resource(
+ resource_name="simpoint-directory-example",
+ resource_directory=self.get_resource_dir(),
+ )
+
+ self.assertIsInstance(resource, SimpointDirectoryResource)
+
+ self.assertEquals(
+ "simpoint directory documentation.",
resource.get_documentation()
+ )
+ self.assertIsNone(resource.get_source())
+
+ self.assertEquals(1000000, resource.get_simpoint_interval())
+ self.assertEquals(1000000, resource.get_warmup_interval())
+ self.assertEquals(
+ Path(
+ Path(self.get_resource_dir())
+ / "simpoint-directory-example"
+ / "simpoint.simpt"
+ ),
+ resource.get_simpoint_file(),
+ )
+ self.assertEquals(
+ Path(
+ Path(self.get_resource_dir())
+ / "simpoint-directory-example"
+ / "simpoint.weight"
+ ),
+ resource.get_weight_file(),
+ )
+ self.assertEquals("Example Workload", resource.get_workload_name())
+
def test_simpoint_resource(self) -> None:
"""Tests the loading of a Simpoint resource."""
resource = obtain_resource(
@@ -168,6 +203,12 @@
"simpoint documentation.", resource.get_documentation()
)
self.assertIsNone(resource.get_source())
+ self.assertIsNone(resource.get_local_path())
+
+ self.assertEquals(1000000, resource.get_simpoint_interval())
+ self.assertEquals(23445, resource.get_warmup_interval())
+ self.assertEquals([2, 3, 4, 15], resource.get_simpoint_list())
+ self.assertEquals([0.1, 0.2, 0.4, 0.3], resource.get_weight_list())
def test_file_resource(self) -> None:
"""Tests the loading of a FileResource."""
diff --git
a/tests/pyunit/stdlib/resources/refs/resource-specialization.json
b/tests/pyunit/stdlib/resources/refs/resource-specialization.json
index 77ffc10..01671b5 100644
--- a/tests/pyunit/stdlib/resources/refs/resource-specialization.json
+++ b/tests/pyunit/stdlib/resources/refs/resource-specialization.json
@@ -86,14 +86,28 @@
"url": "{url_base}/checkpoints/riscv-hello-example-checkpoint.tar"
},
{
- "type" : "simpoint",
- "name" : "simpoint-example",
- "documentation" : "simpoint documentation.",
+ "type": "simpoint-directory",
+ "name": "simpoint-directory-example",
+ "documentation": "simpoint directory documentation.",
"is_zipped" : false,
- "md5sum" : "3a57c1bb1077176c4587b8a3bf4f8ace",
+ "md5sum" : "3fcffe3956c8a95e3fb82e232e2b41fb",
"source" : null,
"is_tar_archive" : true,
- "url": "{url_base}/checkpoints/riscv-hello-example-checkpoint.tar"
- }
+ "url":
"{url_base}/simpoints/x86-print-this-15000-simpoints-20221013.tar",
+ "simpoint_interval": 1000000,
+ "warmup_interval": 1000000,
+ "simpoint_file": "simpoint.simpt",
+ "weight_file": "simpoint.weight",
+ "workload_name": "Example Workload"
+ },
+ {
+ "type": "simpoint",
+ "name": "simpoint-example",
+ "documentation": "simpoint documentation.",
+ "simpoint_interval": 1000000,
+ "warmup_interval": 23445,
+ "simpoint_list" : [2,3,4,15],
+ "weight_list" : [0.1, 0.2, 0.4, 0.3]
+ }
]
}
--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/67339?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I9bed5c643ffc735838c9f22a58c53547941010e7
Gerrit-Change-Number: 67339
Gerrit-PatchSet: 16
Gerrit-Owner: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Zhantong Qiu <zt...@ucdavis.edu>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-CC: Jason Lowe-Power <power...@gmail.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org