-
Notifications
You must be signed in to change notification settings - Fork 0
/
diff_2d_transform.hjson
162 lines (154 loc) · 10.5 KB
/
diff_2d_transform.hjson
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# transform ID -> dimension -> fp format -> pn
{
72a3ce98-5d21-48bf-b402-6ee96bafd1b6: {
description: "Transformations for the NVIDIA Titan V"
# 64-bit or 32-bit kernel
FP32:{
# Polynomial order
2:[
# Format: [Transformation, args, kwargs]
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 64], {outer_tag: "g.0", slabs:[0,1]}],
["split_iname", ["iel_inner", 32], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
["split_iname", ["idof", 10], {outer_tag: "g.1", inner_tag: "l.1"}],
["add_prefetch", ["vec", "j,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j"], {temporary_name: "matfp", default_tag: "unr"}],
],
3:[
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 64], {outer_tag: "g.0", slabs:[0,1]}],
["split_iname", ["iel_inner", 32], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
["split_iname", ["idof", 20], {outer_tag: "g.1", inner_tag: "l.1"}],
["add_prefetch", ["vec", "j,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j"], {temporary_name: "matfp", default_tag: "unr"}],
],
4:[
# Move this to array context?
#["tag_array_axes", ["diff_mat", "sep,c,c"]],
#["tag_array_axes", ["result", "sep,f,f"]],
#["tag_array_axes", ["vec", "f,f"]],
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 64], {outer_tag: "g.0", slabs:[0,1]}],
["split_iname", ["iel_inner", 16], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
["split_iname", ["idof", 35], {outer_tag: "g.1", inner_tag: "l.1"}],
["add_prefetch", ["vec", "j,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j"], {temporary_name: "matfp", default_tag: "unr"}],
#["split_iname", ["iel", 64], {outer_tag: "g.0", slabs:[0,1]}],
#["split_iname", ["iel_inner", 16], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
#["split_iname", ["idof", 35], {outer_tag: "g.1", inner_tag: "l.1"}],
#["add_prefetch", ["vec", "j,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
#["add_prefetch", ["diff_mat", "j"], {temporary_name: "matfp", default_tag: "unr"}],
],
5:[
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 192], {outer_tag: "g.0", slabs: [0,1]}],
["split_iname", ["iel_inner", 16], {outer_tag: "ilp", inner_tag: "l.0", slabs: [0,1]}],
["split_iname", ["idof", 56], {outer_tag: "g.1", inner_tag: "l.1"}],
["split_iname", ["j", 8], {outer_tag: "for", inner_tag: "for"}],
["add_prefetch", ["vec", "j_outer,j_inner,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j_inner"], {temporary_name: "mat1fp", default_tag: "unr"}],
6:[
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 128], {outer_tag: "g.0", slabs:[0,1]}],
["split_iname", ["iel_inner", 32], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
["split_iname", ["idof", 42], {outer_tag: "g.1"}],
["split_iname", ["idof_inner", 14], {outer_tag: "ilp", inner_tag: "l.1"}],
["split_iname", ["j", 14], {outer_tag: "for", inner_tag: "for"}],
["add_prefetch", ["vec", "j_outer,j_inner,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j_inner"], {temporary_name: "matfp", default_tag: "unr"}],
#["add_prefetch", ["mat2", "j_inner"], {temporary_name: "mat2fp", default_tag: "unr"}],
#["add_prefetch", ["mat3", "j_inner"], {temporary_name: "mat3fp", default_tag: "unr"}],
#["rename_iname", ["mat3_dim_1", "mat1_dim_1"], {existing_ok: true}],
#["rename_iname", ["mat2_dim_1", "mat1_dim_1"], {existing_ok: true}],
],
7:[
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 96], {outer_tag: "g.0", slabs: [0,1]}],
["split_iname", ["iel_inner", 8], {outer_tag: "ilp", inner_tag: "l.0", slabs: [0,1]}],
["split_iname", ["idof", 120], {outer_tag: "g.1", inner_tag: "l.1"}],
["split_iname", ["j", 8], {outer_tag: "for", inner_tag: "for"}],
["add_prefetch", ["vec", "j_outer,j_inner,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j_inner"], {temporary_name: "matfp", default_tag: "unr"}],
#["add_prefetch", ["mat2", "j_inner"], {temporary_name: "mat2fp", default_tag: "unr"}],
#["add_prefetch", ["mat3", "j_inner"], {temporary_name: "mat3fp", default_tag: "unr"}],
#["rename_iname", ["mat3_dim_1", "mat1_dim_1"], {existing_ok: true}],
#["rename_iname", ["mat2_dim_1", "mat1_dim_1"], {existing_ok: true}],
]
}
# Not optimized, just copied from 32 bit version
FP64: {
10:[
# Format: [Transformation, args, kwargs]
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 128], {outer_tag: "g.0", slabs:[0,1]}],
["split_iname", ["iel_inner", 32], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
["split_iname", ["idof", 10], {outer_tag: "g.1"}],
["split_iname", ["idof_inner", 101], {outer_tag: "ilp", inner_tag: "l.1"}],
["add_prefetch", ["vec", "j,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["tag_array_axes", ["vecf", "f,f"]],
["split_iname", ["j", 10], {outer_tag: "for", inner_tag: "for"}],
["add_inames_for_unused_hw_axes"]
],
20:[
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 80], {outer_tag: "g.0", slabs:[0,1]}],
# For tests uncomment this
#["split_iname", ["iel", 16], {outer_tag: "g.0", slabs:[0,1]}],
["split_iname", ["iel_inner", 16], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
#["split_iname", ["idof", 20], {outer_tag: "g.1", inner_tag: "l.1"}],
["split_iname", ["idof", 20], {outer_tag: "g.1"}],
["split_iname", ["idof_inner", 10], {outer_tag: "ilp", inner_tag: "l.1"}],
# For tests comment this
["add_prefetch", ["vec", "j,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
#["add_prefetch", ["diff_mat", "j"], {temporary_name: "matfp", default_tag: "unr"}],
#["split_iname", ["j", 10], {outer_tag: "for", inner_tag: "for"}],
["tag_array_axes", ["vecf", "f,f"]],
["add_inames_for_unused_hw_axes"]
],
35:[
["split_iname", ["iel", 64], {outer_tag: "g.0", slabs:[0,1]}],
["split_iname", ["iel_inner", 32], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
["split_iname", ["idof", 35], {outer_tag: "g.1"}],
["split_iname", ["idof_inner", 7], {outer_tag: "ilp", inner_tag: "l.1"}],
["add_prefetch", ["vec", "j,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["tag_array_axes", ["vecf", "f,f"]],
["add_inames_for_unused_hw_axes"]
],
56:[
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 64], {outer_tag: "g.0", slabs: [0,1]}],
["split_iname", ["iel_inner", 16], {outer_tag: "ilp", inner_tag: "l.0", slabs: [0,1]}],
["split_iname", ["idof", 56], {outer_tag: "g.1", inner_tag: "l.1"}],
["split_iname", ["j", 8], {outer_tag: "for", inner_tag: "for"}],
["add_prefetch", ["vec", "j_outer,j_inner,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j_inner"], {temporary_name: "mat1fp", default_tag: "unr"}],
]
84:[
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 64], {outer_tag: "g.0", slabs:[0,1]}],
["split_iname", ["iel_inner", 16], {outer_tag: "ilp", inner_tag: "l.0", slabs:[0,1]}],
["split_iname", ["idof", 42], {outer_tag: "g.1"}],
["split_iname", ["idof_inner", 14], {outer_tag: "ilp", inner_tag: "l.1"}],
["split_iname", ["j", 14], {outer_tag: "for", inner_tag: "for"}],
["add_prefetch", ["vec", "j_outer,j_inner,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j_inner"], {temporary_name: "matfp", default_tag: "unr"}],
#["rename_iname", ["mat3_dim_1", "mat1_dim_1"], {existing_ok: true}],
#["rename_iname", ["mat2_dim_1", "mat1_dim_1"], {existing_ok: true}],
],
120:[
["tag_inames", [[["imatrix", "ilp"]]]],
["split_iname", ["iel", 48], {outer_tag: "g.0", slabs: [0,1]}],
["split_iname", ["iel_inner", 8], {outer_tag: "ilp", inner_tag: "l.0", slabs: [0,1]}],
["split_iname", ["idof", 120], {outer_tag: "g.1", inner_tag: "l.1"}],
["split_iname", ["j", 8], {outer_tag: "for", inner_tag: "for"}],
["add_prefetch", ["vec", "j_outer,j_inner,iel_inner_outer,iel_inner_inner"], {temporary_name: "vecf", default_tag: "l.auto"}],
["add_prefetch", ["diff_mat", "j_inner"], {temporary_name: "matfp", default_tag: "unr"}],
#["add_prefetch", ["mat2", "j_inner"], {temporary_name: "mat2fp", default_tag: "unr"}],
#["add_prefetch", ["mat3", "j_inner"], {temporary_name: "mat3fp", default_tag: "unr"}],
#["rename_iname", ["mat3_dim_1", "mat1_dim_1"], {existing_ok: true}],
#["rename_iname", ["mat2_dim_1", "mat1_dim_1"], {existing_ok: true}],
]
}
}
1d7cab16-19bd-4474-95f2-44ed1c0e60df: {}
}