<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 11 Mar 2021 at 09:27, Mathieu Dutour <<a href="mailto:mathieu.dutour@gmail.com">mathieu.dutour@gmail.com</a>> wrote:<br></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">Dear all,<div><br></div><div>I would like to work with a special kind of linear system that ought to be</div><div>very common but I am not sure that it is possible in PETSC.</div><div><br></div><div>What we have is an unstructured grid with say 3.10^5 nodes in it.</div><div>At each node, we have a number of frequency/direction and together</div><div>this makes about 1000 values at the node. So, in total the linear system</div><div>has say 3.10^8 values.</div><div><br></div><div>We managed to implement this system with Petsc but the performance</div><div>was unsatisfactory. </div></div></blockquote><div><br></div><div>I think part of the reason the answers you are getting aren't helpful to you is</div><div>that you have not identified "what" exactly you find to be unsatisfactory. <br></div><div>Nor is it obvious what you consider to be satisfactory.</div><div><br></div><div>For example, does "unsatisfactory" relate to any of these items?<br></div><div>* memory usage of the matrix</div><div><div>* time taken to assemble the matrix</div><div>* time taken to perform MatMult()<br></div></div><div>* solve time</div><div><br></div><div>If it does, providing the output from -log_view (from an optimized build of petsc) would be helpful, <br></div><div>and moreover it would provide developers with a baseline result with which they could compare to</div><div>should any implementation changes be made.<br></div><div><br></div><div>Having established what functionality is causing you concern, it would then be help for you to explain</div><div>why you think it should be better, e.g. based on a performance model, prior experience with <br></div><div>other software, etc.<br></div><div><br></div><div>More information would help.</div><div><br></div><div>Thanks,</div><div>Dave<br></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"><div>We think that Petsc is not exploiting the special</div><div>structure of the matrix and we wonder if this structure can be implemented</div><div>in Petsc.</div><div><br></div><div>By special structure we mean the following. An entry in the linear system</div><div>is of the form (i, j) with 1<=i<=1000 and 1<=j<=N   with N = 3.10^5.</div><div>The node (i , j) is adjacent to all the nodes (i' , j) and thus they make a block</div><div>diagonal entry. But the node (i , j) is also adjacent to some nodes (i , j')</div><div>[About 6 such nodes, but it varies].</div><div><br></div><div>Would there be a way to exploit this special structure in Petsc? I think</div><div>this should be fairly common and significant speedup could be obtained.</div><div><br></div><div>Best,</div><div><br></div><div>  Mathieu</div></div>
</blockquote></div></div>