Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENH: sparse.linalg.splu: add "splu over non square matrices" #20704

Open
wants to merge 93 commits into
base: main
Choose a base branch
from

Conversation

Shay2Shay
Copy link

Tested and working for 3x2 and 4x2 matrices, not working for 2x3 and 2x4 matrices

The pull request is for the issue #20164

Did not write tests yet - 1st need to fix some issues, seeking help - discussed here

Reference issue

#20164

What does this implement/fix?

Splu function can take non square matrices
It can perform LU factorization over it

Additional information

need to fix some issues - discussed here

tylerjereddy and others added 30 commits December 8, 2022 20:21
* the version bound changes are very easy to mess
up; the converation from the last release is available
here:
scipy#16353

* at the moment, I've assumed that NumPy `1.24.0` will
be released before SciPy `1.10.0`, so that can perhaps
aim to support all the way up to `1.26.0` if we are
careful?

* one other point of caution--we rely even more on `meson`
now than we did at the start of the `1.9.0` release cycle
for things like wheel builds, so if you think of anything
else that might need adjusting in that regard let me know

* I think I've traditionally left the adjustment of some
version strings to include `rc1` to the release process
proper/`REL` commit

* clean up some release notes issues: remove some empty
sections, fix the formatting of various nested lists; this
is made a bit easier by pasting sections into online RST interactive
preview pages--let me know if you see other parts that need
fixing

* the full testsuite passed locally, but I'll flush the full
CI for now because it it useful to know that the maintenance
branch CI doesn't have any surprises waiting
DOC: 1.10 release notes updates for scipy.stats
* bump the minimum version of
`meson-python` based on reviewer
feedback

* remove the `meson_version` upper
bound based on reviewer feedback
* fix a typo in the relnotes

[skip azp] [skip actions] [skip cirrus]
MAINT: version bounds for 1.10.0rc1/relnotes fixes
* SciPy `1.10.0rc1` release commit

[wheel build]
* CI: native cp38-macosx_arm64
* update SciPy `1.10.0` release notes following
backports and fix suggested from Matt H.

[wheel build]
…rts_rd2

MAINT: 1.10.0rc1 backports round 2
* second attempt at building wheels/tagging
for SciPy `1.10.0rc1`

[wheel build]
DOC: update version switcher for 1.10
…ures due to infinite bounds (scipy#17448)

* MAINT: optimize.minimize_scalar: default method is 'bounded' if bounds are provided

* MAINT: optimize.minimize_scalar: raise error if bound is not finite

* MAINT: optimize.minimize_scalar: raise error when bounds are provided for unbounded method
* MAINT: stats.pearsonr: raise error for complex input

In `pearsonr`, raise a `ValueError` for complex input.
Unit test included to show the intended error.
This change is required because the source
file has been updated in scipy/dataset-ascent#3
Co-authored-by: boeleman <boeleman@users.noreply.github.com>
* Attempts to deal with the ARM-specific portion
of scipygh-17630 -- these issues appear to be the
result of NumPy 1.24.0 change:
https://numpy.org/devdocs/release/1.24.0-notes.html#numpy-now-gives-floating-point-errors-in-casts

* I was able to reproduce and fix the issues
in `scipy/sparse/tests/test_base` on an ARM node

* however, for `test_decomp_update` I actually saw more severe
problems when working on a Cavium ThunderX2 B0 node;
for the latter cases, I'll paste what I saw below
for some of the representative failures, but for now
I just tried to patch the less severe casting errors I see
in the CI for those tests to see if it helps (I'm hoping that
my own flavor of OpenBLAS is just throwing things off locally
and I can at least delay looking into that for now...)

```
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_d::test_neg_strides_economic_rank_p - ValueError: array must not contain infs or NaNs
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_d::test_neg_strides_rank_p - ValueError: array must not contain infs or NaNs
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_d::test_non_itemsize_strides_rank_p - ValueError: array must not contain infs or NaNs
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_d::test_non_native_byte_order_economic_rank_1 - ValueError: array must not contain infs or NaNs
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_d::test_non_unit_strides_rank_p - ValueError: array must not contain infs or NaNs
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_D::test_economic_rank_p - AssertionError:
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_d::test_non_native_byte_order_rank_1 - ValueError: array must not contain infs or NaNs
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_D::test_Mx1_economic_rank_p - AssertionError:
FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_D::test_economic_rank_1 - AssertionError:
```
* scipygh-17630 describes a segfault observed in Cirrus CI (alpine)
in `test_random_complex_exact` with NumPy `1.24.0`; it
was not reproducible locally in an `alpine` docker container
with latest SciPy + NumPy `1.24.0` built from tarball via
`pip`

* this branch aims to avoid the issue with a very-scoped
test skip--only when `glibc` was not used to buid the
Python interpreter, and only when NumPy is at `1.24.0`
or greater

[skip circle]
* update the SciPy `1.10.0` release notes following
a series of backports targeted at the second release
candidate
* SciPy `1.10.0rc2` release commit

[wheel build]
* MAINT: stats.rankdata: ensure consistent shape handling

This change corrects the behaviour when `axis` is None.
Fixes scipy#17644 (see detailed analysis over there..)

* I confirmed locally that `cibuildwheel --platform windows`
passes with `pybind11` `2.10.2` excluded, whereas we currently
experience a segfault that is blocking the release process on
Windows

* I suspect we may be able to restrict the exclusion to Windows
only in `pyproject.toml`, but I think I'm inclined to just keep
the syntax simple there if folks are "ok" with this?

* this should also stop our Windows meson job from segfaulting
for the same reason
* update SciPy 1.10.0 release notes
following more backports
* second attempt at SciPy `1.10.0rc2` wheel
builds, after additional backports

[wheel build]
@lucascolley
Copy link
Member

lucascolley commented May 12, 2024

Hi @Shay2Shay , this PR was initially made to the old 1.10 branch. I tried switching it to main, but that has brought many other commits with it. Would you feel comfortable remaking the PR on top of main?

We don't add new functionality to previous versions, and even bug fix backports are typically only to the most recent release.

@Shay2Shay
Copy link
Author

Hi @Shay2Shay , this PR was initially made to the old 1.10 branch. I tried switching it to main, but that has brought many other commits with it. Would you feel comfortable remaking the PR on top of main?

We don't add new functionality to previous versions, and even bug fix backports are typically only to the most recent release.

Ok, I will
I was facing error with setting up latest version of scipy because of numpy 2.0.
I will make new PR.

@lucascolley
Copy link
Member

great, thanks. Do let us know by opening a new issue if you are having problems setting up the dev env following https://scipy.github.io/devdocs/dev/contributor/contributor_toc.html, or send a message on our Slack.

@lucascolley lucascolley changed the title ENH: add functionality "splu over non square matrices" to SciPy.sparse.linalg.splu ENH: sparse.linalg.splu: add "splu over non square matrices" May 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement A new feature or improvement scipy.sparse.linalg
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet