Skip to content

BUG: Jupyter dependency conflicts due to updates of the tool/import. #1

@mattecurro

Description

@mattecurro
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__']

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions