<div dir="ltr">Jed, do you mind posting a quick summary of what's going on here? I am guessing there have been some offline discussions/results regarding this conversation.<div><br></div><div>Barry, are you proposing an API similar to the VecScatter interface offers a series of various MPI implementation choices? I've found this to be really convenient for experimenting with performance gains, but it might be engineering overkill if there isn't an obvious data structure choice. I agree that the if test can be deferred to run time from a performance standpoint, but it feels to me that a specific hash table/trie/array/list is usually always the 'right' data structure, given the context of the role it's playing. </div>
<div><br></div><div>A<br><br><div class="gmail_quote">On Mon, Sep 19, 2011 at 8:38 AM, Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><div class="gmail_quote">On Mon, Sep 19, 2011 at 03:55, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>The problem is that this assumes that it can be a compile-time decision whether to use the hash table or not. This is not always true so I propose the following change: we make the decision hash table or array at run time (in PetscTableCreate()) and store the hash table/array in the same data structure and have PetscTableFind() and PetscTableAdd() be in-line functions sort of like<br>
</div></blockquote></div><br></div><div>Did Jungho's subsequent runs confirm that this 50% business is really hash table overhead? Is this a "good" hash table implementation in the sense of being competitive with others for the sort of use cases we care about? Can we check if there are a lot of hash collisions?</div>
</blockquote></div><br></div></div>