<div dir="ltr"><div dir="ltr">Hi Dev-List,<div><br></div><div>Regarding <a href="https://github.com/scipy/scipy/issues/14096">Replace superLU sequential with superLU dist · Issue #14096 · scipy/scipy (github.com)</a>, would it be preferable to retain the sequential version a,d simply adding the mt version as an  option or would should simply swap out sequential for mt?</div><div><br></div><div>Cheers,</div><div>Neil</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 30 May 2021 at 09:40, Neil Godber <<a href="mailto:njgodber@gmail.com">njgodber@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"><div>Hi Ralf,</div><div><br></div><div>Saw your comment on the issue. Is there anything else I can do to help? Unfortunately my C/C++ skills are lacking so I'm not sure how much help I on the actual integration itself. <br></div><div><br></div><div>Cheers,</div><div>Neil<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 29 May 2021 at 17:00, Neil Godber <<a href="mailto:njgodber@gmail.com" target="_blank">njgodber@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"><div>Hi Ralf + ScipyDev,</div><div><br></div><div>Dr Li has helpfully uploaded the SuperLU_mt code base to github <a href="https://github.com/xiaoyeli/superlu_mt" target="_blank">https://github.com/xiaoyeli/superlu_mt</a> . Dr Li indicated that most development effort is focused on _dt, but that sequential and mt remain supported and bug reports will be attended to. <br></div><div><br></div><div>Cheers,</div><div>Neil<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 24 May 2021 at 11:09, Neil Godber <<a href="mailto:njgodber@gmail.com" target="_blank">njgodber@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"><div>Hi Ralf,</div><div><br></div><div>Thanks for your email and happy to assist in whatever way I can. I've reached out to Dr Xiaoyei Li of Lawrence Berkley who appears to be the principal maintainer of the code base with a request to host the _mt code on github. Given the other two versions are already hosted I can't see that being an issue. I've also queried whether developments are done in sync and if so, if there is a pending patching for mt in the similar fashion to sequential. <br></div><div><br></div><div>I will revert with further information as I receive it.</div><div><br></div><div>Cheers,</div><div>Neil<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 24 May 2021 at 04:33, Ralf Gommers <<a href="mailto:ralf.gommers@gmail.com" target="_blank">ralf.gommers@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"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 21, 2021 at 2:11 AM Neil Godber <<a href="mailto:njgodber@gmail.com" target="_blank">njgodber@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"><div dir="ltr">Hi dev-list,<div><br></div><div>Further last, realised that I failed to link to the issue itself despite linking to virtually everything else:</div><div><br></div><div><a href="https://github.com/scipy/scipy/issues/14096" target="_blank">Replace superLU sequential with superLU dist · Issue #14096 · scipy/scipy (github.com)</a><br></div><div><br></div><div>Cheers,</div><div>Neil</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 21 May 2021 at 10:04, Neil Godber <<a href="mailto:njgodber@gmail.com" target="_blank">njgodber@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"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi dev-list,</div></div></div></div></div></div></blockquote></div></blockquote><div><br></div><div>Thanks for the proposal Neil.</div><div> <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 class="gmail_quote"><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 dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div>I've logged an enhancement request on github to bring the parallel versions of SuperLU into scipy. As requested I'm circulating the enhancement here to solicit comment/feedback/engagement. </div><div><br></div><div>Content of request is as follows (with light editing and links):</div><div><br></div><div>"<span style="font-weight:600;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px">Is your feature request related to a problem? Please describe.</span></div><p style="box-sizing:border-box;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;margin-top:0px">The direct solution of sparse matrices is a common problem that arises across many domains. Current scipy.sparse.linalg provides spsolve and splu to solve such classes of problems. Neither solution appears to utilise more than one or two threads leaving a lot of the available compute on modern machines unused. Other solutions (MUMPS, Pardiso) exploit multicore processors but are either minimally supported and/or locked behind proprietary libraries.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px"><span style="box-sizing:border-box;font-weight:600">Describe the solution you'd like</span><br style="box-sizing:border-box">Fortunately SuperLU has two multithreaded implementations superLU_mt and superLU_dt, both actively maintained (<a href="https://portal.nersc.gov/project/sparse/superlu/" style="font-family:Arial,Helvetica,sans-serif;font-size:small" target="_blank">SuperLU: Home Page (nersc.gov)</a>). Ideally SciPy would replace the current sequential implementation with one of the parallel implementations to yield large performance improvements.</p></div></div></div></div></div></div></blockquote></div></blockquote><div>The relevant one seems to be superLU_mt. The `_dt` flavor is for distributed computing, which is out of scope for SciPy. superLU_mt says it has both pthreads and OpenMP interfaces - we'd prefer pthreads (and actually forbid OpenMP within SciPy).</div><div><br></div><div>The last release of superLU_mt is v3.1, from March 2016. Our current copy of SuperLU is 5.2.1, from May 2016 - but then there's a bunch of patches applied to it, and then <a href="https://github.com/scipy/scipy/pull/12243" target="_blank">https://github.com/scipy/scipy/pull/12243</a> did a sync with SuperLU master in May 2020. So it would be necessary to figure out if we can get superLU_mt from upstream master as well, and that we don't lose bug fixes we applied since 2016. Could you look into that Neil? And do you know if the parallel and sequential versions are developed in sync or not?<br></div><div><br></div><div>Cheers,<br></div><div>Ralf</div><div><br></div><div><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 class="gmail_quote"><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 dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px"><span style="box-sizing:border-box;font-weight:600">Describe alternatives you've considered</span><br style="box-sizing:border-box">pyMKL (Pardiso <a href="https://github.com/dwfmarchant/pyMKL" style="font-family:Arial,Helvetica,sans-serif;font-size:small" target="_blank">dwfmarchant/pyMKL: Python wrappers to Intel MKL routines (github.com)</a>) - MKL with issues associated with that for non Intel processors, unmaintained relatively to scipy, PyTrilinos (implements all three superLU types but only available on osx and linux <a href="https://trilinos.github.io/pytrilinos.html" style="font-family:Arial,Helvetica,sans-serif;font-size:small" target="_blank">PyTrilinos | Trilinos</a>), petsc (petsc4py <a href="https://gitlab.com/petsc/petsc" style="font-family:Arial,Helvetica,sans-serif;font-size:small" target="_blank">PETSc / petsc · GitLab</a>) (implements all three superLU types but only available on osx and linux). All are relatively inaccessible compared to ubiquity and accessibility of scipy.</p><p style="box-sizing:border-box;margin-top:0px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;margin-bottom:0px"><span style="box-sizing:border-box;font-weight:600">Additional context (e.g. screenshots)</span><br style="box-sizing:border-box">Anecdotally large number of projects use various non scipy sparse solvers to achieve high level of performance. This comes with considerable time and maintenance investment. It would be fantastic for scipy to provide a 'performance competitive' sparse direct solver out of the hood as it does for dense matrices."</p><p style="box-sizing:border-box;margin-top:0px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;margin-bottom:0px"><br></p><p style="box-sizing:border-box;margin-top:0px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;margin-bottom:0px">Cheers,</p><p style="box-sizing:border-box;margin-top:0px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;margin-bottom:0px">Neil</p></div></div></div></div></div></div>
</blockquote></div>
_______________________________________________<br>
SciPy-Dev mailing list<br>
<a href="mailto:SciPy-Dev@python.org" target="_blank">SciPy-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scipy-dev" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/scipy-dev</a><br>
</blockquote></div></div>
_______________________________________________<br>
SciPy-Dev mailing list<br>
<a href="mailto:SciPy-Dev@python.org" target="_blank">SciPy-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scipy-dev" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/scipy-dev</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>