5 def __init__(self
, filename
):
6 f
= open(filename
, 'r')
7 self
.json
= json
.load(f
)
11 return json
.dumps(self
.json
, indent
=2)
18 return self
.json
['statements']
22 Create a map that interchanges two dimensions 'A' and 'B'
24 numberDimensions: The overall number of dimensions
25 dimensionA: The dimension of dimension 'A'
26 dimensionB: The dimension of dimension 'B'
28 getInterchange(2, 0, 1):
29 {[d0, d1] -> [d1, d0]}
32 def getInterchange(numberDimensions
, dimensionA
, dimensionB
):
34 dims
= ['d' + str(i
) for i
in range(numberDimensions
)]
35 dimString
= ",".join(dims
)
38 first
= dims
[dimensionA
]
39 second
= dims
[dimensionB
]
40 changedDims
[dimensionA
] = second
41 changedDims
[dimensionB
] = first
42 changedDimString
= ",".join(changedDims
)
44 return Map("{[%s] -> [%s]}" % (dimString
, changedDimString
))
47 Create a map that strip mines one dimension
49 numberDimensions: The overall number of dimensions
50 stripMineDim: The dimension to strip mine
51 factor: The strip mining factor
53 getStripMine(2, 1, 64):
54 {[d0, d1] -> [d0, o, d1] : o % 64 = 0 and o <= d1 <= d1 + 63}
57 def getStripMine(numberDimensions
, stripMineDim
, factor
):
59 dims
= ['d' + str(i
) for i
in range(numberDimensions
)]
60 dimString
= ",".join(dims
)
63 smd
= dims
[stripMineDim
]
64 changedDims
[stripMineDim
] = "o,%s" % smd
65 changedDimString
= ",".join(changedDims
)
66 string
= "{[%s] -> [%s]: o %% %i = 0 and o <= %s <= o + %i}" % \
67 (dimString
, changedDimString
, factor
, smd
, factor
- 1)