Return a chunk dimension that is close to an even multiple or factor We want values for c that are nicely aligned with s. If c is smaller than s we use the original chunk size and accept an uneven chunk at the end. If c is larger than s then we want the largest multiple of s that
(c, s)
| 3451 | |
| 3452 | |
| 3453 | def round_to(c, s): |
| 3454 | """Return a chunk dimension that is close to an even multiple or factor |
| 3455 | |
| 3456 | We want values for c that are nicely aligned with s. |
| 3457 | |
| 3458 | If c is smaller than s we use the original chunk size and accept an |
| 3459 | uneven chunk at the end. |
| 3460 | |
| 3461 | If c is larger than s then we want the largest multiple of s that is still |
| 3462 | smaller than c. |
| 3463 | """ |
| 3464 | if c <= s: |
| 3465 | return max(1, int(c)) |
| 3466 | else: |
| 3467 | return c // s * s |
| 3468 | |
| 3469 | |
| 3470 | def _get_chunk_shape(a): |