18966, "lydia-duncan", "[Patterns] What should distributing a heap mean?", "2022-01-11T23:17:49Z"
This issue is part of a series of issues to design the interface for collections across serial, parallel, and distributed contexts. Our goal is to determine what we think is reasonable to support and what doesn't seem useful. Additional patterns welcome (but it would be best to put them in their own issue for discussion, likely)
What does a distributed heap mean? Is the whole thing the heap, meaning that for any given pop
call the result could involve a remote read? Is it run on a per-locale basis, so pop
would give the maximum/minimum for that locale but not necessarily for the heap as a whole? Is the "top" X of the heap replicated across locales so the answer is the same from any locale but the user is assumed to not call pop
in parallel, to give the data structure time to synchronize the top again? Should push
calls be batched until a good locale guess for them can be determined? Should the user be able to specify what kind of distributed heap they want to suit their use case?