-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Running the Model
Using the PyTimeloop library, running the model is as simple as follows.
from [pytimeloop.looptree.run](http://pytimeloop.looptree.run/) import run_looptree
As previously mentioned, bindings map levels specified in the mapping
to the hardware units specified in the architecture spec.
bindings = {
0: 'MainMemory',
1: 'GlobalBuffer',
2: 'MACC'
}
stats = run_looptree(
CONFIG_DIR,
['architecture.yaml', 'two_fc.workload.yaml', 'layer-by-layer.mapping.yaml'],
TMP_DIR,
bindings,
call_accelergy=True
)
--------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:134, in TypeSpecifier.cast_check_type(self, value, node, key)
133 try:
--> 134 casted = self.cast(value)
135 except Exception as exc:
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:182, in TypeSpecifier.cast(self, value, _TypeSpecifier__node_skip_parse)
181 else:
--> 182 value = self.callfunc(value)
183 try:
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:96, in TypeSpecifier.__init__.<locals>.callfunc(x, _TypeSpecifier__node_skip_parse)
95 return x
---> 96 return rt(x, __node_skip_parse=__node_skip_parse)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:591, in StorageAttributes.__init__(self, *args, **kwargs)
590 if self.depth is None:
--> 591 print(f'WARNING: "depth" is not set for storage element {self.name}')
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:1447, in DictNode.__getattr__(self, name)
1446 except AttributeError:
-> 1447 raise AttributeError(
1448 f"Could not find attribute {name} in {self.__class__}. "
1449 f"Available keys: {list(self.keys())}. Available attributes: "
1450 f"{list(super().__dir__())}"
1451 ) from None
AttributeError: Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']
The above exception was the direct cause of the following exception:
ParseError Traceback (most recent call last)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:134, in TypeSpecifier.cast_check_type(self, value, node, key)
133 try:
--> 134 casted = self.cast(value)
135 except Exception as exc:
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:182, in TypeSpecifier.cast(self, value, _TypeSpecifier__node_skip_parse)
181 else:
--> 182 value = self.callfunc(value)
183 try:
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:661, in component_factory(*args, **kwargs)
660 if any([e in element_class for e in c]):
--> 661 return target(**kwargs)
663 raise ValueError(
664 f"Unknown element class {element_class}. " f"Accepted classes: {class2class}"
665 )
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:384, in Storage.__init__(self, *args, **kwargs)
383 def __init__(self, *args, **kwargs):
--> 384 super().__init__(self, *args, **kwargs)
385 self.attributes: StorageAttributes = self["attributes"]
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:335, in Component.__init__(self, *args, **kwargs)
334 def __init__(self, *args, **kwargs):
--> 335 super().__init__(*args, **kwargs)
336 self._class: str = self["class"]
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:270, in Leaf.__init__(self, *args, **kwargs)
269 def __init__(self, *args, **kwargs):
--> 270 super().__init__(*args, **kwargs)
271 self.name: str = self["name"]
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:33, in ArchNode.__init__(self, *args, **kwargs)
32 def __init__(self, *args, **kwargs):
---> 33 super().__init__(*args, **kwargs)
35 # Make sure all leaf names are unique
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:1221, in DictNode.__init__(self, _DictNode__node_skip_parse, *args, **kwargs)
1220 if not __node_skip_parse:
-> 1221 self._parse_elems()
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:549, in Node._parse_elems(self)
548 for k, check in self._get_index2checker().items():
--> 549 self._parse_elem(k, check)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:526, in Node._parse_elem(self, key, check, value_override)
525 if check is not None:
--> 526 v = check.cast_check_type(v, self, key)
528 if isinstance(v, Node):
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:171, in TypeSpecifier.cast_check_type(self, value, node, key)
170 new_exc._last_non_node_exception = last_non_node_exception
--> 171 raise new_exc from exc
173 # self.check_type(casted, node, key)
ParseError: Error calling cast function "StorageAttributes" for value "{'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}" in Storage(MainMemory)[attributes].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']
The above exception was the direct cause of the following exception:
ParseError Traceback (most recent call last)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:134, in TypeSpecifier.cast_check_type(self, value, node, key)
133 try:
--> 134 casted = self.cast(value)
135 except Exception as exc:
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:182, in TypeSpecifier.cast(self, value, _TypeSpecifier__node_skip_parse)
181 else:
--> 182 value = self.callfunc(value)
183 try:
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:96, in TypeSpecifier.__init__.<locals>.callfunc(x, _TypeSpecifier__node_skip_parse)
95 return x
---> 96 return rt(x, __node_skip_parse=__node_skip_parse)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:116, in ArchNodes.__init__(self, *args, **kwargs)
115 def __init__(self, *args, **kwargs):
--> 116 super().__init__(*args, **kwargs)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:33, in ArchNode.__init__(self, *args, **kwargs)
32 def __init__(self, *args, **kwargs):
---> 33 super().__init__(*args, **kwargs)
35 # Make sure all leaf names are unique
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:1159, in ListNode.__init__(self, *args, **kwargs)
1158 if not __node_skip_parse:
-> 1159 self._parse_elems()
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:549, in Node._parse_elems(self)
548 for k, check in self._get_index2checker().items():
--> 549 self._parse_elem(k, check)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:526, in Node._parse_elem(self, key, check, value_override)
525 if check is not None:
--> 526 v = check.cast_check_type(v, self, key)
528 if isinstance(v, Node):
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:171, in TypeSpecifier.cast_check_type(self, value, node, key)
170 new_exc._last_non_node_exception = last_non_node_exception
--> 171 raise new_exc from exc
173 # self.check_type(casted, node, key)
ParseError: Error calling cast function "component_factory" for value "{'name': 'MainMemory', 'class': 'DRAM', 'attributes': {'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}, 'required_actions': ['read', 'write']}" in ArchNodes[0].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Error calling cast function "StorageAttributes" for value "{'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}" in Storage(MainMemory)[attributes].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']
The above exception was the direct cause of the following exception:
ParseError Traceback (most recent call last)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:134, in TypeSpecifier.cast_check_type(self, value, node, key)
133 try:
--> 134 casted = self.cast(value)
135 except Exception as exc:
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:182, in TypeSpecifier.cast(self, value, _TypeSpecifier__node_skip_parse)
181 else:
--> 182 value = self.callfunc(value)
183 try:
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:96, in TypeSpecifier.__init__.<locals>.callfunc(x, _TypeSpecifier__node_skip_parse)
95 return x
---> 96 return rt(x, __node_skip_parse=__node_skip_parse)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:235, in Architecture.__init__(self, *args, **kwargs)
234 def __init__(self, *args, **kwargs):
--> 235 super().__init__(*args, **kwargs)
236 self.version: Union[str, Number] = self["version"]
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:184, in Branch.__init__(self, *args, **kwargs)
183 def __init__(self, *args, **kwargs):
--> 184 super().__init__(*args, **kwargs)
185 self.nodes: ArchNodes = self["nodes"]
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4/arch.py:33, in ArchNode.__init__(self, *args, **kwargs)
32 def __init__(self, *args, **kwargs):
---> 33 super().__init__(*args, **kwargs)
35 # Make sure all leaf names are unique
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:1221, in DictNode.__init__(self, _DictNode__node_skip_parse, *args, **kwargs)
1220 if not __node_skip_parse:
-> 1221 self._parse_elems()
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:549, in Node._parse_elems(self)
548 for k, check in self._get_index2checker().items():
--> 549 self._parse_elem(k, check)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:526, in Node._parse_elem(self, key, check, value_override)
525 if check is not None:
--> 526 v = check.cast_check_type(v, self, key)
528 if isinstance(v, Node):
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:171, in TypeSpecifier.cast_check_type(self, value, node, key)
170 new_exc._last_non_node_exception = last_non_node_exception
--> 171 raise new_exc from exc
173 # self.check_type(casted, node, key)
ParseError: Error calling cast function "ArchNodes" for value "[{'name': 'MainMemory', 'class': 'DRAM', 'attributes': {'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}, 'required_actions': ['read', 'write']}, {'name': 'GlobalBuffer', 'class': 'SRAM', 'attributes': {'depth': 8192, 'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8, 'n_rdwr_ports': 2, 'n_rd_ports': 0, 'n_wr_ports': 0}, 'required_actions': ['read', 'write']}, {'name': 'MACC', 'class': 'intmac', 'attributes': {'datawidth': 8, 'width': 8, 'cycle_time': 1e-09}, 'required_actions': ['compute']}]" in Architecture[nodes].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Error calling cast function "component_factory" for value "{'name': 'MainMemory', 'class': 'DRAM', 'attributes': {'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}, 'required_actions': ['read', 'write']}" in ArchNodes[0].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Error calling cast function "StorageAttributes" for value "{'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}" in Storage(MainMemory)[attributes].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']
The above exception was the direct cause of the following exception:
ParseError Traceback (most recent call last)
Cell In[5], line 11
3 # As previously mentioned, bindings map levels specified in the mapping
4 # to the hardware units specified in the architecture spec.
5 bindings = {
6 0: 'MainMemory',
7 1: 'GlobalBuffer',
8 2: 'MACC'
9 }
---> 11 stats = run_looptree(
12 CONFIG_DIR,
13 ['architecture.yaml', 'two_fc.workload.yaml', 'layer-by-layer.mapping.yaml'],
14 TMP_DIR,
15 bindings,
16 call_accelergy=True
17 )
File /usr/local/lib/python3.10/dist-packages/pytimeloop/looptree/run.py:37, in run_looptree(config_dir, paths, tmp_path, bindings, call_accelergy)
33 model = LooptreeModelApp(config)
35 workload = LooptreeWorkload.parse_cfg(config.root['problem'])
---> 37 spec = Specification.from_yaml_files([
38 str(config_dir / p) for p in paths
39 ])
41 if call_accelergy:
42 if isinstance(tmp_path, Path):
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/base_specification.py:179, in BaseSpecification.from_yaml_files(cls, *args, **kwargs)
167 @classmethod
168 def from_yaml_files(cls, *args, **kwargs) -> "Specification":
169 """
170 Create a Specification object from YAML files.
171
(...)
177 Specification: The created Specification object.
178 """
--> 179 return super().from_yaml_files(*args, **kwargs)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:1356, in DictNode.from_yaml_files(cls, jinja_parse_data, *files, **kwargs)
1353 key2file[k] = f
1354 rval[k] = v
-> 1356 c = cls(**rval, **kwargs)
1357 logging.info(
1358 "Parsing extra attributes %s", ", ".join([x[0] for x in extra_elems])
1359 )
1360 c._parse_extra_elems(extra_elems)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/v4fused/specification.py:61, in Specification.__init__(self, *args, **kwargs)
59 def __init__(self, *args, **kwargs):
60 kwargs["_required_processors"] = []
---> 61 super().__init__(*args, **kwargs)
62 self.architecture = self["architecture"]
63 self.mapping = self["mapping"]
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/base_specification.py:71, in BaseSpecification.__init__(self, *args, **kwargs)
67 self.spec = self
69 self._early_init_processors(**kwargs) # Because processors define declare_attrs
---> 71 super().__init__(*args, **kwargs)
73 self.processors: ListNode[Processor] = self["processors"]
74 self._required_processors: ListNode[Processor] = self["_required_processors"]
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:1221, in DictNode.__init__(self, _DictNode__node_skip_parse, *args, **kwargs)
1219 self[k] = default_unspecified_
1220 if not __node_skip_parse:
-> 1221 self._parse_elems()
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:549, in Node._parse_elems(self)
547 self.spec = parent.spec if parent is not None else Node.get_global_spec()
548 for k, check in self._get_index2checker().items():
--> 549 self._parse_elem(k, check)
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:526, in Node._parse_elem(self, key, check, value_override)
524 tag = Node._get_tag(v)
525 if check is not None:
--> 526 v = check.cast_check_type(v, self, key)
528 if isinstance(v, Node):
529 v.tag = tag
File /usr/local/lib/python3.10/dist-packages/pytimeloop/timeloopfe/common/nodes.py:171, in TypeSpecifier.cast_check_type(self, value, node, key)
165 new_exc = ParseError(
166 f'Error calling cast function "{callname}" '
167 f'for value "{value}" in {node.get_name()}[{key}]. '
168 f"{self.removed_by_str()}{estr}. {exc}"
169 )
170 new_exc._last_non_node_exception = last_non_node_exception
--> 171 raise new_exc from exc
173 # self.check_type(casted, node, key)
174 return casted
ParseError: Error calling cast function "Architecture" for value "{'version': 0.4, 'nodes': [{'name': 'MainMemory', 'class': 'DRAM', 'attributes': {'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}, 'required_actions': ['read', 'write']}, {'name': 'GlobalBuffer', 'class': 'SRAM', 'attributes': {'depth': 8192, 'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8, 'n_rdwr_ports': 2, 'n_rd_ports': 0, 'n_wr_ports': 0}, 'required_actions': ['read', 'write']}, {'name': 'MACC', 'class': 'intmac', 'attributes': {'datawidth': 8, 'width': 8, 'cycle_time': 1e-09}, 'required_actions': ['compute']}]}" in Specification[architecture].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Error calling cast function "ArchNodes" for value "[{'name': 'MainMemory', 'class': 'DRAM', 'attributes': {'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}, 'required_actions': ['read', 'write']}, {'name': 'GlobalBuffer', 'class': 'SRAM', 'attributes': {'depth': 8192, 'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8, 'n_rdwr_ports': 2, 'n_rd_ports': 0, 'n_wr_ports': 0}, 'required_actions': ['read', 'write']}, {'name': 'MACC', 'class': 'intmac', 'attributes': {'datawidth': 8, 'width': 8, 'cycle_time': 1e-09}, 'required_actions': ['compute']}]" in Architecture[nodes].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Error calling cast function "component_factory" for value "{'name': 'MainMemory', 'class': 'DRAM', 'attributes': {'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}, 'required_actions': ['read', 'write']}" in ArchNodes[0].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Error calling cast function "StorageAttributes" for value "{'width': 256, 'block_size': 32, 'word_bits': 8, 'datawidth': 8}" in Storage(MainMemory)[attributes].
Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']. Could not find attribute name in <class 'pytimeloop.timeloopfe.v4.arch.StorageAttributes'>. Available keys: ['width', 'block_size', 'word_bits', 'datawidth', 'has_power_gating', 'power_gated_at', 'technology', 'n_banks', 'cluster_size', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported']. Available attributes: ['parent_node', 'spec', '_init_args', '_Node__currently_parsing_index', 'logger', '_default_parse', 'from_data', '__module__', 'declare_attrs', '__init__', '__doc__', '__abstractmethods__', '_abc_impl', '_param_type_specifiers', 'Node_all_recognized', 'ignore', 'has_power_gating', 'power_gated_at', '', 'datawidth', 'technology', 'n_banks', 'block_size', 'cluster_size', 'width', 'depth', 'entries', 'sizeKB', 'reduction_supported', 'multiple_buffering', 'min_utilization', 'shared_bandwidth', 'read_bandwidth', 'write_bandwidth', 'network_fill_latency', 'network_drain_latency', 'per_dataspace_bandwidth_consumption_scale', 'allow_overbooking', 'metadata_block_size', 'metadata_datawidth', 'metadata_storage_width', 'metadata_storage_depth', 'concordant_compressed_tile_traversal', 'tile_partition_supported', 'decompression_supported', 'compression_supported', '_require_one_of', '_require_all_or_none_of', '_update_combine_pre_parse', 'require_one_of', 'require_all_or_none_of', 'combine', 'from_yaml_files', '_check_alias', '__getitem__', '__setitem__', 'get', 'setdefault', 'pop', 'check_unrecognized', '__getattr__', '__setattr__', '__dict__', '__weakref__', 'get_specifiers_from_processors', 'reset_specifiers_from_processors', 'reset_processor_elems', 'recognize_all', '_get_type_specifiers', '_get_all_recognized', '_get_tag', 'get_global_spec', 'set_global_spec', 'get_tag', '_get_index2checker', 'items', 'combine_index', '_parse_elem', '_parse_elems', '_parse_extra_elems', 'get_name', 'recursive_apply', 'clean_empties', 'isempty', 'isempty_recursive', 'add_attr', '_check_unrecognized', 'get_nodes_of_type', 'get_setter_lambda', 'get_combiner_lambda', 'get_setters_for_keytag', 'get_combiners_for_keytag', 'get_setters_for_type', 'get_combiners_for_type', '__str__', '__format__', 'try_combine', 'is_defined_non_default_non_empty', 'parse_expressions', '_parse_expression', 'unique_class_name', '__slots__', '__new__', '__repr__', '__hash__', '__getattribute__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__sizeof__', '__dir__', '__class__', '__iter__', '__or__', '__ror__', '__ior__', '__len__', '__delitem__', '__contains__', 'popitem', 'keys', 'values', 'update', 'fromkeys', 'clear', 'copy', '__reversed__', '__class_getitem__']

Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels