(warp: AxisRange)
| 293 | |
| 294 | |
| 295 | def _factor_warpid(warp: AxisRange) -> tuple[AxisRange, AxisRange] | None: |
| 296 | if warp.stride != 1: |
| 297 | return None |
| 298 | off = warp.offset |
| 299 | ext = warp.extent |
| 300 | wid_off = off % WG_SIZE |
| 301 | wgid_off = off // WG_SIZE |
| 302 | |
| 303 | if wid_off == 0 and ext % WG_SIZE == 0: |
| 304 | return ( |
| 305 | AxisRange(extent=WG_SIZE, offset=0), |
| 306 | AxisRange(extent=ext // WG_SIZE, offset=wgid_off), |
| 307 | ) |
| 308 | if ext <= WG_SIZE - wid_off: |
| 309 | return (AxisRange(extent=ext, offset=wid_off), AxisRange(extent=1, offset=wgid_off)) |
| 310 | return None |
| 311 | |
| 312 | |
| 313 | def _flat_product_range( |
no test coverage detected
searching dependent graphs…