<div dir="ltr">Hi Barry,<div><br></div><div>Yes, it was very large sparse matrix (million rows). I had no problem when the binary format was used. I think that I need to change my preference. Thank you very much for your comments and help!</div><div><br></div><div>Best regards,</div><div>Evan</div><div> </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 24, 2019 at 7:58 PM Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</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"><br>
  Is it a very large matrix? The ASCII output is intended for only smallish matrices and may take a lot of time for very large matrices. For large matrices we recommend the binary format which is much faster for large matrices and can handle tens of millions of rows. You can read it into Python or Matlab with utilities we provide.<br>
<br>
    Barry<br>
<br>
<br>
> On Jan 23, 2019, at 9:40 AM, Jed Brown via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:<br>
> <br>
> Evan Um via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> writes:<br>
> <br>
>> Dear PETSC users,<br>
>> <br>
>> I try to verify a matrix by printing a PETSC matrix and comparing its<br>
>> elements with reference values. Below is my test code.<br>
>> <br>
>> It works well when a single process is used. The output file is created<br>
>> quickly. In contrast, when multiple processes (>2) are used, printing<br>
>> matrix is stuck (the parallel matrix is assembled very quickly owing to<br>
>> memory preallocation). The output file just prints two lines below. No<br>
>> element is printed.<br>
>> <br>
>> Mat Object: 2 MPI processes<br>
>>  type: mpiaij<br>
>> <br>
>> I assume that printing matrix is also designed for a parallel matrix. Does<br>
>> this suggest that my parallel matrix includes any errors? Otherwise, does<br>
>> this work only for a serial matrix?<br>
>> <br>
>> Thanks for reading this question.<br>
>> <br>
>> Regards,<br>
>> Evan<br>
>> <br>
>> MatCreateAIJ(PETSC_COMM_WORLD, m, n, M, N, 0, d_nnz_A, 0, o_nnz_A, &Mat_A);<br>
>> MatSetFromOptions(Mat_A);<br>
>> <br>
>> for (int i=rstart_A[rank]; i<rend_A[rank]; i++) {<br>
>> mat_value=val_A[i]+PETSC_i*0.0;<br>
>> MatSetValue(Mat_A, i_A[i],j_A[i],mat_value,ADD_VALUES);<br>
>> }<br>
>> <br>
>> MatAssemblyBegin(Mat_A, MAT_FINAL_ASSEMBLY);<br>
>> MatAssemblyEnd(Mat_A, MAT_FINAL_ASSEMBLY);<br>
>> <br>
>> PetscViewer viewer;<br>
>> PetscViewerASCIIOpen(PETSC_COMM_WORLD,"Mat_A",&viewer);<br>
>> MatView(Mat_A,viewer);<br>
>> PetscViewerPushFormat(viewer,PETSC_VIEWER_ASCII_MATLAB);<br>
> <br>
> Did you intend to use the MATLAB format?  If so, MatView needs to be<br>
> called while the format is pushed, so swap the two lines above.<br>
> <br>
>> PetscViewerPopFormat(viewer);<br>
>> PetscViewerDestroy(&viewer);<br>
<br>
</blockquote></div>