<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Dear Hong,<br>
    <br>
    You can get matrices here:<br>
    <a class="moz-txt-link-freetext" href="http://dl.dropbox.com/u/60982984/A.dat">http://dl.dropbox.com/u/60982984/A.dat</a><br>
    <a class="moz-txt-link-freetext" href="http://dl.dropbox.com/u/60982984/B.dat">http://dl.dropbox.com/u/60982984/B.dat</a><br>
    <br>
    I wrote simple testing application for that problem (it looks ugly,
    but allows to reproduce the problem):<br>
    <br>
      Mat            A,AT,B,C; <br>
      PetscInt       M,N;<br>
    <br>
      PetscInitialize(&argc,&args,(char *)0,help);<br>
    <br>
      ierr =
PetscViewerBinaryOpen(PETSC_COMM_WORLD,"A.dat",FILE_MODE_READ,&viewer);CHKERRQ(ierr);<br>
      ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr);<br>
      ierr = MatSetType(A,MATMPIAIJ);CHKERRQ(ierr);<br>
      ierr = MatLoad(A,viewer);CHKERRQ(ierr);<br>
      ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);<br>
    <br>
      ierr =
PetscViewerBinaryOpen(PETSC_COMM_WORLD,"B.dat",FILE_MODE_READ,&viewer);CHKERRQ(ierr);<br>
      ierr = MatCreate(PETSC_COMM_WORLD,&B);CHKERRQ(ierr);<br>
      ierr = MatSetType(B,MATMPIDENSE);CHKERRQ(ierr);<br>
      ierr = MatLoad(B,viewer);CHKERRQ(ierr);<br>
      ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);<br>
    <br>
      MatGetSize(A,&M,&N);<br>
      MatCreateMPIAIJ(PETSC_COMM_WORLD, PETSC_DECIDE, PETSC_DECIDE, N,
    M, 12, PETSC_NULL, 12, PETSC_NULL, &AT);<br>
    <br>
      MatTranspose(A,MAT_IGNORE_MATRIX,&AT);<br>
      MatMatMult(AT,B,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&C);<br>
    <br>
      ierr =
PetscViewerBinaryOpen(PETSC_COMM_WORLD,"C.dat",FILE_MODE_WRITE,&viewer);CHKERRQ(ierr);<br>
      ierr =
    PetscViewerSetFormat(viewer,PETSC_VIEWER_NATIVE);CHKERRQ(ierr);<br>
      ierr = MatView(C,viewer);CHKERRQ(ierr);<br>
      ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);<br>
    <br>
      ierr = PetscFinalize();<br>
      return 0;<br>
    <br>
    To compare results I use following Matlab script:<br>
    <br>
    A = PetscBinaryRead('A.dat','complex',true);<br>
    B = PetscBinaryRead('B.dat','complex',true);<br>
    Cm = A.'*B;<br>
    C = PetscBinaryRead('C.dat','complex',true);<br>
    <br>
    Matrix C is different depending on number of cores I use. <br>
    My PETSc is:<br>
    Using Petsc Development HG revision:
    876c894d95f4fa6561d0a91310ca914592527960  HG Date: Tue Jan 10
    19:27:14 2012 +0100<br>
    <br>
    On 06.02.2012 17:13, Hong Zhang wrote:
    <blockquote
cite="mid:CAGCphBtPd87wCqeWLedRngtn=WiPWbB9N7wucDDQTjBV6JhQow@mail.gmail.com"
      type="cite">MatMatMult() in petsc is not well-tested for complex -
      could be buggy.
      <div>Can you send us the matrices A and B in petsc binary format
        for investigation?</div>
      <div><br>
      </div>
      <div>Hong<br>
        <br>
        <div class="gmail_quote">On Mon, Feb 6, 2012 at 5:55 AM,
          Alexander Grayver <span dir="ltr"><<a
              moz-do-not-send="true"
              href="mailto:agrayver@gfz-potsdam.de">agrayver@gfz-potsdam.de</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
            0.8ex; border-left: 1px solid rgb(204, 204, 204);
            padding-left: 1ex;">Dear PETSc team,<br>
            <br>
            I try to use:<br>
            call MatMatMult(A,B,MAT_INITIAL_MATRIX,PETSC_DEFAULT_DOUBLE_PRECISION,C,ierr);CHKERRQ(ierr)<br>
            <br>
            Where both A and B are rectangular, but A is sparse and B is
            dense. Both are double complex and distributed.<br>
            The product PETSc gives me contains some errors in some part
            of the matrix.<br>
            I output A, B and C then computed product in matlab.<br>
            <br>
            Attached you see figure plotted as:<br>
            imagesc(log10(abs(C-Cm)))<br>
            <br>
            Where Cm -- product computed in matlab.<br>
            <br>
            The pattern and amplitude vary depending on the number of
            cores I use. This picture is obtained for 48 cores (I've
            tried 12, 64 cores as well).<br>
            <br>
            Where should I look for possible explanation?<span
              class="HOEnZb"><font color="#888888"><br>
                <br>
                -- <br>
                Regards,<br>
                Alexander<br>
              </font></span></blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Regards,
Alexander</pre>
  </body>
</html>