Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supporting GDeflate in numcodecs #492

Open
akshaysubr opened this issue Dec 7, 2023 · 2 comments
Open

Supporting GDeflate in numcodecs #492

akshaysubr opened this issue Dec 7, 2023 · 2 comments

Comments

@akshaysubr
Copy link

Problem description

GDeflate is a new compression format that is designed to match zlib/gzip/deflate compression ratio but decompress very fast on the GPU (see some benchmarks here). This is currently a standard in Microsoft DirectCompute for gaming applications, but it would be very useful for zarr as well since the ideal use case for this would be compress once, decompress multiple times. Here is the GDeflate spec that is released: https://github.com/microsoft/DirectStorage/blob/main/GDeflate/GDeflate/README.md

The GPU codecs for GDeflate are currently being shipped through kvikIO. But this is only for GPU compression and decompression. This essentially means that compressing on the GPU would mean you need a GPU to decompress as well. We do have CPU routines for GDeflate as well and it would be good to wrap those and expose them through numcodecs too so there is a CPU fallback.

The main question is where should this CPU GDeflate codec go? It can also be packaged in kvikIO, but given that kvikIO is a GPU focused library, it might not be the most natural place for a CPU codec to go. Would it be acceptable to add that codec to numcodecs directly? Would appreciate some guidance on this.

@rabernat
Copy link
Contributor

rabernat commented Dec 7, 2023

I would love to include GDeflate directly in numcodecs. 🙌

@akshaysubr
Copy link
Author

@rabernat Thanks, I'll work on a PR for it then. Might have some questions about packaging which I'll post here if that's okay.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants