<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 7, 2022 at 9:17 AM Sijie Tang <<a href="mailto:sijietang1995@gmail.com">sijietang1995@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 style="overflow-wrap: break-word;">I make a mistake there is no hypre_ParCSRVector, that should be <span style="color:rgb(0,0,0)">hypre_ParVector.</span><div><font color="#000000"><span><br></span></font></div><div><font color="#000000"><span>Sijie<br></span></font><div><br><blockquote type="cite"><div>On Feb 5, 2022, at 21:53, Sijie Tang <<a href="mailto:sijietang1995@gmail.com" target="_blank">sijietang1995@gmail.com</a>> wrote:</div><br><div><div style="overflow-wrap: break-word;">Hi developer,<div><br></div><div>I have many questions about he Matrix and Vector Format Convert between PETSc and HYPRE, could you give me some answers or hints?<br><div><br></div><div><ol style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px;font-variant-ligatures:normal;background-color:rgb(255,255,255)"><li><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">Can I convert MATHYPRE (in PETSc) to hypre_ParCSRMatrix ( HYPRE ) use function <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">MatHYPREGetParCSR()<span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit"> (in PETSc) ? </span></span></span></li></ol></div></div></div></div></blockquote></div></div></div></blockquote><div>You specify a hypre matrix with '-mat_type hypre' and then you can use:</div><div><br></div><div>PetscErrorCode MatHYPREGetParCSR(Mat A, hypre_ParCSRMatrix **parcsr)</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 style="overflow-wrap: break-word;"><div> <div><blockquote type="cite"><div><div style="overflow-wrap: break-word;"><div><div><ol style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px;font-variant-ligatures:normal;background-color:rgb(255,255,255)"><li>for 2, or I should use MatHYPRE_IJMatrixCreate  and <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">MatHYPRE_IJMatrixCopy </span>to get <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">hypre_IJMatrix</span>, then hypre_IJMatrix convert to <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">hypre_ParCSRMatrix ?</span></li></ol></div></div></div></div></blockquote></div></div></div></blockquote><div>Not sure. It easier to use MatSetFromOptions and '-mat_type hypre'  as above</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div><div><blockquote type="cite"><div><div style="overflow-wrap: break-word;"><div><div><ol style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px;font-variant-ligatures:normal;background-color:rgb(255,255,255)"><li>for the vector, I don't find any function can convert vector in PETSc to <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">hypre_ParCSRVector, Is there any function can do this work ?</span></li></ol></div></div></div></div></blockquote></div></div></div></blockquote><div>We don't use hypre vectors, or at least we don't expose them. You specify the vector type (CPU is the default) like -vec_type cuda</div><div>Then you use a normal Vec in your code. And use MatCreateVecs to get the right type. Hypre will use the device if it is available and MatCreateVecs will create the correct type.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div><div><blockquote type="cite"><div><div style="overflow-wrap: break-word;"><div><div><ol style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px;font-variant-ligatures:normal;background-color:rgb(255,255,255)"><li><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">But I find I can use VecHYPRE_IJVectorCreate and <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">VecHYPRE_IJVectorCopy to get <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">hypre_IJVector, then <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">hypre_IJVector convert to </span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">hypre_ParCSRVector?</span></span></span></span></li><li><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">Is there any function can convert the format back? like <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">hypre_ParCSRMatrix convert to MATHYPRE, </span></span></span></span></span></li></ol></div></div></div></div></blockquote></div></div></div></blockquote><div>Maybe. I don't see docs on this (very new) but I see:</div><div><br></div><div>include/petscmathypre.h:PETSC_EXTERN PetscErrorCode MatCreateFromParCSR(hypre_ParCSRMatrix*,MatType,PetscCopyMode,Mat*);<br></div><div><br></div><div>And there is a test that you should look at that tests hypre matrices:</div><div><br></div><div>src/mat/tests/ex115.c<br></div><div><br></div><div>Mark</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div><div><blockquote type="cite"><div><div style="overflow-wrap: break-word;"><div><div><ol style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px;font-variant-ligatures:normal;background-color:rgb(255,255,255)"><li><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">and <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;color:inherit">hypre_ParCSRVector convert to PETSc's vector?</span></span></span></span></span></span></li></ol><div><br></div></div></div><div>Thanks,</div><div>Sijie</div></div></div></blockquote></div><br></div></div></blockquote></div></div>