diff options
| author | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2021-10-25 01:41:34 +0000 |
|---|---|---|
| committer | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2021-10-25 01:41:34 +0000 |
| commit | 36aa8446c8a741b8294be53e230eeacc17e4ab41 (patch) | |
| tree | a4b0944cb797ac5a98ca995b9f82a292e09f0e7d /dev-python/numpy/files | |
| parent | 71b30986f32c82b30a7cf8ddac509693bd0f2721 (diff) | |
| download | baldeagleos-repo-36aa8446c8a741b8294be53e230eeacc17e4ab41.tar.gz baldeagleos-repo-36aa8446c8a741b8294be53e230eeacc17e4ab41.tar.xz baldeagleos-repo-36aa8446c8a741b8294be53e230eeacc17e4ab41.zip | |
Adding metadata
Diffstat (limited to 'dev-python/numpy/files')
| -rw-r--r-- | dev-python/numpy/files/numpy-1.21.3-unaligned-array.patch | 45 |
1 files changed, 45 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; |
