Repository navigation
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
janickm
added this pull request to stack #201
October 14, 2026 07:28
Collaborator
Author
|
/ok to test 34e1743 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 14, 2026 07:45
34e1743 to
023cc64
Compare
Collaborator
Author
|
/ok to test 023cc64 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 14, 2026 10:02
023cc64 to
b38bb88
Compare
Collaborator
Author
|
/ok to test b38bb88 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 14, 2026 10:09
b38bb88 to
f052a83
Compare
Collaborator
Author
|
/ok to test f052a83 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 14, 2026 11:58
f052a83 to
2d3c0ed
Compare
Collaborator
Author
|
/ok to test 2d3c0ed |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 14, 2026 14:16
2d3c0ed to
ee42290
Compare
Collaborator
Author
|
/ok to test ee42290 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 14, 2026 14:43
ee42290 to
1f00b76
Compare
Collaborator
Author
|
/ok to test 1f00b76 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 14, 2026 15:32
1f00b76 to
2008352
Compare
Collaborator
Author
|
/ok to test 2008352 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 15, 2026 07:55
2008352 to
4a70f2e
Compare
Collaborator
Author
|
/ok to test 4a70f2e |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 15, 2026 10:20
4a70f2e to
daab804
Compare
Collaborator
Author
|
/ok to test c17b77c |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 19, 2026 11:52
c17b77c to
b10bd34
Compare
Collaborator
Author
|
/ok to test b10bd34 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 19, 2026 11:58
b10bd34 to
e63f3c8
Compare
Collaborator
Author
|
/ok to test e63f3c8 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 19, 2026 13:56
e63f3c8 to
d817878
Compare
Collaborator
Author
|
/ok to test d817878 |
janickm
commented
Oct 20, 2026
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 20, 2026 09:27
d817878 to
56bc675
Compare
Collaborator
Author
|
/ok to test 56bc675 |
janickm
commented
Oct 20, 2026
janickm
commented
Oct 20, 2026
janickm
commented
Oct 20, 2026
janickm
commented
Oct 20, 2026
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 20, 2026 10:19
56bc675 to
3574994
Compare
Collaborator
Author
|
/ok to test 3574994 |
janickm
marked this pull request as ready for review
October 20, 2026 11:42
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 21, 2026 08:37
3574994 to
1277ca0
Compare
Collaborator
Author
|
/ok to test 1277ca0 |
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 21, 2026 08:53
1277ca0 to
7d0965e
Compare
Collaborator
Author
|
/ok to test 7d0965e |
zarr-python 3's codec pipeline decodes each chunk into a temporary buffer and copies it into the output array (zarr-python#2904), and its per-read overhead dominates reads of small frame arrays (~550 us per frame read vs ~200 us with zarr-python 2). Basic selections (integers, unit-step slices, Ellipsis) of arrays of stores opened for reading are now read directly: zarr-python's indexer determines the chunks of a read, which are read from the store and blosc-decompressed into the output array (in place for complete chunks that are contiguous blocks of the output array). Records of indexed tar archives are read directly from the archive (positional reads), records of other zarr-python stores (e.g., directories) via the store. - Uncompressed single-chunk arrays (e.g., encoded images) are read-only views of their chunk record (no decoding, no copies) - Large chunks of a read (>= 2 MiB) are decoded concurrently on a thread pool (at most 8 threads), bounded to two concurrent reads per process - Supported are all arrays written by ncore: regular chunk grids, C order, numeric / boolean data of native byte order and fixed-length bytes, uncompressed or blosc compressed, without filters. All other arrays (e.g., other codecs, written by other zarr writers) and selections are read via zarr-python Read plans are derived per read (sub-microsecond, nothing is cached), results are read-only (as all read results), missing chunks read as the fill value, and the parallel reads state is re-created in forked processes. NCORE_ZARR3_DIRECT_READS=0 reads all arrays via zarr-python. Frame reads of the test sequence take ~240 us instead of ~550 us. Multi-chunk arrays (e.g., point clouds chunked along points) read 1.4x to 3.7x faster, and up to ~17x for multiple large chunks (concurrent, in-place decompression).
janickm
force-pushed
the
stack/zarr3/06-direct-reads
branch
from
October 21, 2026 09:11
7d0965e to
52d7e8e
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
zarr-python 3's codec pipeline decodes each chunk into a temporary buffer and copies it into the output array (zarr-python#2904), and its per-read overhead dominates reads of small frame arrays (~550 us per frame read vs ~200 us with zarr-python 2).
Basic selections (integers, unit-step slices, Ellipsis) of arrays of indexed tar archives opened for reading are now read directly: chunks are determined by zarr-python's indexer, read from the archive and blosc-decompressed into the output array (in place for complete chunks). Uncompressed single-chunk arrays (e.g., encoded images) are read-only views of their chunk record (no decoding, no copies). Large chunks of a read (>= 2 MiB) are decoded concurrently on a thread pool, bounded to two concurrent reads per process. Supported are regular chunk grids, C order, numeric / boolean data of native byte order and fixed-length bytes, without filters, uncompressed or blosc compressed (all arrays written by ncore), all other arrays and selections are read via zarr-python.
Read plans are derived per read (sub-microsecond, nothing is cached), results are read-only (as all read results), missing chunks read as the fill value, and the parallel reads state is re-created in forked processes.
NCORE_ZARR3_DIRECT_READS=0 reads all arrays via zarr-python.
Frame reads of the test sequence take ~240 us instead of ~550 us.