<div dir="ltr"><div dir="ltr">On Mon, Apr 15, 2019 at 12:48 PM Sajid Ali <<a href="mailto:sajidsyed2021@u.northwestern.edu">sajidsyed2021@u.northwestern.edu</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div>
<div>Hi Barry & Matt, <br><br></div>I'd be happy to contribute a patch once I understand what's going on. <br><br>@Matt,
 Where is the padding occurring? In the VecCreateFFTW I see that each 
process looks up the dimension of array it's supposed to hold and asks 
for memory to hold that via fftw_malloc (which as you say is just a 
wrapper to simd-aligned malloc). Is the crash occurring because the first vector was created via fftw_malloc and duplicated via PETScMalloc and they happen to have different alignment sizes (FFTW was compiled with simd=avx2 since I'm using a Broadwell-Xeon and PETScMalloc aligns to 
PETSC_MEMALIGN

?)<br></div></blockquote><div><br></div><div>No. What is happening is that PetscMalloc() overallocates, writes a little header on the the block of memory, and returns a pointer which is insider</div><div>the block after the header. However, this pointer was passed to fftw_free() which just calls free() in it. free() says it never heard of this pointer because its inside the block that was actually allocated (this is what valgrind is telling us).</div><div><br></div><div>The change that is needed is just to replace all fftw_malloc() by PetscMalloc1(). You have to be a little careful about</div><div>types to make sure we get the right sizes, but its not bad. I would do it if this were not the end of the semester.</div><div><br></div><div>  Thanks,</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">PS: I've only ever used FFTW via
 the python interface (and automated the build & 
but couldn't automate testing of pyfftw-mpi since cython coverage reporting is confusing).  <br><div><div><br></div><div>Thank You,<br></div><div><div dir="ltr" class="gmail-m_2067587433807311286gmail_signature"><div dir="ltr"><div style="font-size:12.8px">Sajid Ali<br></div><div style="font-size:12.8px">Applied Physics<br></div><div style="font-size:12.8px">Northwestern University</div></div></div></div></div>

</div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>