<div dir="ltr"><div dir="ltr"><br clear="all"><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 26, 2023 at 8:21 AM Qiyue Lu <<a href="mailto:qiyuelu1@gmail.com">qiyuelu1@gmail.com</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"><div dir="ltr">Hello,<br><div>I am trying to incorporate PETSc as a linear solver to compute Ax=b in my code. Currently, the sequential version works. </div><div>1) I have the global matrix A in CSR format and they are stored in three 1-dimensional arrays: row_ptr[ ], col_idx[ ], values[ ], and I am using MatCreateSeqAIJWithArrays to get the PETSc format matrix. This works. </div><div>2) I am trying to use multicores, and when I use "srun -n 6", I got the error <b>Comm must be of size 1</b> from the MatCreateSeqAIJWithArrays. Saying I cannot use SEQ function in a parallel context. </div><div>3) I don't think MatCreateMPIAIJWithArrays and MatMPIAIJSetPreallocationCSR are good options for me, since I already have the global matrix as a whole. </div><div><br></div><div>I wonder, from the global CSR format data, how can I reach the PETSc format matrix for parallel KSP computation. Are the MatSetValue, MatSetValues what I need?</div></div></blockquote><div>Yes, MatSetValues on each row. Your matrix data is originally on one process, which is not efficient. You could try to distribute it at the beginning. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>Thanks,</div><div>Qiyue Lu</div></div>
</blockquote></div></div>