<div dir="ltr">Hi,<div><br></div><div>sorry i haven't answered in a while. </div><div>>><span style="color:rgb(80,0,80)">  i was wondering if there is an implementation of parallel </span><span class="gmail-il" style="color:rgb(80,0,80)">qr</span><span style="color:rgb(80,0,80)"> </span><span class="gmail-il" style="color:rgb(80,0,80)">decomposition</span><span style="color:rgb(80,0,80)"> in PETSc.</span></div><div>> 

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">For what purpose do you need a<span> </span></span><span class="gmail-il" style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">QR</span><span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">? We may have suggestions if we know how you want to use it.</span>

</div><div>I found an interesting algorithm for radial basis function interpolation. It mitigates the ill-conditioning that arises from making radial basis functions increasingly flat. The paper can be found at<br><a href="https://amath.colorado.edu/faculty/fornberg/Docs/SISCmanuscript.pdf">https://amath.colorado.edu/faculty/fornberg/Docs/SISCmanuscript.pdf</a><br>The algorithm defines a Matrix C that is rectangular (more columns than rows). Then a QR Decomposition of C is computed. It looks like this:</div><div>C = Q [R1 R2]<br>with R1 being rectangular and R2 being stacked on it horizontally. What i want to compute in the end is: <br>R_1^{-1} R_2<br>Which isn't that hard to compute once R is known, as this is just backward substitution. Anyway i still need to do a full QR decomposition (Even though i don't actually need Q, it would be easy to calculate from R, so i don't think there is any shortcut to Q, except that i don't have to store Q).<br>What i was thinking of as a possible solution is to parallelize Givens rotations by leveraging the fact that it only has local row-wise data dependencies in each step.<br><br></div><div>Best regards<br><br>David Sommer</div></div>