diff options
author | Michał Górny <mgorny@gentoo.org> | 2021-10-24 22:50:38 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2021-10-24 22:52:01 +0200 |
commit | fb1e7ebd3b199eadab7869aca983bc5e8b3ead85 (patch) | |
tree | 276e01dc087a43a90918aa5730d2423f16a07d99 | |
parent | dev-python/sentry-sdk: Remove old (diff) | |
download | gentoo-fb1e7ebd3b199eadab7869aca983bc5e8b3ead85.tar.gz gentoo-fb1e7ebd3b199eadab7869aca983bc5e8b3ead85.tar.bz2 gentoo-fb1e7ebd3b199eadab7869aca983bc5e8b3ead85.zip |
dev-python/numpy: Backport unaligned access fix
Closes: https://bugs.gentoo.org/805974
Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r-- | dev-python/numpy/files/numpy-1.21.3-unaligned-array.patch | 45 | ||||
-rw-r--r-- | dev-python/numpy/numpy-1.21.1-r1.ebuild (renamed from dev-python/numpy/numpy-1.21.1.ebuild) | 1 | ||||
-rw-r--r-- | dev-python/numpy/numpy-1.21.2-r1.ebuild (renamed from dev-python/numpy/numpy-1.21.3.ebuild) | 1 | ||||
-rw-r--r-- | dev-python/numpy/numpy-1.21.3-r1.ebuild (renamed from dev-python/numpy/numpy-1.21.2.ebuild) | 1 |
4 files changed, 48 insertions, 0 deletions
diff --git a/dev-python/numpy/files/numpy-1.21.3-unaligned-array.patch b/dev-python/numpy/files/numpy-1.21.3-unaligned-array.patch new file mode 100644 index 000000000000..8d04cc0968dc --- /dev/null +++ b/dev-python/numpy/files/numpy-1.21.3-unaligned-array.patch @@ -0,0 +1,45 @@ +From d9bbd60d0f2896d1b1f865e6035dccb12db4b1a0 Mon Sep 17 00:00:00 2001 +From: Sebastian Berg <sebastian@sipsolutions.net> +Date: Sat, 23 Oct 2021 22:54:21 -0500 +Subject: [PATCH] BUG: Do not use nonzero fastpath on unaligned arrays + +The fast-path does not handle unalgined access, previously only +bools had a fast path (and bools are by definition always aligned +since they are stored in a single byte/char). + +Closes gh-19592 +--- + numpy/core/src/multiarray/item_selection.c | 19 +++++++------------ + 1 file changed, 7 insertions(+), 12 deletions(-) + +diff --git a/numpy/core/src/multiarray/item_selection.c b/numpy/core/src/multiarray/item_selection.c +index ee66378a938..33d378c2b58 100644 +--- a/numpy/core/src/multiarray/item_selection.c ++++ b/numpy/core/src/multiarray/item_selection.c +@@ -2398,19 +2398,14 @@ PyArray_CountNonzero(PyArrayObject *self) + npy_intp *strideptr, *innersizeptr; + NPY_BEGIN_THREADS_DEF; + +- // Special low-overhead version specific to the boolean/int types + dtype = PyArray_DESCR(self); +- switch(dtype->kind) { +- case 'u': +- case 'i': +- case 'b': +- if (dtype->elsize > 8) { +- break; +- } +- return count_nonzero_int( +- PyArray_NDIM(self), PyArray_BYTES(self), PyArray_DIMS(self), +- PyArray_STRIDES(self), dtype->elsize +- ); ++ /* Special low-overhead version specific to the boolean/int types */ ++ if (PyArray_ISALIGNED(self) && ( ++ PyDataType_ISBOOL(dtype) || PyDataType_ISINTEGER(dtype))) { ++ return count_nonzero_int( ++ PyArray_NDIM(self), PyArray_BYTES(self), PyArray_DIMS(self), ++ PyArray_STRIDES(self), dtype->elsize ++ ); + } + + nonzero = PyArray_DESCR(self)->f->nonzero; diff --git a/dev-python/numpy/numpy-1.21.1.ebuild b/dev-python/numpy/numpy-1.21.1-r1.ebuild index 080c7b210c95..b25c2008d413 100644 --- a/dev-python/numpy/numpy-1.21.1.ebuild +++ b/dev-python/numpy/numpy-1.21.1-r1.ebuild @@ -45,6 +45,7 @@ BDEPEND=" PATCHES=( "${FILESDIR}"/numpy-1.21.0-no-hardcode-blasv2.patch + "${FILESDIR}"/numpy-1.21.3-unaligned-array.patch ) distutils_enable_tests pytest diff --git a/dev-python/numpy/numpy-1.21.3.ebuild b/dev-python/numpy/numpy-1.21.2-r1.ebuild index cd54f4bc4a63..be58d11ab9f4 100644 --- a/dev-python/numpy/numpy-1.21.3.ebuild +++ b/dev-python/numpy/numpy-1.21.2-r1.ebuild @@ -45,6 +45,7 @@ BDEPEND=" PATCHES=( "${FILESDIR}"/numpy-1.21.0-no-hardcode-blasv2.patch + "${FILESDIR}"/numpy-1.21.3-unaligned-array.patch ) distutils_enable_tests pytest diff --git a/dev-python/numpy/numpy-1.21.2.ebuild b/dev-python/numpy/numpy-1.21.3-r1.ebuild index cd54f4bc4a63..d9b1d09193dd 100644 --- a/dev-python/numpy/numpy-1.21.2.ebuild +++ b/dev-python/numpy/numpy-1.21.3-r1.ebuild @@ -45,6 +45,7 @@ BDEPEND=" PATCHES=( "${FILESDIR}"/numpy-1.21.0-no-hardcode-blasv2.patch + "${FILESDIR}"/${P}-unaligned-array.patch ) distutils_enable_tests pytest |