jukefa-ukrgen 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jukefa_ukrgen-0.2.0.dist-info/METADATA +177 -0
- jukefa_ukrgen-0.2.0.dist-info/RECORD +133 -0
- jukefa_ukrgen-0.2.0.dist-info/WHEEL +4 -0
- jukefa_ukrgen-0.2.0.dist-info/entry_points.txt +3 -0
- jukefa_ukrgen-0.2.0.dist-info/licenses/LICENSE-GPL-3.0 +674 -0
- jukefa_ukrgen-0.2.0.dist-info/licenses/LICENSE-MIT +21 -0
- ukrgen/__init__.py +6 -0
- ukrgen/clitools/blisgen.py +117 -0
- ukrgen/clitools/internal/compose_mm.py +137 -0
- ukrgen/clitools/internal/ukr.py +13 -0
- ukrgen/clitools/ukrgen.py +200 -0
- ukrgen/codegen/isa_compiler_support.py +10 -0
- ukrgen/components/__init__.py +8 -0
- ukrgen/components/operation.py +222 -0
- ukrgen/components/tile.py +372 -0
- ukrgen/compute/__init__.py +6 -0
- ukrgen/compute/trsm/__init__.py +7 -0
- ukrgen/compute/trsm/trsm_mxn_register_sequence_generator.py +296 -0
- ukrgen/emitters/allocation.py +160 -0
- ukrgen/emitters/asmops.py +174 -0
- ukrgen/emitters/signature.py +2535 -0
- ukrgen/flow/hooks.py +107 -0
- ukrgen/flow/isa_map.py +45 -0
- ukrgen/flow/presets/__init__.py +133 -0
- ukrgen/flow/presets/gemm_fma_bc.yaml +31 -0
- ukrgen/flow/presets/gemm_fma_bc_blocks.yaml +33 -0
- ukrgen/flow/presets/gemm_fma_bc_lanes.yaml +34 -0
- ukrgen/flow/presets/gemm_fma_bc_vindex.yaml +31 -0
- ukrgen/flow/presets/gemm_fma_blocklane_vindex.yaml +34 -0
- ukrgen/flow/presets/gemm_fma_lane.yaml +34 -0
- ukrgen/flow/presets/gemm_fma_vf.yaml +31 -0
- ukrgen/flow/presets/gemm_fopa_bc_vindex.yaml +27 -0
- ukrgen/flow/presets/packm_bc.yaml +29 -0
- ukrgen/flow/presets/packm_vf.yaml +23 -0
- ukrgen/flow/presets/packm_za.yaml +10 -0
- ukrgen/flow/stage_engine.py +86 -0
- ukrgen/flow/stage_param.py +17 -0
- ukrgen/flow/stages/__init__.py +0 -0
- ukrgen/flow/stages/addresses.py +42 -0
- ukrgen/flow/stages/composition.py +62 -0
- ukrgen/flow/stages/datatype.py +69 -0
- ukrgen/flow/stages/dimension.py +95 -0
- ukrgen/flow/stages/emit.py +77 -0
- ukrgen/flow/stages/irmods.py +166 -0
- ukrgen/flow/stages/isa_specialize.py +141 -0
- ukrgen/flow/stages/isaparam.py +51 -0
- ukrgen/flow/stages/layout.py +123 -0
- ukrgen/flow/stages/loops.py +139 -0
- ukrgen/flow/stages/model.py +263 -0
- ukrgen/flow/stages/scheduling.py +237 -0
- ukrgen/flow/stages/setup.py +75 -0
- ukrgen/flow/stages/solve.py +766 -0
- ukrgen/flow/stages/stage.py +57 -0
- ukrgen/flow/stages/sto.py +353 -0
- ukrgen/flow/stages/ukr/__init__.py +10 -0
- ukrgen/flow/stages/ukr/gemm.py +106 -0
- ukrgen/flow/stages/ukr/mm.py +50 -0
- ukrgen/flow/stages/ukr/pack.py +60 -0
- ukrgen/flow/stages/ukr/storage.py +180 -0
- ukrgen/flow/stages/ukr/ukr.py +651 -0
- ukrgen/flow/stages/unvec.py +64 -0
- ukrgen/flow/ukr_context.py +82 -0
- ukrgen/generators/__init__.py +6 -0
- ukrgen/generators/tiling.py +159 -0
- ukrgen/injectors/blis/cgen.py +715 -0
- ukrgen/injectors/blis/families.py +870 -0
- ukrgen/injectors/blis/generate.py +137 -0
- ukrgen/injectors/blis/patch.py +119 -0
- ukrgen/injectors/blis/patches/pr960-dynamic-blocksizes.diff +122 -0
- ukrgen/injectors/blis/templates.py +250 -0
- ukrgen/iremu/lsc/strided_ldst.py +14 -0
- ukrgen/iremu/sme/scale_tile.py +22 -0
- ukrgen/iremu/sme/store_tile.py +34 -0
- ukrgen/iremu/sme/tma_tile.py +23 -0
- ukrgen/irmod/__init__.py +3 -0
- ukrgen/irmod/lsc/__init__.py +39 -0
- ukrgen/irmod/lsc/addrmerge.py +113 -0
- ukrgen/irmod/lsc/base.py +123 -0
- ukrgen/irmod/lsc/cluster.py +53 -0
- ukrgen/irmod/lsc/combine_load_transform.py +20 -0
- ukrgen/irmod/lsc/copyprop.py +209 -0
- ukrgen/irmod/lsc/hoist.py +77 -0
- ukrgen/irmod/lsc/lanefuse.py +101 -0
- ukrgen/irmod/lsc/ldinc.py +220 -0
- ukrgen/irmod/lsc/shufflenet.py +129 -0
- ukrgen/irmod/lsc/slices.py +339 -0
- ukrgen/irmod/lsc/structfuse.py +225 -0
- ukrgen/irmod/lsc/tailmask.py +217 -0
- ukrgen/irmod/lsc/unroll.py +199 -0
- ukrgen/irmod/lsc/vectorize.py +107 -0
- ukrgen/irmod/lsc/widen.py +239 -0
- ukrgen/logging.py +24 -0
- ukrgen/lsc_model/__init__.py +3 -0
- ukrgen/lsc_model/addressing.py +317 -0
- ukrgen/lsc_model/builder.py +1547 -0
- ukrgen/lsc_model/ir.py +222 -0
- ukrgen/lsc_model/state.py +142 -0
- ukrgen/matching/__init__.py +3 -0
- ukrgen/matching/math.py +1069 -0
- ukrgen/models/__init__.py +7 -0
- ukrgen/models/addr/reg_selectors.py +274 -0
- ukrgen/models/addr_resolver.md +86 -0
- ukrgen/models/addr_resolver.py +236 -0
- ukrgen/models/load_store_operations.py +593 -0
- ukrgen/models/lsc/index.py +49 -0
- ukrgen/models/lsc/offset.py +365 -0
- ukrgen/models/lsc/reg.py +61 -0
- ukrgen/models/offset_mapper.py +187 -0
- ukrgen/models/tile_offset_mapper.py +44 -0
- ukrgen/schedulers/__init__.py +7 -0
- ukrgen/schedulers/dependency.py +57 -0
- ukrgen/schedulers/distance.py +227 -0
- ukrgen/schedulers/issue.py +133 -0
- ukrgen/schedulers/list_scheduler.py +597 -0
- ukrgen/schedulers/reg_compare.py +46 -0
- ukrgen/schedulers/simple_dependency_scheduler.py +239 -0
- ukrgen/sequence_generator.py +39 -0
- ukrgen/specializers/__init__.py +6 -0
- ukrgen/specializers/addresses.py +492 -0
- ukrgen/specializers/signature.py +1106 -0
- ukrgen/support/__init__.py +0 -0
- ukrgen/support/data_move.py +618 -0
- ukrgen/support/dm_resolutions/__init__.py +0 -0
- ukrgen/support/dm_resolutions/direct.py +132 -0
- ukrgen/support/dm_resolutions/scalar_reduce.py +235 -0
- ukrgen/support/dm_resolutions/strided.py +144 -0
- ukrgen/support/dm_solver.py +598 -0
- ukrgen/support/domains.py +18 -0
- ukrgen/support/encoding.py +274 -0
- ukrgen/support/op.py +422 -0
- ukrgen/support/sig_group.py +250 -0
- ukrgen/support/tiles.py +243 -0
- ukrgen/support/transpose.py +129 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: jukefa-ukrgen
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: A microkernel generator
|
|
5
|
+
Author-email: linedot <linedot@linedot.org>
|
|
6
|
+
License-File: LICENSE-GPL-3.0
|
|
7
|
+
License-File: LICENSE-MIT
|
|
8
|
+
Classifier: Operating System :: OS Independent
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Requires-Python: >=3.12
|
|
11
|
+
Requires-Dist: gitpython
|
|
12
|
+
Requires-Dist: jukefa-asmgen>=0.6.0
|
|
13
|
+
Requires-Dist: mako
|
|
14
|
+
Requires-Dist: pyyaml
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
|
|
17
|
+
# ukrgen - compute kernel generators based on asmgen
|
|
18
|
+
|
|
19
|
+
ukrgen generates BLAS microkernels - `{s,d}gemm` and `{s,d}packm` - for
|
|
20
|
+
AVX2, AVX-512, NEON, SVE, SME (and SME with SVE, the microtile split between
|
|
21
|
+
them) and RVV, from tile operations and a few parameters, and schedules
|
|
22
|
+
them. `blisgen` builds a complete BLIS configuration from families of such
|
|
23
|
+
kernels, the microkernel chosen at run time; `ukrgen` generates a single
|
|
24
|
+
kernel, to inspect its code or debug the generator.
|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
git clone https://github.com/FZJ-JSC/jukefa-ukrgen
|
|
30
|
+
cd jukefa-ukrgen
|
|
31
|
+
pip install . "asmgen @ git+https://github.com/FZJ-JSC/jukefa-asmgen"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Python 3.10 or newer, asmgen 0.6 or newer. Cross-compilers and qemu are
|
|
35
|
+
needed only to build and test kernels for another ISA.
|
|
36
|
+
|
|
37
|
+
## blisgen
|
|
38
|
+
|
|
39
|
+
Generates a BLIS configuration from kernel families: one YAML file per data
|
|
40
|
+
type and kernel type. `ukrconfig/<isa>/<config>/` has configurations for
|
|
41
|
+
every ISA - [docs/UKRCONFIG.md](docs/UKRCONFIG.md) lists them and describes
|
|
42
|
+
their keys and tuning.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# patch a BLIS tree with SVE kernels
|
|
46
|
+
blisgen --sgemm-config ukrconfig/sve/fma_bc_vindex/sgemm.yaml \
|
|
47
|
+
--dgemm-config ukrconfig/sve/fma_bc_vindex/dgemm.yaml \
|
|
48
|
+
--spackm-config ukrconfig/sve/fma_bc_vindex/spackm.yaml \
|
|
49
|
+
--dpackm-config ukrconfig/sve/fma_bc_vindex/dpackm.yaml \
|
|
50
|
+
--from-dir /path/to/blis --out-dir /path/to/blis-ukrgen-sve \
|
|
51
|
+
--author "Your Name"
|
|
52
|
+
|
|
53
|
+
# configure and build it (here cross-compiling on an x86 machine)
|
|
54
|
+
cd /path/to/blis-ukrgen-sve
|
|
55
|
+
CC=aarch64-linux-gnu-gcc ./configure -t none ukrgen_sve
|
|
56
|
+
make -j$(nproc) && make testsuite-bin
|
|
57
|
+
|
|
58
|
+
# run BLIS's testsuite under qemu
|
|
59
|
+
cd testsuite
|
|
60
|
+
qemu-aarch64 -cpu max,sve512=on -L /usr/aarch64-linux-gnu ../test_libblis.x
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`--from-git` clones BLIS from github.com/flame/blis instead of
|
|
64
|
+
`--from-dir`; with neither, blisgen writes the configuration's files alone.
|
|
65
|
+
`--config-name` names the configuration (default `ukrgen_<isa>`), `-j`
|
|
66
|
+
builds that many kernels at once. Every size of a family the registers hold
|
|
67
|
+
is built, and `BLIS_MR_D`, `BLIS_NR_D` (`_S` for singles) choose among them
|
|
68
|
+
at run time - see [docs/UKRCONFIG.md](docs/UKRCONFIG.md#at-run-time).
|
|
69
|
+
|
|
70
|
+
## ukrgen
|
|
71
|
+
|
|
72
|
+
Generates one kernel from the command line. Its options come in stages,
|
|
73
|
+
each appearing once the ones before it are given:
|
|
74
|
+
`ukrgen --isa rvv --rvv-LMUL 1 --ukr gemm --help` lists what follows.
|
|
75
|
+
Without `--print-asm` ukrgen prints the tile operation chosen for each of
|
|
76
|
+
the kernel's steps; `--print-stos`, `--print-ir` and `--print-schedule` show
|
|
77
|
+
the stages' work, `--list-tileop-candidates` every tile operation a step
|
|
78
|
+
could take, and `--<step>-tileop` overrides a preset's choice.
|
|
79
|
+
|
|
80
|
+
### Example: a gemm kernel
|
|
81
|
+
|
|
82
|
+
- RVV, LMUL 1, FP32 (sgemm)
|
|
83
|
+
- vector-scalar FMA, `vfmacc.vf`: the `gemm_fma_vf` preset, vectors along m
|
|
84
|
+
- 2 vectors by 12 columns, k unrolled 8 times
|
|
85
|
+
- A and B packed (`k:p`), C column-major at a column stride (`n:s`)
|
|
86
|
+
- two address registers each for A and B, taken in turn
|
|
87
|
+
- 13 instructions between a vector register's dependent uses, 3 between
|
|
88
|
+
an address bump and the accesses using it
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
$ ukrgen --isa rvv --rvv-LMUL 1 --ukr gemm \
|
|
92
|
+
--A-data-type FP32 --B-data-type FP32 --AB-data-type FP32 --C-data-type FP32 \
|
|
93
|
+
--A-layout m:c k:p --B-layout n:c k:p --C-layout m:c n:s \
|
|
94
|
+
--tileop-preset gemm_fma_vf --tileop-vectorize m \
|
|
95
|
+
--m 2 --n 12 --k 8 \
|
|
96
|
+
--A-addr-regs 2 --B-addr-regs 2 --A-addr-pattern rotate --B-addr-pattern rotate \
|
|
97
|
+
--distances "RAW:data::::13" "WAW:data::::13" "WAR:data::::13" "RAW:address:greg:::3" \
|
|
98
|
+
--print-asm
|
|
99
|
+
// bases: A in a1, B in a2, C in a3, alpha in a4, beta in a5
|
|
100
|
+
vsetvli t0, zero, e32, m1, ta, ma
|
|
101
|
+
[...]
|
|
102
|
+
// block mm, loop over k
|
|
103
|
+
// init
|
|
104
|
+
vmv.v.i v1,0
|
|
105
|
+
[...]
|
|
106
|
+
// body
|
|
107
|
+
vfmacc.vf v1,f0,v25
|
|
108
|
+
vfmacc.vf v2,f1,v25
|
|
109
|
+
vfmacc.vf v3,f2,v25
|
|
110
|
+
[...]
|
|
111
|
+
// case beta==0 and alpha==1
|
|
112
|
+
// block store_ab
|
|
113
|
+
[...]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Without `--print-asm`, the tile operations the preset chose:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
--mm-tileop "fma[bdreg:VF](A.VEC:direct, B.FP:use_scalar, AB.VEC){i=m, n=1, k*=1}"
|
|
120
|
+
--store_ab-tileop "AB.VEC:direct"
|
|
121
|
+
--alphamul-tileop "mul[bdreg:VF](AB.VEC, alpha.FP:use_scalar, C.VEC){i=m, n=1}"
|
|
122
|
+
[...]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Example: a packm kernel
|
|
126
|
+
|
|
127
|
+
- RVV, LMUL 1, FP64 (dpackm)
|
|
128
|
+
- vectors along cdim: the `packm_vf` preset - a plain copy for kappa 1,
|
|
129
|
+
`vfmul.vf` by kappa otherwise
|
|
130
|
+
- 2 vectors a column (cdim 2 x VL), 4 columns an iteration
|
|
131
|
+
- A (`X`) and the packed panel (`Y`) column-major at a column stride
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
$ ukrgen --isa rvv --rvv-LMUL 1 --ukr pack \
|
|
135
|
+
--X-data-type FP64 --Y-data-type FP64 \
|
|
136
|
+
--X-layout m:c n:s --Y-layout m:c n:s \
|
|
137
|
+
--tileop-preset packm_vf --tileop-vectorize m \
|
|
138
|
+
--m 2 --n 4 --print-asm
|
|
139
|
+
// bases: X in a1, Y in a2, kappa in a3
|
|
140
|
+
vsetvli t0, zero, e64, m1, ta, ma
|
|
141
|
+
[...]
|
|
142
|
+
// case kappa==1
|
|
143
|
+
// block copy+store, loop over n
|
|
144
|
+
// prologue
|
|
145
|
+
[...]
|
|
146
|
+
vle64.v v1, (a1)
|
|
147
|
+
[...]
|
|
148
|
+
vse64.v v1, (a2)
|
|
149
|
+
[...]
|
|
150
|
+
// case otherwise
|
|
151
|
+
// block pack+store, loop over n
|
|
152
|
+
// init
|
|
153
|
+
fld f0, 0(a3)
|
|
154
|
+
[...]
|
|
155
|
+
vfmul.vf v3,v2,f0
|
|
156
|
+
[...]
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Documentation
|
|
160
|
+
|
|
161
|
+
- [docs/UKRCONFIG.md](docs/UKRCONFIG.md): the example configurations,
|
|
162
|
+
building BLIS with them, choosing kernels at run time, tuning
|
|
163
|
+
- [docs/GENERATOR.md](docs/GENERATOR.md): the generator's systems
|
|
164
|
+
- [docs/SCHEDULING.md](docs/SCHEDULING.md): scheduling
|
|
165
|
+
- [docs/BLISGEN_PLAN.md](docs/BLISGEN_PLAN.md),
|
|
166
|
+
[docs/PACKING_PLAN.md](docs/PACKING_PLAN.md): plans and progress
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
# License
|
|
170
|
+
|
|
171
|
+
ukrgen is distributed under the terms of both the MIT license and the GNU General Public License v3.0. Users may choose either license, at their option.
|
|
172
|
+
|
|
173
|
+
All new contributions must be made under both the MIT and GNU General Public License v3.0.
|
|
174
|
+
|
|
175
|
+
See LICENSE-GPL-3.0, LICENSE-MIT for details.
|
|
176
|
+
|
|
177
|
+
SPDX-License-Identifier: MIT OR GPL-3.0-or-later
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
ukrgen/__init__.py,sha256=DJphCo52IfF1WlxjAPfI6ArRrRxlTNF06NLscg6iG2Q,329
|
|
2
|
+
ukrgen/logging.py,sha256=t-ioHNwrUYn6tmNpByPv0ktPT_I9rKtE4nNS7n2ABAs,1052
|
|
3
|
+
ukrgen/sequence_generator.py,sha256=fd5c8hCdu56oQ6AEsTZVAoA0zcbvnH3HovUHdjT3VK4,1641
|
|
4
|
+
ukrgen/clitools/blisgen.py,sha256=stO-derKT0sjkEssLBTCF95gZe6Z00bxSUtKUC02mi0,6293
|
|
5
|
+
ukrgen/clitools/ukrgen.py,sha256=e9DzuatOOFNFmv_qxXtKf7LpmPU-4lCZ20ldmb1Z8sQ,7251
|
|
6
|
+
ukrgen/clitools/internal/compose_mm.py,sha256=d_BF--C5xlShipSn5hgQOUs0gXUJHn4DrQPQBw3sxLM,4284
|
|
7
|
+
ukrgen/clitools/internal/ukr.py,sha256=8sSHSxFKtCa8tfR-4nFVddgeI-kcXkS0miWINQhj-5c,534
|
|
8
|
+
ukrgen/codegen/isa_compiler_support.py,sha256=7vZUXaLQGkulu8C09_OLhcH-bchicVPaCmdCelsdjk8,285
|
|
9
|
+
ukrgen/components/__init__.py,sha256=ui4o8-fqL-y6SiYvBMrzWlLEXRUMpP3UlMkurODLYF4,374
|
|
10
|
+
ukrgen/components/operation.py,sha256=1yVFqgKA9tNUCjcgY-4CbQlBXXQB7eD6ssTbpBrjyEU,10174
|
|
11
|
+
ukrgen/components/tile.py,sha256=Z4ulwLaFQpvOVTbZQiwDFgsmSd_imTC6Jeqe8VZ43Og,13679
|
|
12
|
+
ukrgen/compute/__init__.py,sha256=DJphCo52IfF1WlxjAPfI6ArRrRxlTNF06NLscg6iG2Q,329
|
|
13
|
+
ukrgen/compute/trsm/__init__.py,sha256=qWcUuRJ_g13qXDI3uQjM6eQWjua5oLVS0DExHwk9gzQ,381
|
|
14
|
+
ukrgen/compute/trsm/trsm_mxn_register_sequence_generator.py,sha256=lJqDS5dW4Gj3Psfky9nXqF9LZfwOJE6zsT85RqXpTSQ,10551
|
|
15
|
+
ukrgen/emitters/allocation.py,sha256=w_TTJy4lCn6DhskEJIsY49vTzlN5YeQ01QcM8iSDhyc,7950
|
|
16
|
+
ukrgen/emitters/asmops.py,sha256=oUYl9DKLfF979Su_WdXhezk0acHbjKW-iUmQ0RiKnvc,7616
|
|
17
|
+
ukrgen/emitters/signature.py,sha256=HJ3cx74mE5BUX-dUs9BBg1kaKiNnVmiNUoJ-ESQfgDU,127100
|
|
18
|
+
ukrgen/flow/hooks.py,sha256=949gMCULndJCH8Qmr3N5x8MQZmh17KpxtNWaezItwcY,3664
|
|
19
|
+
ukrgen/flow/isa_map.py,sha256=WYUCgJYqyzwi2LfQb15Gni2BiV-wmZccPSYDZT4DpAQ,1069
|
|
20
|
+
ukrgen/flow/stage_engine.py,sha256=Yk0Pkuzpx1IrCzpi6TrKfbKPnJDSsLMoOs3bxcfVv6U,2904
|
|
21
|
+
ukrgen/flow/stage_param.py,sha256=k8ITkQmWCQ68MetoLOU1jCQpjwgADE43LPWgLVNd-EQ,505
|
|
22
|
+
ukrgen/flow/ukr_context.py,sha256=IA9_4TSLMVJp5-g93Q9TgGruSumZFX2OHzgnAXi4WvY,4135
|
|
23
|
+
ukrgen/flow/presets/__init__.py,sha256=U7NUUhC2Zp5Gu65GCO34nYXV593zslCL02bDPy82VO8,6188
|
|
24
|
+
ukrgen/flow/presets/gemm_fma_bc.yaml,sha256=PN-5_fr7hVxs5yo-BbupEtxTLGdEQVpnbViNYB1kkM0,972
|
|
25
|
+
ukrgen/flow/presets/gemm_fma_bc_blocks.yaml,sha256=fU8s7bHK-MLpUOpvkQZjaKgG4F8PYr0gvvQYQqJLAlA,899
|
|
26
|
+
ukrgen/flow/presets/gemm_fma_bc_lanes.yaml,sha256=jL1JRAwW0VC_k_eXrXYtjuMSXlXffJapIxgedvSFTqc,850
|
|
27
|
+
ukrgen/flow/presets/gemm_fma_bc_vindex.yaml,sha256=Q11aeQrxzzrULTgYo6MY5-BXs3T_gYwFY0Y884abvck,788
|
|
28
|
+
ukrgen/flow/presets/gemm_fma_blocklane_vindex.yaml,sha256=FSl-YMYT4tAoSFqGiHE8JkYQkjh0vTxdn9HJGIsIdG0,1019
|
|
29
|
+
ukrgen/flow/presets/gemm_fma_lane.yaml,sha256=CZc9GtINc2TFamr6es5wZ232GUF5vasPDOXV44lR0UE,993
|
|
30
|
+
ukrgen/flow/presets/gemm_fma_vf.yaml,sha256=tQriskh_xMNuX4MWpKFw54njt6E3RRnFVibzc8mCzy0,1036
|
|
31
|
+
ukrgen/flow/presets/gemm_fopa_bc_vindex.yaml,sha256=imV0aW3jaMyLl-EpPzzE197ZOEMmTPdMI5e1VUrny8M,1371
|
|
32
|
+
ukrgen/flow/presets/packm_bc.yaml,sha256=H4YOOs4zRBtTRv1Q2hOv81OBcmlaTUV4KZa3mWyhvuE,859
|
|
33
|
+
ukrgen/flow/presets/packm_vf.yaml,sha256=0Umtj-9kFuiTYbPiIfhOWG4xrjdqvZ_n4OO94B5rJR4,618
|
|
34
|
+
ukrgen/flow/presets/packm_za.yaml,sha256=KojLC0NDL5BnlE5XcTQmZo6TbkG6-liJi9SF6Q-tprQ,469
|
|
35
|
+
ukrgen/flow/stages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
ukrgen/flow/stages/addresses.py,sha256=_C0yvcnE3wAhpTGcUcDt1AbKImGj-9kWUdUUDz8klYw,1609
|
|
37
|
+
ukrgen/flow/stages/composition.py,sha256=Ktha-tgdemxKjwKeZcUXYjZ578AUUVljWXttm1w4F8U,1589
|
|
38
|
+
ukrgen/flow/stages/datatype.py,sha256=0j5e01EYP8aNDC5oXKzDVZBmJaK6ai86Hei1rmjkHqQ,2194
|
|
39
|
+
ukrgen/flow/stages/dimension.py,sha256=7XuU48_XgseeWN-dBA349W6AEIvAplShTXdz1PndJqs,4421
|
|
40
|
+
ukrgen/flow/stages/emit.py,sha256=18_rZapDlZg2RE71XyI-5CeTVfIBTSuuM6AFkVGpIFM,3750
|
|
41
|
+
ukrgen/flow/stages/irmods.py,sha256=IXGZutm9QHz63OgKJ-BdjxeD35Z8Ofy8IJhGaUzVKEs,7468
|
|
42
|
+
ukrgen/flow/stages/isa_specialize.py,sha256=xahW4hWDNyROKc9fYfBNl1ZBUdXxc9o_7ZyWZMFL8BI,7364
|
|
43
|
+
ukrgen/flow/stages/isaparam.py,sha256=cdESuzMv15P4HqtL7xsThpeEj-p9kTod6uMts27Fwcs,1846
|
|
44
|
+
ukrgen/flow/stages/layout.py,sha256=sLrOObj3uSKwxizcv0TgPoJvHbOJ50oGiQTOcW45_SQ,5822
|
|
45
|
+
ukrgen/flow/stages/loops.py,sha256=k1cwCTrhVa-1CXzZZj_TCzXrEgMVwQgF7fOrZENyC10,6366
|
|
46
|
+
ukrgen/flow/stages/model.py,sha256=smzcLPeXEb1qOnIBNe6CYZ1f5SWy4TcVl3Rd3wrfV00,14707
|
|
47
|
+
ukrgen/flow/stages/scheduling.py,sha256=PPy-0mPJeBuMbQDvqDSJjvHQ8am7F7-m1Djdo8AtquQ,12384
|
|
48
|
+
ukrgen/flow/stages/setup.py,sha256=06AerJLj5AG29BDYlZgW8UVosKhQ-ALTLymfvaLETjQ,3305
|
|
49
|
+
ukrgen/flow/stages/solve.py,sha256=5BjG6ewtTQpcV8o8pd4gvJNsNbqsdeI53b-q_jjKlQo,36709
|
|
50
|
+
ukrgen/flow/stages/stage.py,sha256=GC3urmGneHutV9tT1JmKHXrSgNH-TP6ZgtDq8t3PJ9c,1710
|
|
51
|
+
ukrgen/flow/stages/sto.py,sha256=K1QkuQ2tHe8aMeRIaBayPzoH4hH8F8LqULEl_MCwmfg,16951
|
|
52
|
+
ukrgen/flow/stages/unvec.py,sha256=vvIiLoQhgLql_spH8O3fHujg7CGafl-4D98pOpdkoiY,2417
|
|
53
|
+
ukrgen/flow/stages/ukr/__init__.py,sha256=e2zNivdx9WZmhUKzgR_outOvS9halMWCtFd7ImsfGE8,281
|
|
54
|
+
ukrgen/flow/stages/ukr/gemm.py,sha256=Ro7D2dcCjJIhT8aVXeRl62AWcGbZTMb2s_gEs3RS88Q,5212
|
|
55
|
+
ukrgen/flow/stages/ukr/mm.py,sha256=DK_QILjxHsBzm3CncSG4RL4bYziYSo6pHCms_leLrH4,1633
|
|
56
|
+
ukrgen/flow/stages/ukr/pack.py,sha256=th3FetCXwDgCGqt6HXxe3sv88bxRyiLxodhEE6aF4cE,2125
|
|
57
|
+
ukrgen/flow/stages/ukr/storage.py,sha256=XbZRj4pbCuywVIPQEXDSg8i87-E2OV5jwmXWuI3MGS0,7167
|
|
58
|
+
ukrgen/flow/stages/ukr/ukr.py,sha256=ioEgLzKlgKbX1cUOpml_8TguY52U-Q5X0l2f6NqKX0o,23614
|
|
59
|
+
ukrgen/generators/__init__.py,sha256=DJphCo52IfF1WlxjAPfI6ArRrRxlTNF06NLscg6iG2Q,329
|
|
60
|
+
ukrgen/generators/tiling.py,sha256=DYo_Mik9OHUurqGvPl9sFCrXCIIT6H8uGxbTiKlWzO4,6760
|
|
61
|
+
ukrgen/injectors/blis/cgen.py,sha256=2J6s2kzFdglxDInsoT4yswOVVIaeo36U6q-oL5okseU,30844
|
|
62
|
+
ukrgen/injectors/blis/families.py,sha256=sZZPcso3YDI6BjA43tut1r8K5K_jxKrmvzI2HAWF6po,40933
|
|
63
|
+
ukrgen/injectors/blis/generate.py,sha256=1Y1eSQdAyRD-xl3Fdfdknvo2Nqab7vO055e-RWCAKdE,6851
|
|
64
|
+
ukrgen/injectors/blis/patch.py,sha256=43yoa9OFM_s-yZeYeuueLPs3H7QLst4oZJtvH3gookU,5160
|
|
65
|
+
ukrgen/injectors/blis/templates.py,sha256=0p9IhTOnjt0H1lRlAOlOdEO5dwkCmFrEJ-nLPbCVPPo,6598
|
|
66
|
+
ukrgen/injectors/blis/patches/pr960-dynamic-blocksizes.diff,sha256=84GjsKLbOfKcKmMXtqy9CvfxsS9cr0qIl6-7r50kHSM,5223
|
|
67
|
+
ukrgen/iremu/lsc/strided_ldst.py,sha256=sSlv7lV5q1t3Vj4JYvahmBu_y06h8VBjfjVhrZUSgac,185
|
|
68
|
+
ukrgen/iremu/sme/scale_tile.py,sha256=rpAAAfvWQQLQvUJStah50XIhtenCyINtDQkmr0SsHdg,508
|
|
69
|
+
ukrgen/iremu/sme/store_tile.py,sha256=kCtYpL5d9afgvXXi4rtAFwM9gw8pTNPjNv7cGAVpiLc,858
|
|
70
|
+
ukrgen/iremu/sme/tma_tile.py,sha256=CAZQe4Cezoe6I-ape3akG2VA6Or9GURS4H6_mc9EcQM,606
|
|
71
|
+
ukrgen/irmod/__init__.py,sha256=DRRde-LDLZoO-eqlwuh15TVgDQHcdxgi_1NOKIRe2lk,25
|
|
72
|
+
ukrgen/irmod/lsc/__init__.py,sha256=RpXSf-IAOK3QOhhQqsGSHLW0XTYmUV1gmjM_gqhsQNI,1917
|
|
73
|
+
ukrgen/irmod/lsc/addrmerge.py,sha256=P2eU1PFMiI54XIERRMsqEJBXYWOhzXgkctlbpEVEzk8,5103
|
|
74
|
+
ukrgen/irmod/lsc/base.py,sha256=LPDFyh-Es_OPtVGUC5I1dwBw-_PrTTXpmW9MiTHOaAw,3842
|
|
75
|
+
ukrgen/irmod/lsc/cluster.py,sha256=BMJswYMOViiVfSnabU_sn3zDIW080RhX50MbYYnN-UU,2592
|
|
76
|
+
ukrgen/irmod/lsc/combine_load_transform.py,sha256=NJW0vaU98ISNDReyWZceaGZNcuimcO_U-i8TAu970W8,526
|
|
77
|
+
ukrgen/irmod/lsc/copyprop.py,sha256=BJN0WC09IGfiqvnyPTgfXk01w7o6HelHmR_44NSgQ7Q,7767
|
|
78
|
+
ukrgen/irmod/lsc/hoist.py,sha256=bg__Z5Hr4FDq2enxoaTVvVSJQvqfCSEyCHjoPng0C8Y,3375
|
|
79
|
+
ukrgen/irmod/lsc/lanefuse.py,sha256=tFp_e4mEme6a2ffnMjAJ0wWqQkCN3wm71W1Rn1HmBHw,4540
|
|
80
|
+
ukrgen/irmod/lsc/ldinc.py,sha256=hZiGa2GkfzPCW6l_e_MWJrKM-Cl-4vyfRAvVkZD7uHQ,11628
|
|
81
|
+
ukrgen/irmod/lsc/shufflenet.py,sha256=_F03Qwjk4KkCMNEEkGWGVa2JtfBt9kEj1do-JjgE5_Q,6269
|
|
82
|
+
ukrgen/irmod/lsc/slices.py,sha256=qJzStMlTfwdkfC5c9QsngBzao8-us6jFPtJl7NGvAgE,14915
|
|
83
|
+
ukrgen/irmod/lsc/structfuse.py,sha256=n1qocydgbEhMsN2RPs2GV34GcD9VCurwqW7IeSMJ7A0,10900
|
|
84
|
+
ukrgen/irmod/lsc/tailmask.py,sha256=DkwTj7nlzbRt5FgDPaqiPitSBDr-JVQEv-9xdHFq-kM,10817
|
|
85
|
+
ukrgen/irmod/lsc/unroll.py,sha256=6rfP8nht34R_Xanh4wsigcInJCNApiL09y1ququTVR8,8623
|
|
86
|
+
ukrgen/irmod/lsc/vectorize.py,sha256=MftSrL4GpiVTFh5I4dEK5upCzDVVLAG1Qg097LqraYY,4520
|
|
87
|
+
ukrgen/irmod/lsc/widen.py,sha256=EsEHzwJOccDfZFY-s4iRIWH4e4UXILXsxlpo-anrvSg,10847
|
|
88
|
+
ukrgen/lsc_model/__init__.py,sha256=ec_p4rzTewV-HBi4pL6AjD7O3Wpg_mN20fsq0eyzCV4,94
|
|
89
|
+
ukrgen/lsc_model/addressing.py,sha256=k2Elb-WEUvX6fqQGyfEEeXhd2MAeX0zofZqUzEnmSYI,12291
|
|
90
|
+
ukrgen/lsc_model/builder.py,sha256=WeoSaNY1SuZKONrNySkXjPiO25b4JAUGRrowVj1UlQY,78363
|
|
91
|
+
ukrgen/lsc_model/ir.py,sha256=aUvhSxiv57B_fDa_13KnFMtEaIgWQhtFS_z2lXVwNBk,9586
|
|
92
|
+
ukrgen/lsc_model/state.py,sha256=fCpRcp8HxTVfsWOGFt0sp0I6VHFNOWKf-JHyXH_nW5A,6293
|
|
93
|
+
ukrgen/matching/__init__.py,sha256=9PVroCac9qIFrbWg7ICtHcPwF6_7LEyUiJPZD5aRq1A,57
|
|
94
|
+
ukrgen/matching/math.py,sha256=8vvAEalWhlwXjNUsE3_Xtostovpk-D8u_WRzmzo_368,36786
|
|
95
|
+
ukrgen/models/__init__.py,sha256=kv5rhvW4ho0cPePoRdFnbZMwHIldi3rrc9ANBx-5VBA,358
|
|
96
|
+
ukrgen/models/addr_resolver.md,sha256=maluuzaPCfsS1YN3HmM32_DffgQMqxHMAkCGHTpWfaI,1734
|
|
97
|
+
ukrgen/models/addr_resolver.py,sha256=9tZrDlWaoNe2NKvyWM-Amt3vVU8-Te22tq5x9nWR8jU,9454
|
|
98
|
+
ukrgen/models/load_store_operations.py,sha256=m6wI4zHae37R-tlYFwoBtguf7CNL_UixsBpqIkPIbJQ,21256
|
|
99
|
+
ukrgen/models/offset_mapper.py,sha256=frd3r9rv9ybsU3CAQ_AeJvwun022wVUNVGf76Y0tBZ8,6543
|
|
100
|
+
ukrgen/models/tile_offset_mapper.py,sha256=K0_ZAvkTOtEmeCwWRBzkgkSRdxRWZNHVC5iJm4-5uPc,1690
|
|
101
|
+
ukrgen/models/addr/reg_selectors.py,sha256=bsfeK90ywVbW2GgttFi8AN9MqfGQi1pEEe6bsyKtmIM,8990
|
|
102
|
+
ukrgen/models/lsc/index.py,sha256=_YQrsCecvY53AKQIDP3E8kApSF8piFbIc2j7wfq9npc,1938
|
|
103
|
+
ukrgen/models/lsc/offset.py,sha256=bWtxPSMgvqmNtK_2wnmUblui6ofcu48ZPKbEVmPVZhM,13156
|
|
104
|
+
ukrgen/models/lsc/reg.py,sha256=pSocP1e4r3YFnVwwhN5JF6NmbEZmfkn4w-SpjomywBU,1869
|
|
105
|
+
ukrgen/schedulers/__init__.py,sha256=ryUbeptn8lEm7vtZGcg7lXitINDpHwkKrHRKyrqQcdU,372
|
|
106
|
+
ukrgen/schedulers/dependency.py,sha256=5qGrBycO8n9RTWa7frtRBPM0lsVKRIDi4Rl-S-RNvhw,2049
|
|
107
|
+
ukrgen/schedulers/distance.py,sha256=CZ0pPgRKWDwDJ1CdVCm8Ta_a7lLbHr4elbXzRLwC_Rk,8277
|
|
108
|
+
ukrgen/schedulers/issue.py,sha256=BCgarfw7klGlyckSskn46AKKm6jQTHj_0DLbhRmgazg,5603
|
|
109
|
+
ukrgen/schedulers/list_scheduler.py,sha256=d7OEFOs7Rdx-4y6Rl7mRLmuBd5klFqqCh1HEM_SsPiE,25895
|
|
110
|
+
ukrgen/schedulers/reg_compare.py,sha256=q9SOA3J2uA94QlIZxF6ITAyUlqnXlYql0j5K2IBtPnA,1520
|
|
111
|
+
ukrgen/schedulers/simple_dependency_scheduler.py,sha256=QfobKJMfC4XdizyGu9wNiap8SSw0mZNTxa6sGJcxpxw,10949
|
|
112
|
+
ukrgen/specializers/__init__.py,sha256=DJphCo52IfF1WlxjAPfI6ArRrRxlTNF06NLscg6iG2Q,329
|
|
113
|
+
ukrgen/specializers/addresses.py,sha256=wOsHgegoJiYjcelodDoPAT8T7ptE4ybfTnc0c3mC2eM,22363
|
|
114
|
+
ukrgen/specializers/signature.py,sha256=9ecqwwcuO5Sin-Tu_99UtJBc9KGVNPzeztF1NHAmths,59091
|
|
115
|
+
ukrgen/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
|
+
ukrgen/support/data_move.py,sha256=c_YkiiDkk_MJTlH15k6TMze17yK3blF0wRTOIIi5q8M,21938
|
|
117
|
+
ukrgen/support/dm_solver.py,sha256=sg8XTqnefMHwCYF7Oejomyd0Ohc0qODraknw2KSrnkg,21509
|
|
118
|
+
ukrgen/support/domains.py,sha256=CWsQj-x7QzdqKmEQ_0luzoRMq1Ghl0cJFo6U36Ulw6M,637
|
|
119
|
+
ukrgen/support/encoding.py,sha256=6eBc4jIfAiJVoXF49bc5YrWtiHLUFgz7_8jrQESxd78,11107
|
|
120
|
+
ukrgen/support/op.py,sha256=giMv6oFlYAaWFun531HAh4l0zT_kLlJ_b8d6y8YNM-U,14233
|
|
121
|
+
ukrgen/support/sig_group.py,sha256=I_P8R4ytdfUEsxv8D10Hp10a5H_voGoauC089r_2KVg,6950
|
|
122
|
+
ukrgen/support/tiles.py,sha256=-GxmtaPQ81Xk0HqIKLPgsj29FE3SKRWKtBu9pjPX4Gk,10819
|
|
123
|
+
ukrgen/support/transpose.py,sha256=5dziOIicyFqC_Ng2GwID_jWc06DOLhW8-rJjmQjDG_k,4989
|
|
124
|
+
ukrgen/support/dm_resolutions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
|
+
ukrgen/support/dm_resolutions/direct.py,sha256=-6c-BwpLPej3KoJUqlzMkEQZzSHvMuFVvlqNzdg9bvk,6307
|
|
126
|
+
ukrgen/support/dm_resolutions/scalar_reduce.py,sha256=qUS193ERZJJS1_7cmVFbRYvlSkXiV0qvvhDEivSx77A,9399
|
|
127
|
+
ukrgen/support/dm_resolutions/strided.py,sha256=Q1OBI2g66oINsYlheocV5m6pq8J4lRm07K-yZu-IfDk,7772
|
|
128
|
+
jukefa_ukrgen-0.2.0.dist-info/METADATA,sha256=STtzhLfo6bOe5B6CJEceS8OtEeBgV5Hxoeh-vBO3buM,6237
|
|
129
|
+
jukefa_ukrgen-0.2.0.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
|
|
130
|
+
jukefa_ukrgen-0.2.0.dist-info/entry_points.txt,sha256=VzOxpFShCwysjzYcaN7pjpD9prdnGNE-HxLpzL2MHDc,94
|
|
131
|
+
jukefa_ukrgen-0.2.0.dist-info/licenses/LICENSE-GPL-3.0,sha256=HgFeraA0-kQtru2vFH_cXmKE_G9rXae-RgDX8Yn-EHY,35130
|
|
132
|
+
jukefa_ukrgen-0.2.0.dist-info/licenses/LICENSE-MIT,sha256=Rjy-wKdcrIJGx0P_cOba5XJjvG3onIAL4VX0rtA1rx4,1070
|
|
133
|
+
jukefa_ukrgen-0.2.0.dist-info/RECORD,,
|