I was always wondering how difficult it would be to define a constant say, ZERO_DROP_TOLERANCE so that when the matrix is setup, MatAssemblyBegin()/End(), it automatically ignores the values below this threshold? I understand the for the matrices that might change in successive iterations, that might not be a good idea since the memory reallocation could be very slow, but for a lot of cases which a constant matrix, that could be simply helpful.
Best, Mohamad On Thu, Dec 1, 2011 at 5:00 PM, Barry Smith <bsmith at mcs.anl.gov> wrote: > > On Dec 1, 2011, at 6:44 PM, Xiangdong Liang wrote: > > > Hello everyone, > > > > I have a question about whether zeros will change the sparse pattern. > > Suppose I am generating two sparse matrices A and B. A is generated > > with exactly number of nonzeros, say 10 nnz per row. When I generate > > matrix B, I specify 12 nonzeros, but two of them are given zero values > > by MatSetValue. Will A and B have same sparsity patterns and > > performance ? In other words, will PETSc simply ignore these zeros > > entries? I output these A and B in matlab, and it seems that these > > zeros entries are ignored. I just want to double check on this. > > > > Is the option MAT_IGNORE_ZERO_ENTRIES on by default? > > No, by default PETSc will insert the zero values thus increasing the > nonzero pattern. If you set that option to the matrix then inserting values > it will not introduce an increase in the pattern. > > > BTW: if you then load the matrix via a binary file to MATLAB it may be > that MATLAB silently removes those locations so you don't see them. > Barry > > > Thanks. > > > > Best, > > Xiangdong > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20111201/6f1236f9/attachment-0001.htm>
