Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
bc09c72
MAINT: interpolate: rm unneeded subarray variables
ev-br Feb 28, 2025
dec2e3a
MAINT: interpolate: move evaluate_ndbspline from Cython to C
ev-br Mar 10, 2025
19c882e
MAINT: interpolate: move evaluate_ndbspline from Cython to C
ev-br Mar 10, 2025
20a8a18
MAINT: interpolate/ndbspline: move coloc_nd to C
ev-br Mar 10, 2025
7118103
MAINT: interpolate: remove _bspl.pyx
ev-br Mar 10, 2025
e5bec85
MAINT: interpolate/ndbspline: move error handling to the wrapper layer
ev-br Mar 11, 2025
9bd74e7
MAINT: interpolate/ndbspline: toggle bounds checking back to false
ev-br Mar 11, 2025
c6a30cd
MAINT: Apply suggestions from code review
ev-br Mar 16, 2025
89baae2
ENH: VectorFunction in least_squares
andyfaff Mar 21, 2025
4bf2df8
MAINT: various fixups in least_squares
andyfaff Mar 22, 2025
e4da29d
BUG: fix VectorFunction issue wrt jac_sparsity
andyfaff Mar 22, 2025
5322eff
BUG: more fixes to VectorFunction
andyfaff Mar 22, 2025
f193899
MAINT: least_squares more comments
andyfaff Mar 22, 2025
c494a67
MAINT: least_squares more comments
andyfaff Mar 22, 2025
3a40cbe
LINT
andyfaff Mar 22, 2025
b04d329
MAINT: punctuation
andyfaff Mar 23, 2025
84bb25a
TST: optimize: add test for VectorFunction with sparse_jacobian=False
nickodell Mar 23, 2025
9fc5c2b
Merge pull request #78 from nickodell/njo-improve-test-coverage
andyfaff Mar 23, 2025
2c1745e
DOC: remove reference to lmdif
andyfaff Mar 23, 2025
89d9df4
BUG: use correct default for VectorFunction bounds
andyfaff Mar 23, 2025
6247c4a
LINT
andyfaff Mar 23, 2025
1137ccf
MAINT: return array copies for fun, jac, hess
andyfaff Mar 23, 2025
c26ca52
MAINT: VectorFunction returns copies of arrays
andyfaff Mar 24, 2025
5a7c6e5
MAINT: replace xp.astype with xp_copy (apart from those that could be…
andyfaff Mar 24, 2025
c3b0c33
BUG: special: fix thread safety of special.errstate
rgommers Mar 26, 2025
572a08b
TST: special: mark two tests as thread-unsafe
rgommers Mar 26, 2025
ff5a231
CI: free-threading: also test special/stats under pytest-run-parallel
rgommers Mar 26, 2025
0d02ec1
MAINT: remove usage of `WITH_THREAD` macro
rgommers Mar 26, 2025
d1073ac
ENH: special: add Dask support to `rel_entr` (#22641)
crusaderky Mar 26, 2025
25c8363
TST: special: remove test skips due to array-api-strict#131 (#22740)
mdhaber Mar 26, 2025
2179801
MAINT: 'lm', exclude number of evaluations used for jacobian approxim…
andyfaff Mar 27, 2025
63b49a4
MAINT: 'lm', exclude number of evaluations used for jacobian approxim…
andyfaff Mar 27, 2025
2a330d1
Merge pull request #22742 from rgommers/special-threadsafe
tylerjereddy Mar 27, 2025
5c5b44c
ENH: cluster: `linkage` support for jax.jit and dask (#22342)
crusaderky Mar 27, 2025
a585c29
MAINT: ndimage.zoom: eliminate noise when `zoom=1` (#22651)
mdhaber Mar 27, 2025
daf30cb
TST: linalg.test_batch: minor tolerance bumps
j-bowhay Mar 27, 2025
7c93670
Merge pull request #22751 from j-bowhay/gh-22747
mdhaber Mar 28, 2025
0d62d61
DOC: amendment of max_nfev
andyfaff Mar 28, 2025
df6b245
LINT
andyfaff Mar 28, 2025
ce3c877
Merge pull request #22728 from andyfaff/least_squares
andyfaff Mar 28, 2025
30609cc
DOC: stats: Extend documentation of random_correlation matrix (#22711)
vrossum Mar 28, 2025
3e24653
DOC: fft.hfft2: added example (#22750)
ShannonS00 Mar 28, 2025
bf7f21a
ENH: stats: add support for multiple parameterizations for custom dis…
steppi Mar 29, 2025
ae1e3cb
DOC: fft.rfft2: add example to docstring (#22745)
Backfisch263 Mar 29, 2025
5733a27
TST: weightedtau rng thread safety
tylerjereddy Mar 30, 2025
51dcb50
BUG: VectorFunction.f_updated wasn't being set on initalisation
andyfaff Mar 30, 2025
02ddfde
Merge pull request #22760 from andyfaff/vf
andyfaff Mar 30, 2025
2c16b8b
Merge pull request #22759 from tylerjereddy/treddy_issue_22758_weight…
mdhaber Mar 30, 2025
877c571
DOC: l-bfgs-b clarify what is meant by maxfun, maxiter
andyfaff Mar 30, 2025
e2da145
DOC: Apply suggestions from code review
andyfaff Mar 30, 2025
e1c873c
Merge pull request #22761 from andyfaff/gh18346
andyfaff Mar 31, 2025
a8e12fc
MAINT: improve dtype handling now that `xp.result_type` accepts Pytho…
mdhaber Mar 31, 2025
41afca2
ENH:MAINT:optimize: Rewrite SLSQP and NNLS in C (#22524)
ilayn Mar 31, 2025
ab7603d
MAINT: optimize: `VectorFunction`: remove reference cycle (#22764)
andyfaff Mar 31, 2025
7bbca7f
MAINT: special: refine `logsumexp` writeback behaviour (#22755)
crusaderky Mar 31, 2025
efdffab
ENH: stats: lazy trimmed stats for Dask and JAX (#22735)
crusaderky Mar 31, 2025
5df92ca
TST: stats: don't encapsulate `pytest.warns`
crusaderky Apr 1, 2025
4ecd239
TST: stats: don't encapsulate `pytest.warns` (#22771)
Apr 1, 2025
4d9f5e6
MAINT/DOC: integrate.tanhsinh: lightly refactor error estimate and co…
mdhaber Apr 1, 2025
8c2e0da
MAINT: VectorFunction copy array differently
andyfaff Apr 1, 2025
a4c233d
CI: enable SCIPY_ARRAY_API on a full linux run
andyfaff Apr 2, 2025
2636204
Merge pull request #22779 from andyfaff/gh22774
rgommers Apr 2, 2025
b06f830
TST: stats: add marray tests for `_length_nonmasked` axis tuple error…
zitongzhoueric Apr 2, 2025
ef2bcc8
ENH: spatial: speed up `Rotation.apply` by replacing `np.einsum` with…
cosama Apr 3, 2025
d72842a
DOC: improve docstrings of boxcox and yeojohnson (#22766)
lorentzenchr Apr 3, 2025
105cd84
BUG: stats: fix thread safety issue in `page_trend_test`
rgommers Apr 2, 2025
a548e4c
TST: sparse.linalg: fix rng seeding and warning filter issues
rgommers Apr 2, 2025
8bb5eec
Merge pull request #22666 from ev-br/ndbspl_simplify
ev-br Apr 3, 2025
f8951f6
TST: stats.quantile: add edge test cases for axis=None and keepdims=T…
zitongzhoueric Apr 3, 2025
25ca572
TST/MAINT: signal.symiirorder2: r, omega, precision are floats; use d…
crusaderky Apr 3, 2025
4cb19b8
DOC: ndimage.maximum_filter: note that behavior in the presence of Na…
mdhaber Apr 3, 2025
bdb1c00
Merge pull request #22782 from rgommers/fix-freethreading-failures
tylerjereddy Apr 4, 2025
b434b47
BUG: signal.ShortTimeFFT.upper_border_begin: Document parameter `n`. …
DietBru Apr 4, 2025
e7ca826
DOC/DEV: remove references to CirrusCI in skipping CI doc (#22785)
gabrielaugz Apr 4, 2025
27157ac
BUG: sparse.linalg._AdjointLinearOperator: Remove reference cycle to …
nickodell Apr 4, 2025
760a1b6
ENH/BLD: cython: share memoryview utility between extension modules […
rgommers Dec 18, 2024
bc5d86a
BUG/TST: `special.logsumexp` on non-default device (#22756)
crusaderky Apr 4, 2025
e249305
DOC: fft.dst: add example to docstring (#22723)
Tearyt Apr 4, 2025
7545258
ENH: special: `support_alternative_backends` on Dask (#22639)
crusaderky Apr 4, 2025
4b2460e
BUG: `signal.windows._windows.kaiser_bessel_derived`: use `asarray` i…
Saransh-cpp Apr 4, 2025
59376cb
Merge pull request #22796 from rgommers/cy-shared-memview
lucascolley Apr 4, 2025
f7d9e53
bug fix upper_border_begin
sildater Apr 2, 2025
0d5ef92
fix two tests in `test_spectral.py`
sildater Apr 3, 2025
b3e075d
Update test_short_time_fft.py upper_border_begin
sildater Apr 4, 2025
89442df
MAINT: use `xp.asarray` instead of `xp.array` (#22803)
Saransh-cpp Apr 4, 2025
d96ce7a
ENH: ndimage.vectorized_filter: make CuPy-compatible (#22715)
mdhaber Apr 4, 2025
44ec0af
BUG: optimize: Fix instability with NNLS on 32bit systems (#22802)
ilayn Apr 6, 2025
a7c064a
CI: start using the `CIBW_ENABLE` env var
rgommers Apr 6, 2025
ef7a30c
Merge pull request #22805 from rgommers/cibw-enable
charris Apr 6, 2025
92017bd
BUG: device propagation on PyTorch
crusaderky Apr 7, 2025
41641c2
Merge pull request #22808 from crusaderky/torch_device
lucascolley Apr 7, 2025
f18943f
CI: add CI jobs for different BLAS configs
rgommers Dec 28, 2023
186f447
DEBUG: run BLAS jobs on fork
rgommers Dec 28, 2023
acd1026
ENH: use Meson's BLAS and LAPACK support
rgommers Feb 23, 2025
850c649
Squash several commits to simplify rebasing
rgommers Dec 28, 2023
8616407
WIP: ENH: enable ILP64 BLAS/LAPACK support again
rgommers Jan 1, 2024
2eeb924
Squash several commits to simplify rebasing
rgommers Jan 1, 2024
dc30577
BLD: linalg, sparse/linalg: link with g77_abi_wrappers
ev-br Mar 22, 2025
e1b3762
BLD: interpolate: build FITPACK with 32- or 64-bit ints
ev-br Mar 11, 2025
a5887e0
MAINT: interpolate: link the __fitpack C extension to 64-bit LAPACK
ev-br Mar 26, 2025
64cefe6
BUG: spatial: Qhull does not need linking to LAPACK
ev-br Mar 13, 2025
acfb0d3
TST: linalg: bump test tolerances
ev-br Mar 13, 2025
d5a4c14
ENH: integrate: make lsoda.pyf and vode.pyf int64-aware
ev-br Mar 13, 2025
b351721
BLD: integrate: add int64 flags to ODE wrappers (lsoda, dop, vode, zv…
ev-br Mar 13, 2025
8638986
BLD: sparse/arpack: add an int64 flag
ev-br Mar 13, 2025
72ae04d
BLD: special: link to LP64-bit LAPACK, use cython_special in ellip_harm
ev-br Mar 16, 2025
9ad88fe
MAINT: special: no need to link to LAPACK explicitly with cython_lapack
ev-br Mar 16, 2025
818e759
BLD: optimize: link lbfgsb to 32-bit LP64 LAPACK
ev-br Mar 26, 2025
cf26b61
BLD: fix up MKL ILP64 detection
ev-br Mar 22, 2025
cfbe986
CI: separate the MKL ILP64 job
rgommers Mar 26, 2025
a6e25fb
CI: tweak the ILP64 job
ev-br Mar 26, 2025
c943eaf
CI: temp remove linux_blas.yml workflow
ev-br Mar 26, 2025
9bea354
BLD: fix a small error in meson.build
ev-br Mar 26, 2025
2f75171
Revert "MAINT: special: no need to link to LAPACK explicitly with cyt…
ev-br Mar 26, 2025
a94c41a
Revert "BLD: special: link to LP64-bit LAPACK, use cython_special in …
ev-br Mar 26, 2025
aa48559
BLD: special: link explicitly to 32-bit LAPACK
ev-br Mar 26, 2025
b74ac02
WIP/BLD: try restoring the "regular" builds
ev-br Mar 27, 2025
34c413f
WIP: revert ILP64 related changes in integrate, odr and arpack
ev-br Mar 28, 2025
eaf69b6
BLD: force name mangling in ILP64 builds of BLAS and LAPACK
ev-br Mar 29, 2025
25ccfeb
MAINT: interpolate: propagate C flags for ILP64
ev-br Mar 30, 2025
2ef8296
MAINT: slightly minimize the diff size
ev-br Mar 31, 2025
30aea5d
CI: remove the SDL MKL LP64 build for now
ev-br Mar 31, 2025
2e52a47
BLD: remove blas-order, simplify lapacl detection
ev-br Mar 31, 2025
3cddc52
CI: adjust mkl job for the lack of -Dblas-order
ev-br Mar 31, 2025
ec8bcec
BUG: _build_utils: new Accelerate does not seem to need NO_APPEND_FOR…
ev-br Mar 31, 2025
1c0e9e7
MAINT: remove unused code
ev-br Mar 31, 2025
f943251
MAINT: address review comments
ev-br Apr 7, 2025
6ca0511
MAINT: linalg: deduplicate the f2py defines
ev-br Apr 7, 2025
9ffb449
MAINT: deduplicate wrap_g77_abi{_ilp64}.c
ev-br Apr 7, 2025
09c1d1f
BLD: enable/test the ILP64 build with scipy-openblas64
ev-br Apr 7, 2025
ab48f69
DOC: document the status of the ILP64 support
ev-br Apr 7, 2025
19c2bb8
MAINT: remove a duplicate build flag
ev-br Apr 7, 2025
ad27069
CI: add an Accelerate ILP64 job
ev-br Apr 8, 2025
c563f08
.
ev-br Apr 8, 2025
42bf001
..
ev-br Apr 8, 2025
dbda75b
...
ev-br Apr 8, 2025
e8fea36
....
ev-br Apr 8, 2025
8033e81
.....
ev-br Apr 8, 2025
cb381f0
......
ev-br Apr 8, 2025
64ce280
?
ev-br Apr 8, 2025
38bee3f
abs -> labs
ev-br Apr 9, 2025
a7be169
-v on CI
ev-br Apr 9, 2025
3b09c48
TST: interpolate: skip a test which crashes on ILP64 accelerate
ev-br Apr 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ benchmarks/asv.conf.json @larsoner
# CI config
.circleci/ @larsoner
.github/workflows/ @larsoner @andyfaff
.cirrus.star @larsoner @andyfaff

# Doc
requirements/doc.txt @tupui
Expand Down
1 change: 0 additions & 1 deletion .github/label-globs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,6 @@ CI:
- .circleci/**
- .github/workflows/**
- ci/**
- .cirrus.star

DX:
- changed-files:
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ jobs:
#################################################################################
prerelease_deps_coverage_64bit_blas:
# TODO: re-enable ILP64 build.
name: Prerelease deps & coverage report, full, py3.11/npMin & py3.11/npPre, dev.py
name: Prerelease deps & coverage report, full, py3.11/npMin & py3.11/npPre, dev.py, SCIPY_ARRAY_API=1
needs: get_commit_message
if: >
needs.get_commit_message.outputs.message == 1
Expand Down Expand Up @@ -362,6 +362,7 @@ jobs:
- name: Test SciPy
run: |
export OPENBLAS_NUM_THREADS=1
export SCIPY_ARRAY_API=1
python dev.py --no-build test --coverage -j2 --mode full -- --cov --cov-report term-missing

#################################################################################
Expand Down Expand Up @@ -508,7 +509,6 @@ jobs:
if: ${{ matrix.parallel == '1'}}
env:
# Excluded modules:
# - scipy.special and scipy.stats are waiting on special.errstate being made thread-safe
# - scipy.spatial has multiple issues in kdtree/qhull, and gh-20655 is pending.
TEST_SUBMODULES: >-
-t scipy.cluster
Expand All @@ -527,6 +527,8 @@ jobs:
-t scipy.optimize
-t scipy.signal
-t scipy.sparse
-t scipy.special
-t scipy.stats
run: |
# Note: only fast tests; full test suite is unlikely to uncover anything more,
# and it'll be quite slow with pytest-run-parallel
Expand Down
129 changes: 129 additions & 0 deletions .github/workflows/linux_blas_ilp64.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: BLAS tests (Linux)

# This file is meant for testing different BLAS/LAPACK flavors and build
# options on Linux. All other yml files for Linux will only test without BLAS
# (mostly because that's easier and faster to build) or with the same 64-bit
# OpenBLAS build that is used in the wheel jobs.
#
# Jobs and their purpose:
#
# - mkl:
# Tests MKL installed from PyPI (because easiest/fastest, if broken) in
# 3 ways: both LP64 and ILP64 via pkg-config, and then using the
# Single Dynamic Library (SDL, or `libmkl_rt`).
#
# - scipy-openblas64:
# Test ILP64-enabled build with scipy-openblas32 and scipy-openblas64.
#

on:
pull_request:
branches:
- main
- maintenance/**

defaults:
run:
shell: bash

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

permissions:
contents: read # to fetch code (actions/checkout)

jobs:

mkl-lp64:
runs-on: ubuntu-latest
name: "MKL LP64"
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
submodules: recursive
fetch-depth: 0
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
with:
python-version: '3.11'

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gfortran
pip install cython numpy pybind11 pythran pytest hypothesis pytest-xdist pooch
pip install -r requirements/dev.txt
pip install git+https://github.com/numpy/meson.git@main-numpymeson
pip install mkl mkl-devel

- name: Build with defaults (LP64)
run: |
pkg-config --libs mkl-dynamic-lp64-seq # check link flags
python dev.py build -C-Dblas=mkl

- name: Test
run: python dev.py test -j 2


mkl-ilp64:
runs-on: ubuntu-latest
name: "MKL ILP64"
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
submodules: recursive
fetch-depth: 0
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
with:
python-version: '3.11'

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gfortran
pip install cython numpy pybind11 pythran pytest hypothesis pytest-xdist pooch
pip install -r requirements/dev.txt
pip install git+https://github.com/numpy/meson.git@main-numpymeson
pip install mkl mkl-devel

- name: Build with ILP64
run: |
pkg-config --libs mkl-dynamic-ilp64-seq # check link flags
python dev.py build -C-Dblas=mkl -C-Duse-ilp64=true

- name: Test
run: python dev.py test -j 2


scipy-openblas-ilp64:
runs-on: ubuntu-latest
name: "scipy-openblas ILP64"
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
submodules: recursive
fetch-depth: 0
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
with:
python-version: '3.11'

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gfortran
pip install cython numpy pybind11 pythran pytest hypothesis pytest-xdist pooch
pip install -r requirements/dev.txt
pip install git+https://github.com/numpy/meson.git@main-numpymeson
pip install scipy-openblas32 scipy-openblas64
# dev.py does this for scipy-openblas32
python -c'import scipy_openblas64 as so64; print(so64.get_pkg_config())' > scipy-openblas64.pc
export PKG_CONFIG_PATH=`pwd`

- name: Build with ILP64
run: |
python dev.py build --with-scipy-openblas -C-Duse-ilp64=true

- name: Test
run: python dev.py test -j 2


1 change: 1 addition & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,3 +217,4 @@ jobs:

pip install pooch pytest hypothesis
python dev.py -n test

56 changes: 56 additions & 0 deletions .github/workflows/macos_blas_ilp64.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: macOS BLAS ILP64 tests

on:
push:
branches:
- maintenance/**
pull_request:
branches:
- main
- maintenance/**

permissions:
contents: read # to fetch code (actions/checkout)

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
accelerate:
name: Accelerate (ILP64)
if: "github.repository == 'ev-br/scipy'"
runs-on: macos-15
strategy:
matrix:
python-version: ["3.11"]

steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive

- name: Setup Python
uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'

- name: Build and Install SciPy
run: |
sudo xcode-select -s /Applications/Xcode_16.app

git submodule update --init
GFORTRAN_LOC=$(which gfortran-13)
ln -s $GFORTRAN_LOC gfortran
export PATH=$PWD:$PATH

# Ensure we have gfortran dylib
GFORTRAN_LIB=$(dirname `gfortran --print-file-name libgfortran.dylib`)
export DYLD_LIBRARY_PATH=$GFORTRAN_LIB

pip install click doit pydevtool rich_click meson cython pythran pybind11 ninja numpy
python dev.py build -C-Dblas=accelerate -C-Duse-ilp64=true

pip install pooch pytest hypothesis
python dev.py -n test -v
3 changes: 1 addition & 2 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,7 @@ jobs:
env:
CIBW_BUILD: ${{ matrix.python[0] }}-${{ matrix.buildplat[1] }}*
CIBW_ARCHS: ${{ matrix.buildplat[2] }}
CIBW_PRERELEASE_PYTHONS: True
CIBW_FREE_THREADED_SUPPORT: True
CIBW_ENABLE: cpython-freethreading cpython-prerelease

- name: Rename macOS wheels
if: startsWith( matrix.buildplat[0], 'macos-' )
Expand Down
38 changes: 38 additions & 0 deletions doc/source/building/blas_lapack.rst
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,44 @@ user wants to override this autodetection mechanism for building against plain
$ python -m build -C-Duse-g77-abi=true -Csetup-args=-Dblas=blas -Csetup-args=-Dlapack=lapack


64-bit integer (ILP64) BLAS/LAPACK
----------------------------------

Support for ILP64 BLAS and LAPACK is still experimental; at the time of writing
(Apr 2025) it is only available for two BLAS/LAPACK configurations: MKL and
``scipy-openblas``.

SciPy always requires LP64 (32-bit integer size) BLAS/LAPACK. You can build SciPy
with *additional* ILP64 support. This will result in SciPy requiring both BLAS and
LAPACK variants, where some extensions link to the ILP64 variant, while other
extensions link to the LP64 variant. From python, choosing the variant is done
through the ``get_blas_funcs`` and ``get_lapack_funcs`` functions::

>>> from scipy.linalg.blas import get_blas_funcs
>>> daxpy = get_blas_funcs('axpy', (np.ones(3),), ilp64='preferred')
>>> daxpy.int_dtype
dtype('int64')

Building with ILP64 support requires several NumPy additions to ``meson``, which have
not been merged to upstream yet::

$ pip install git+https://github.com/numpy/meson.git@main-numpymeson

For a development build with MKL, install the library and its development headers, and
give use the ``ilp64=true`` command line argument

$ pip install mkl mkl-devel
$ python dev.py build -C-Dblas=mkl -C-Duse-ilp64=true

For a development build with ``scipy-openblas64``, make sure you have installed both
``scipy-openblas32`` and ``scipy-openblas64``, and generate the pkg-config file
for the ILP64 variant::

>>> python -c'import scipy_openblas64 as so64; print(so64.get_pkg_config())' > scipy-openblas64.pc
>>> export PKG_CONFIG_PATH=`pwd`
>>> python dev.py build --with-scipy-openblas -C-Duse-ilp64=true


Work-in-progress
----------------

Expand Down
9 changes: 1 addition & 8 deletions doc/source/dev/contributor/continuous_integration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,6 @@ CircleCI
* ``run_benchmarks``: verify how the changes impact performance
* ``refguide_check``: doctests from examples and benchmarks

CirrusCI
--------
* ``Tests``: test suite for specific architecture like
``musllinux, arm, aarch``
* ``Wheels``: build and upload some wheels

.. _skip-ci:

Skipping
Expand All @@ -79,7 +73,6 @@ Skipping CI can be achieved by adding a special text in the commit message:

* ``[skip actions]``: will skip GitHub Actions
* ``[skip circle]``: will skip CircleCI
* ``[skip cirrus]``: will skip CirrusCI
* ``[docs only]``: will skip *all but* the CircleCI checks and the linter
* ``[lint only]``: will skip *all but* the linter
* ``[skip ci]``: will skip *all* CI
Expand All @@ -88,7 +81,7 @@ Of course, you can combine these to skip multiple workflows.

This skip information should be placed on a new line. In this example, we
just updated a ``.rst`` file in the documentation and ask to skip all but the
relevant docs checks (skip Cirrus and GitHub Actions' workflows)::
relevant docs checks (skip GitHub Actions' workflows)::

DOC: improve QMCEngine examples.

Expand Down
9 changes: 9 additions & 0 deletions meson.options
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@ option('blas', type: 'string', value: 'openblas',
description: 'option for BLAS library switching')
option('lapack', type: 'string', value: 'openblas',
description: 'option for LAPACK library switching')

# NB ILP64 build is experimental.
# See https://scipy.github.io/devdocs/building/blas_lapack.html for details
option('use-ilp64', type: 'boolean', value: false,
description: 'Use ILP64 (64-bit integer) BLAS and LAPACK interfaces')
option('blas-symbol-suffix', type: 'string', value: 'auto',
description: 'BLAS and LAPACK symbol suffix to use, if any')
option('mkl-threading', type: 'string', value: 'auto',
description: 'MKL threading method, one of: `seq`, `iomp`, `gomp`, `tbb`')
option('use-g77-abi', type: 'boolean', value: false,
description: 'If set to true, forces using g77 compatibility wrappers ' +
'for LAPACK functions. The default is to use gfortran ' +
Expand Down
2 changes: 1 addition & 1 deletion mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ ignore_missing_imports = True
[mypy-scipy.optimize._bglu_dense]
ignore_missing_imports = True

[mypy-scipy.optimize._slsqp]
[mypy-scipy.optimize._slsqplib]
ignore_missing_imports = True

[mypy-scipy.interpolate._dfitpack]
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ test = [
"scikit-umfpack",
"pooch",
"hypothesis>=6.30",
"array-api-strict>=2.3",
"array-api-strict>=2.3.1",
"Cython",
"meson",
'ninja; sys_platform != "emscripten"',
Expand Down
2 changes: 1 addition & 1 deletion requirements/test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ threadpoolctl
# scikit-umfpack # circular dependency issues
pooch
hypothesis>=6.30
array-api-strict>=2.0,<2.1.1
array-api-strict>=2.3.1
Cython
meson
ninja; sys_platform != "emscripten"
1 change: 1 addition & 0 deletions scipy/_build_utils/int64.f2cmap.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{'integer': {'': '@int64_name@'}, 'logical': {'': '@int64_name@'}}
Loading
Loading