MCPcopy Create free account
hub / github.com/KnowingNothing/MatmulTutorial / HyperPoint

Class HyperPoint

cutlass.py/tiling.py:87–131  ·  view source on GitHub ↗

HyperPoint is similar to HyperCube. But values in dimensions could be any integer.

Source from the content-addressed store, hash-verified

85
86
87class HyperPoint:
88 """
89 HyperPoint is similar to HyperCube. But values in dimensions could be any integer.
90 """
91
92 def __init__(
93 self, ndim: int, dimensions: Optional[List[Union[int, IntegerType]]] = None
94 ) -> None:
95 """
96 dimensions:
97 each item: if item is IntegerType, it's dynamic, else it's static int value.
98 """
99 self.ndim = ndim
100 self.dimensions = (
101 ([IntegerType(unsigned=False, bits=32)] for _ in range(ndim))
102 if dimensions is None
103 else dimensions
104 )
105 assert isinstance(dimensions, (list, tuple))
106 assert len(self.dimensions) == self.ndim
107
108 def __getitem__(self, key: int):
109 assert key >= 0 and key < self.ndim
110 return self.dimensions[key]
111
112 def __setitem__(self, key: int, value: Union[int, IntegerType]):
113 assert key >= 0 and key < self.ndim
114 self.dimensions[key] = value
115
116 def __len__(self):
117 return self.ndim
118
119 def dim_is_dynamic(self, key: int):
120 return isinstance(self[key], IntegerType)
121
122 def dim_is_static(self, key: int):
123 return not self.dim_is_dynamic(key)
124
125 def has_dynamic(self):
126 return any([self.dim_is_dynamic(i) for i in range(self.ndim)])
127
128 def get_static_dims_with_keys(self):
129 return [
130 (i, self.dimensions[i]) for i in range(self.ndim) if self.dim_is_static(i)
131 ]

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected