inducer / inducer/loopy

Allow vec tagging of odd sizes for local temporaries

Open
#779 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
636
Forks
81
Avg merge
1d 19h
Merged PRs (30d)
7

Description

For context, in a sumpy P2P kernel I have a temporary of size
```
local_isrc[5, 45]
```
which results in 5 memory loads/stores,
but it could be split into
```
local_isrc_s0[2, 45]
local_isrc_s1[2, 45]
local_isrc_s2[1, 45]
```
which results in only 3 memory loads/stores.

One way that I can achieve this is to do
```
lp.split_array_axes(knl, "local_isrc", 0, 2)
lp.tag_array_axes(knl, "local_isrc", "C,vec,C")
```
however this results in `6*45` elements being allocated in shared memory. (Sometimes the compiler optimizes this into `5, 45`, sometimes not).

I tried
```
lp.split_array_axes(knl, "local_isrc", 0, 2)
lp.tag_array_axes(knl, "local_isrc", "sep,vec,C")
```
which does not work.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.