[petsc-dev] use of hash table vs array in various places in PETSc
Mark F. Adams
mark.adams at columbia.edu
Mon Sep 19 16:29:00 CDT 2011
An alternative to a virtual function is changing the hash table code:
#define HASH_FACT 79943
#define HASHT(ta,x) ((unsigned long)((HASH_FACT*(unsigned long)x)%ta->tablesize))
and make HASH_FACT a variable. Set HASH_FACT to 1 if you want an array (and thus the index (x) is less than the table size tablesize). The index x is one based so the hash function should modified:
#define HASHT(ta,x) ((unsigned long)((HASH_FACT*(unsigned long)(x-1))%ta->tablesize))
Mark
On Sep 19, 2011, at 4:20 PM, Jed Brown wrote:
> On Mon, Sep 19, 2011 at 22:13, Aron Ahmadia <aron.ahmadia at kaust.edu.sa> wrote:
> BG/P has in-order superscalar execution, you *will* stall on that cache miss because the compiler will not do you any favors in terms of separating the load of the data from its use.
>
> An indirect call without SMT has a hard stall if the vtable is not in cache too because nothing can be done until that address is loaded. Of course if you call through the same objects a bunch of times, the vtable will be hot, so no issues.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20110919/5dd563bf/attachment.html>
More information about the petsc-dev
mailing list