<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hi PETSC users and developers,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am new to PETSC and I just want to have a communication with users and developers for a question I am concern. All I am concern is the performance of calculating Nabla_square in a parallel program with PETSC implemented.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>For example, say one have a 3 dimension function: f(x,y,z). We want nabla^2 f. i.e. (d^2/dx^2+ d^2/dy^2+ d^2/dz^2)f(x,y,z). (Make problem simpler assuming d^2/dxdy*f=0.)<o:p></o:p></p><p class=MsoNormal>But on a computer, what we can do is usually finite difference, Thus in order to calculate the nabla^2*f on point x, y, z, we need all its nearest neighbors.<o:p></o:p></p><p class=MsoNormal>That is to say, at leaste we need x+1, x-1, y+1, y-1, z+1 and z -1 (assuming 2<sup>nd</sup> order central).<o:p></o:p></p><p class=MsoNormal>In the RAM, all number are stored in a ONE dimensional array. So the number is stored like this: ……f(x-1, y-1,z-1), f(x, y-1,z-1), f(x+1, y-1,z-1),…… f(x-1, y,z-1), f(x, y,z-1), f(x+1, y,z-1),…… ,f(x-1, y+1,z-1), f(x, y+1,z-1), f(x+1, y+1,z-1),……<o:p></o:p></p><p class=MsoNormal>So in order to work it out, the first thing is to pick out the numbers needed for the calculation. So each time one need to load some numbers in to the RAM, and pick out 1 or 2 or 3 out and discard the rest of them…. Until all the numbers one need are prepared for the calculation.<o:p></o:p></p><p class=MsoNormal>It is clear that some there is a huge wasting here: the number that needed for the point cannot be loaded for immediately. Thus, the bottle neck is not the computing time but the loading time.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Q: So how does PETSc library handle such kind of problem? Could you please explain it to me, if you understand how does it happened?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ll appreciate any explanation. <o:p></o:p></p><p class=MsoNormal>Thanks.<o:p></o:p></p></div></body></html>