<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Mar 13, 2017 at 11:21 AM, Satish Balay <span dir="ltr"><<a href="mailto:balay@mcs.anl.gov" target="_blank">balay@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"><span>On Sun, 12 Mar 2017, Karl Rupp wrote:<br>
<br>
><br>
> > > If, however, the long-term goal is to get rid of global state, then we<br>
> > > would have to store a matching deallocation routine with the raw buffer.<br>
> > > Actually, you could store the function pointers to malloc/realloc/free in<br>
> > > the first bytes of the allocated buffer instead of an index.<br>
> ><br>
> >     That was my original thought but this is more likely to cause a random<br>
> >     crash if that space is corrupted; by using integers one can detect the<br>
> >     corruption before the crash occurs (in 99.9+ % of the cases of<br>
> >     corruption)<br>
><br>
> that's a valid point, yes.<br>
<br>
</span>How about:<br>
<br>
stash the metadata for each allocation (and pointers for corresponding<br>
free) in a hash table for all mallocs that we need to track? [this<br>
avoids the wasted 'space' in each alloc.]<br></blockquote><div><br></div><div>I had considered proposing the same thing, but I wasn't sure about doing this for all of the allocations (I have no idea right now, what, if any, performance implications there might be most PETSc codes).  However, I believe that previously in this thread, Barry floated the idea of having something like PetscMallocNumeric() that we use for allocating the arrays that hold vectors, matrices, etc., since these tend to be the large and memory bandwidth-sensitive things.  Maybe use a hash table approach for those to facilitate different types of allocators, but we have some default, normal malloc() for other things?<br><br></div><div>--Richard<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Assuming valgrind works with special memory types - rely in it instead<br>
of the extra integer padding?<br>
<span class="m_-2798946193246419133HOEnZb"><font color="#888888"><br>
Satish<br>
<br>
<br>
</font></span></blockquote></div><br></div></div>