<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>RE: Slow MatSetValues</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>

<P><FONT SIZE=2>Hi,<BR>
<BR>
I just want to share my experience with FE assembly.<BR>
I think the problem of preallocation in finite element matrices is that you don't know how many elements are connected to a given node, there can be 5, 20 elements or more. You can build a structure with the number of nodes connected to a node and then preallocate the matrix but this is not very efficient.<BR>
<BR>
I know UMFPACK has a method of forming triplets with the matrix information and then it has routines to add duplicate entries and compress the data in a compressed matrix format. Although I have never used UMFPACK with PETSC. I also don't know if there are similiar functions in PETSC optimized for FE matrix assembly.<BR>
<BR>
Regards,<BR>
<BR>
Billy.<BR>
<BR>
<BR>
<BR>
-----Mensagem original-----<BR>
De: owner-petsc-users@mcs.anl.gov em nome de Barry Smith<BR>
Enviada: qua 28-05-2008 16:03<BR>
Para: petsc-users@mcs.anl.gov<BR>
Assunto: Re: Slow MatSetValues<BR>
<BR>
<BR>
<A HREF="http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manual.pdf#sec_matsparse">http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manual.pdf#sec_matsparse</A><BR>
<A HREF="http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/Mat/MatCreateMPIAIJ.html">http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/Mat/MatCreateMPIAIJ.html</A><BR>
<BR>
Also, slightl less important,&nbsp; collapse the 4 MatSetValues() below&nbsp;<BR>
into a single call that does the little two by two block<BR>
<BR>
&nbsp;&nbsp;&nbsp; Barry<BR>
<BR>
On May 28, 2008, at 9:07 AM, Lars Rindorf wrote:<BR>
<BR>
&gt; Hi everybody<BR>
&gt;<BR>
&gt; I have a problem with MatSetValues, since the building of my matrix&nbsp;<BR>
&gt; takes much longer (35 s) than its solution (0.2 s). When the number&nbsp;<BR>
&gt; of degrees of freedom is increased, then the problem worsens. The&nbsp;<BR>
&gt; rate of which the elements of the (sparse) matrix is set also seems&nbsp;<BR>
&gt; to decrease with the number of elements already set. That is, it&nbsp;<BR>
&gt; becomes slower near the end.<BR>
&gt;<BR>
&gt; The structure of my program is something like:<BR>
&gt;<BR>
&gt; for element in finite elements<BR>
&gt;&nbsp;&nbsp;&nbsp;&nbsp; for dof in element<BR>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for equations in FEM formulation<BR>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ierr = MatSetValues(M-&gt;M,1,&amp;i,1,&amp;j,&amp;tmp,ADD_Values);<BR>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ierr = MatSetValues(M-&gt;M,1,&amp;k,1,&amp;l,&amp;tmp,ADD_Values);<BR>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ierr = MatSetValues(M-&gt;M,1,&amp;i,1,&amp;l,&amp;tmp,ADD_Values);<BR>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ierr = MatSetValues(M-&gt;M,1,&amp;k,1,&amp;j,&amp;tmp,ADD_Values);<BR>
&gt;<BR>
&gt;<BR>
&gt; where i,j,k,l are appropriate integers and tmp is a double value to&nbsp;<BR>
&gt; be added.<BR>
&gt;<BR>
&gt; The code has fine worked with previous version of petsc (not&nbsp;<BR>
&gt; compiled by me). The version of petsc that I use is slightly newer&nbsp;<BR>
&gt; (I think), 2.3.3 vs ~2.3.<BR>
&gt;<BR>
&gt; Is it something of an dynamic allocation problem? I have tried using&nbsp;<BR>
&gt; MatSetValuesBlock, but this is only slightly faster. If I monitor&nbsp;<BR>
&gt; the program's CPU and memory consumption then the CPU is 100 % used&nbsp;<BR>
&gt; and the memory consumption is only 20-30 mb.<BR>
&gt;<BR>
&gt; My computer is a red hat linux with a xeon quad core processor. I&nbsp;<BR>
&gt; use Intel's MKL blas and lapack.<BR>
&gt;<BR>
&gt; What should I do to speed up the petsc?<BR>
&gt;<BR>
&gt; Kind regards<BR>
&gt; Lars<BR>
&gt; _____________________________<BR>
&gt;<BR>
&gt;<BR>
&gt; Lars Rindorf<BR>
&gt; M.Sc., Ph.D.<BR>
&gt;<BR>
&gt; <A HREF="http://www.dti.dk">http://www.dti.dk</A><BR>
&gt;<BR>
&gt; Danish Technological Institute<BR>
&gt; Gregersensvej<BR>
&gt;<BR>
&gt; 2630 Taastrup<BR>
&gt;<BR>
&gt; Denmark<BR>
&gt; Phone +45 72 20 20 00<BR>
&gt;<BR>
&gt;<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>