• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IntelPython / dpnp / 43256111559
84%

Build:
DEFAULT BRANCH: master
Ran 12 Nov 2026 05:24PM UTC
Jobs 1
Files 268
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 Nov 2026 04:12PM UTC coverage: 84.269% (-0.2%) from 84.467%
43256111559

push

github

web-flow
Add `cho_factor` and `cho_solve` to `dpnp.scipy.linalg` (#3116)

Add SciPy-compatible `dpnp.scipy.linalg.cho_factor` and
`dpnp.scipy.linalg.cho_solve`, including batched input as in SciPy 1.18
(#3096).

### Implementation

- `cho_factor` uses the existing `potrf` and `potrf_batch` bindings.
Only the referenced triangle is copied, in one pass, into a zeroed
C-order buffer, which matches the SciPy 1.18 output. With
`overwrite_a=True`, a 2-D, writable input of the result dtype that is C-
or F-contiguous is factored in place. As in SciPy, a 0-D or 1-D input is
viewed as a matrix.
- `cho_solve` uses a new LAPACK `potrs` binding for a 2-D factor. For a
batch of factors it calls a new BLAS `trsm_batch` binding twice, since
oneMKL `potrs_batch` is much slower (MKLD-20341).
- A single factor (2-D, or with size-1 batch dimensions) is not
broadcast to a batched right-hand side: the batch is folded into the
columns of one `potrs` call. For a real type on GPU with more than 16
folded columns and a batch of at most 32, the factor is shared by the
batch in `trsm_batch` (stride 0) instead, because double-precision
`trsm` on Xe GPUs slows down by up to 3.6x above 16 columns.
- Batch dimensions broadcast as in `lu_solve`, and a broadcast
right-hand side is copied without being materialized first.
- `lower` can also be the batch-shaped array SciPy 1.18 returns, or a
sequence, if all its values are equal. An empty `lower` raises
`ValueError`, as in SciPy, except in `cho_solve` for a zero-size batch
of factors.
- With `overwrite_b=True`, `cho_solve` solves in a copy when `b`
overlaps the factor (SciPy overwrites the factor).
- With `check_finite=True`, both finiteness checks of `cho_solve` are
submitted before the first host sync.

### Differences from SciPy

Documented in the docstrings and covered by tests:
- `cho_factor` returns `lower` as a Python bool; SciPy 1.18 returns an
array tiled to the batch shape.
- `cho_solve` supports a zero-size batch; SciPy raises.
- `low... (continued)

1838 of 3082 branches covered (59.64%)

Branch coverage included in aggregate %.

334 of 467 new or added lines in 7 files covered. (71.52%)

30051 of 34760 relevant lines covered (86.45%)

40081.05 hits per line

Uncovered Changes

Lines Coverage ∆ File
86
47.12
dpnp/libtensor/extensions/lapack/potrs.cpp
47
63.07
dpnp/libtensor/extensions/blas/trsm_batch.cpp
Jobs
ID Job ID Ran Files Coverage
1 43256111559.1 12 Nov 2026 05:24PM UTC 268
84.27
GitHub Action Run
Source Files on build 43256111559
  • Tree
  • List 268
  • Changed 7
  • Source Changed 5
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #43256111559
  • d2b5374e on github
  • Prev Build on master (#43220574206)
  • Next Build on master (#43283723475)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc