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

Class HyperCube

cutlass.py/tiling.py:6–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4
5
6class HyperCube:
7 def __init__(
8 self, ndim: int, dimensions: Optional[List[Union[int, IntegerType]]] = None
9 ) -> None:
10 """
11 dimensions:
12 each item: if item is IntegerType, it's dynamic, else it's static int value.
13 """
14 self.ndim = ndim
15 self.dimensions = (
16 ([IntegerType(unsigned=False, bits=32)] for _ in range(ndim))
17 if dimensions is None
18 else dimensions
19 )
20 assert isinstance(dimensions, (list, tuple))
21 assert len(self.dimensions) == self.ndim
22 assert all(
23 [self.dim_is_dynamic(i) or self.dimensions[i] > 0 for i in range(self.ndim)]
24 ), "Static dim value should be > 0."
25
26 def __getitem__(self, key: int):
27 assert key >= 0 and key < self.ndim
28 return self.dimensions[key]
29
30 def __setitem__(self, key: int, value: Union[int, IntegerType]):
31 assert key >= 0 and key < self.ndim
32 assert (
33 isinstance(value, IntegerType) or value > 0
34 ), "Static dim value should be > 0."
35 self.dimensions[key] = value
36
37 def __len__(self):
38 return self.ndim
39
40 def append_and_get(self, v: Union[int, IntegerType]):
41 dimensions = [x for x in self.dimensions] + [v]
42 ret = HyperCube(self.ndim + 1, dimensions)
43 return ret
44
45 def dim_is_dynamic(self, key: int):
46 return isinstance(self[key], IntegerType)
47
48 def dim_is_static(self, key: int):
49 return not self.dim_is_dynamic(key)
50
51 def has_dynamic(self):
52 return any([self.dim_is_dynamic(i) for i in range(self.ndim)])
53
54 def get_static_dims(self):
55 return [self.dimensions[i] for i in range(self.ndim) if self.dim_is_static(i)]
56
57 def get_static_dims_with_keys(self):
58 return [
59 (i, self.dimensions[i]) for i in range(self.ndim) if self.dim_is_static(i)
60 ]
61
62 def num_elements(self):
63 assert (

Callers 3

__init__Method · 0.90
tile_scheduler.pyFile · 0.90
append_and_getMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected