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

Support of parallel decompression for fixed rate #138

Open
doiko opened this issue Jul 15, 2021 · 7 comments
Open

Support of parallel decompression for fixed rate #138

doiko opened this issue Jul 15, 2021 · 7 comments

Comments

@doiko
Copy link

doiko commented Jul 15, 2021

Is there any plan to support parallel decompression for fixed rate compressed arrays?

@lindstro
Copy link
Member

Since zfp already supports parallel CUDA decompression, I assume you're referring to the OpenMP implementation of zfp_decompress (and not the compressed-array C++ classes).

We have plans to add support for both fixed and variable rate decompression over the coming months. It is likely that this feature will be available sometime early next year, even though our primary focus will be on CUDA and HIP.

@doiko
Copy link
Author

doiko commented Jul 16, 2021

Indeed @lindstro we are looking for decompressing in CPUs. Do you have any reference for expecting performance for parallel decompressing on multicore CPUs? Throughput vs Number of cores.

@doiko
Copy link
Author

doiko commented Jul 16, 2021

Also will the fixed rate parallel cpu is planned to be supported by the python zfpy package?

@lindstro
Copy link
Member

Without having implemented it, it's difficult to guess, but we do have performance results for OpenMP parallel compression. See page 11 of this presentation. You can probably extrapolate from the ratio between serial compression and decompression throughput.

@lindstro
Copy link
Member

Our immediate plans are to support parallel decompression through the high-level C API. This alone requires re-engineering zfp to keep track of block offsets (for the variable-rate modes). For decompression, such offsets also have to be embedded in the compressed stream, which is not easy to incorporate without breaking backwards compatibility.

To also support this via the zfpy interface, we'd have to make additional changes to the compressed format and the Python API. I think this is doable but it would require rethinking the API before we're ready to support parallel decompression. We'll get to it eventually, but probably not right away.

@doiko
Copy link
Author

doiko commented Jul 16, 2021

Hi @lindstro indeed decompression with variable rate sounds a complicate task but is probably simplified for fix rate compression and the python community will get a great tool when such is implemented. Already @zarr and @numcodecs supports zfp through zfpy but the decompressing speed performance might not be satisfactory for many applications I guess.
Thanks for the feedback and the great work.

@lindstro
Copy link
Member

We should be able to add OpenMP fixed-rate decompression without much effort and support it through zfpy. For a seamless integration of variable-rate decompression with zfpy, we really need to update the compressed format to allow additional metadata to be stored, which likely won't happen for at least another year. There are several other changes we'd like to make to the next version of the zfp codec that will take time to implement, and we want to make such major changes only infrequently.

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

No branches or pull requests

2 participants