<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hallo Metthew,<br>
<br>
you were albe to reconstruct this problem on your petsc
installation?<br>
<br>
Best<br>
<br>
Klaus<br>
<br>
On 03/30/2015 01:43 PM, Matthew Knepley wrote:<br>
</div>
<blockquote
cite="mid:CAMYG4Gm68poAGxHNNQRjFR509YP5hDn+xf2yNKgL0rV3J1xt6w@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Mon, Mar 30, 2015 at 5:18 AM,
Klaus Kaiser <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:kaiser@igpm.rwth-aachen.de" target="_blank">kaiser@igpm.rwth-aachen.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hallo Metthew,<br>
<br>
at the weekend I updated petsc to the newest release
version 3.5.2 and I still got this strange behavior.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Okay, I will check it out. The first thing I am going
to do is try with AIJ matrices instead of BAIJ, which</div>
<div>you can probably do before me. If you get the right
result, then its a bug in the BAIJ implementation,</div>
<div>which I am confident has not been tested as thoroughly.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div> Best<span class="HOEnZb"><font color="#888888"><br>
<br>
Klaus</font></span>
<div>
<div class="h5"><br>
<br>
On 03/27/2015 05:07 PM, Klaus Kaiser wrote:<br>
</div>
</div>
</div>
<div>
<div class="h5">
<blockquote type="cite">
<div>Hallo Matthew,<br>
<br>
here is a short example I used for 8 cores:<br>
<br>
int d_nnz[3];<br>
int o_nnz[3];<br>
d_nnz[0] = 3; d_nnz[1] = 3; d_nnz[2] = 3;<br>
o_nnz[0] = 6; o_nnz[1] = 6; o_nnz[2] = 6;<br>
ierr = MatCreateBAIJ(PETSC_COMM_WORLD, 3, 9,
9, 72, 72, 0, d_nnz, 0, o_nnz,&A);<br>
ierr =
MatSetOption(A,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE);<br>
ierr =
MatSetOption(A,MAT_KEEP_NONZERO_PATTERN,PETSC_TRUE);<br>
ierr =
MatSetOption(A,MAT_IGNORE_OFF_PROC_ENTRIES,PETSC_TRUE);<br>
ierr = MatCreateBAIJ(PETSC_COMM_WORLD, 3, 9,
9, 72, 72, 0, d_nnz, 0, o_nnz,&Ah);<br>
ierr = MatCreateBAIJ(PETSC_COMM_WORLD, 3, 9,
9, 72, 72, 0, d_nnz, 0, o_nnz,&At);<br>
<br>
std::vector<double> insert(3*3*3*3,
1.0);<br>
for(int i=0;i<8;++i)<br>
{<br>
int rows[3] = {i,i+1,i+3};<br>
int cols[3] = {i,i+1,i+3};<br>
<br>
MatSetValuesBlocked(A, 3, rows, 3, cols,
&insert[0], ADD_VALUES);<br>
}<br>
<br>
MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);<br>
MatDuplicate(A,MAT_COPY_VALUES,&Ah);<br>
MatDuplicate(A,MAT_COPY_VALUES,&At);<br>
MatAssemblyBegin(Ah,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyEnd(Ah,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyBegin(At,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyEnd(At,MAT_FINAL_ASSEMBLY);<br>
<br>
MatAXPY(Ah,1.,At,SAME_NONZERO_PATTERN);<br>
MatAXPY(A,1.,Ah,SAME_NONZERO_PATTERN);<br>
<br>
MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);<br>
<br>
The result is, that only some values are
computed correctly.<br>
<br>
Best and Thank you a lot<br>
<br>
Klaus<br>
<br>
<br>
<br>
On 03/27/2015 04:26 PM, Matthew Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Fri, Mar 27,
2015 at 10:16 AM, Klaus Kaiser <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:kaiser@igpm.rwth-aachen.de" target="_blank">kaiser@igpm.rwth-aachen.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hallo Matthew,<br>
<br>
thanks for your fast response. With
"no beside the nonzero structure" I
meant, that I do not create a
different non-zero structure while
I'm adding values to my matrices.<br>
<br>
I also tried MAT_COPY_VALUES and the
result was the same.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Please send the small example and we
will figure out what is going wrong.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote"
style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div> I do not get a error message but
the resulting matrix is wrong. Here
I have a short example. The first 9
rows and first 3 colomn of the
matrices Ah, At and Ah+At on the
first processor (of 8):<br>
<br>
Ah: <br>
0:
60.3553
-0.249975 2.77556e-17<br>
1:
0
60.3553 0<br>
2:
0
0 60.3553<br>
3:
17.6777
0.374962 0.124987<br>
4:
0
17.6777 0<br>
5:
0
0 17.6777<br>
6:
-7.32233
-0.124987 0.374962<br>
7:
0
-7.32233 0<br>
8:
0
0 -7.32233<br>
<br>
<br>
At:<br>
0:
0
0 0<br>
1:
2500
0 0<br>
2:
-4.54747e-13
0 0<br>
3:
0
0 0<br>
4:
1250
0 0<br>
5:
1250
0 0<br>
6:
0
0 0<br>
7:
1250
0 0<br>
8:
3750
0 0<br>
<br>
Ah+At<br>
0:
60.3553
-0.249975 2.77556e-17<br>
1:
2500
60.3553 0<br>
2:
-4.54747e-13
0 60.3553<br>
3:
17.6777
0.374962 0.124987<br>
4:
0
17.6777 0<br>
5:
0
0 17.6777<br>
6:
-7.32233
-0.124987 0.374962<br>
7:
0
-7.32233 0<br>
8:
0
0 -7.32233<br>
<br>
you can see the first 3 rows of the
resulting matrix looks exactly like
what I would expect, but the last 6
rows only consists of the values of
Ah. When you would also look on the
matrix A and A+Ah+At you would also
see, that values where both matrices
have an nonzero entry are not sum
correctly.<br>
<br>
Best<br>
<br>
Klaus<br>
<br>
On 03/27/2015 03:59 PM, Matthew
Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Fri,
Mar 27, 2015 at 9:48 AM, Klaus
Kaiser <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:kaiser@igpm.rwth-aachen.de"
target="_blank">kaiser@igpm.rwth-aachen.de</a>></span>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">Hallo,<br>
<br>
I have a strange behavior in
my code concerning the
function MatAXPY. I create 3
different Matrices<br>
<br>
ierr =
MatCreateBAIJ(PETSC_COMM_WORLD,
block_size, local_size,
local_size, system_size,
system_size, 0, d_nnz, 0,
o_nnz,&A);<br>
ierr =
MatSetOption(A,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE);<br>
ierr =
MatSetOption(A,MAT_KEEP_NONZERO_PATTERN,PETSC_TRUE);<br>
ierr =
MatSetOption(A,MAT_IGNORE_OFF_PROC_ENTRIES,PETSC_TRUE);<br>
<br>
ierr =
MatCreateBAIJ(PETSC_COMM_WORLD,
block_size, local_size,
local_size, system_size,
system_size, 0, d_nnz, 0,
o_nnz,&At);<br>
ierr =
MatSetOption(At,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE);<br>
ierr =
MatSetOption(At,MAT_KEEP_NONZERO_PATTERN,PETSC_TRUE);<br>
ierr =
MatSetOption(At,MAT_IGNORE_OFF_PROC_ENTRIES,PETSC_TRUE);<br>
<br>
ierr =
MatCreateBAIJ(PETSC_COMM_WORLD,
block_size, local_size,
local_size, system_size,
system_size, 0, d_nnz, 0,
o_nnz,&Ah);<br>
ierr =
MatSetOption(Ah,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE);<br>
ierr =
MatSetOption(Ah,MAT_KEEP_NONZERO_PATTERN,PETSC_TRUE);<br>
ierr =
MatSetOption(Ah,MAT_IGNORE_OFF_PROC_ENTRIES,PETSC_TRUE);<br>
</blockquote>
<div><br>
</div>
<div>These creations are
superfluous since you use
MatDuplicate() below.</div>
<div> </div>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex"> and
want to sum these three
matrixes with different
factors. First I fill the
Matrix A with some values,
and duplicate the structure
of A to the other two
matrices:<br>
<br>
MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);<br>
MatDuplicate(A,MAT_DO_NOT_COPY_VALUES,&Ah);<br>
MatDuplicate(A,MAT_DO_NOT_COPY_VALUES,&At);<br>
MatAssemblyBegin(Ah,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyEnd(Ah,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyBegin(At,MAT_FINAL_ASSEMBLY);<br>
MatAssemblyEnd(At,MAT_FINAL_ASSEMBLY);<br>
</blockquote>
<div> <br>
</div>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
After this I fill the
matrices At and Ah with some
other values, which are not
beside the non zero
structure (I also tried with
just copying the Matrix A).
Now after another
MatAssembly</blockquote>
<div><br>
</div>
<div>I do not understand "no
beside the nonzero
structure". Do you mean that
the nonzero structure is the
same?</div>
<div><br>
</div>
<div>Can you first test with
MAT_COPY_VALUES?</div>
<div> </div>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex"> I
want to add these Matrices
in the form A+c*(Ah+d*At): </blockquote>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex"> <br>
MatAXPY(Ah,c,At,SAME_NONZERO_PATTERN);<br>
MatAXPY(A,d,Ah,SAME_NONZERO_PATTERN);<br>
<br>
When I run the method with
mpi and one core everything
works fine. Starting the
same method with more cores,
the sum of the matrices
fails. It seems like some
values are added</blockquote>
<div><br>
</div>
<div>Please send the full
output of a failure when you
use MAT_COPY_VALUES on 2
procs.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
correctly and many values
are missed. Using
DIFFERENT_NONZERO_STRUCTURE
leads to the right behavior
in the multi-core case, but
is very slow. I checked with
a viewer if all matrices
have the same nonzero
structure and this is the
case.<br>
<br>
Does anyone know why this
fails, or do I have made any
wrong thoughts?<br>
<br>
I'm corrently working with a
petsc version (Petsc Release
Version 3.3.0, Patch 5, Sat
Dec 1 15:10:41 CST 2012), I
looked into the changelogs
up to the current version
and did not find any note
about MatAXPY or MatAYPX.<br>
<br>
<br>
Best and Thanks a lot for
your help<span><font
color="#888888"><br>
<br>
Klaus<br>
<br>
</font></span></blockquote>
</div>
<br>
<br clear="all">
<span><font color="#888888">
<div><br>
</div>
-- <br>
<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>
</font></span></div>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<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>
</div>
</blockquote>
<br>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="gmail_signature">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>
</div>
</blockquote>
<br>
</body>
</html>