-
Notifications
You must be signed in to change notification settings - Fork 1
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
Try using chunksize=(-1, 1, N, N)
with stackstac?
#2
Comments
Thanks for the feedback Gabe, I'll try the new version of stackstac and your suggested configuration at some point in the near future. By the way all the benchmarking tooling is documented here: https://odc-stac.readthedocs.io/en/latest/benchmarking.html And If you see some issues with the way benchmarking code interfaces with stackstac then let me know, PRs are welcome too. |
@gjoseph92 I have now tried the latest code with Native resolution readRun time improves from 165.9s to 124.5s, or in terms of throughput 18.1 -> 24.1 Mpix/sec. This is about 25% faster than the version I tested few months back.
Submit time is way faster, down from about 2 seconds to 0.13, which is consistent with the smaller Dask graph this approach should generate. There are probably some memory use improvements, but my tooling doesn't track that yet. 1/8 resolution readSo in this case (reading 1/8 overview with 2048 chunk size) it went down from 29.3 to 27.5. That's about 6% better, so I guess at lower scale data load costs are more dominant than mosaic building so improvements are less pronounced.
|
👋 Hey, just happened to stumble across this. I know you're not done with the final report yet, but just wanted to say a huge thank-you for doing this work—this is really valuable to have!
I'm not at all surprised to see that stackstac's performance was much worse for the "wide" case. That's come up before, and I'm realizing it's just a fundamental tradeoff that comes from representing the entire stack as a dense array. You get a lot of expressiveness from doing this immediately, and having the grouping/compositing/mosaicing steps happen in xarray syntax, but the downside is what you've shown here. With
odc-stac
, you're pushing the compositing operation into the data-loading phase, which allows you to be much smarter (as you discuss). There's talk about doing this in stackstac too: gjoseph92/stackstac#66.I'd be curious though what the results look like using the latest additions to stackstac (on main, but not yet released):
time
/band
dimensions gjoseph92/stackstac#116 (comment)Particularly, passing
chunksize=(-1, 1, N, N)
tostackstac.stack
will mean that all the items within one spatial tile will be loaded at once, instead each item-spatial tile combo being tracked as its own chunk, which leads to the current explosion of graph size you mentioned. Combined with slightly better mosaic logic, I'm hoping this will improve performance a bit. I'd still expectodc-stac
to be faster for the wide case, even with this, but just hoping stackstac will be less bad.The text was updated successfully, but these errors were encountered: