Commit 5f30d74
ENH: Convert minmax from C universal intrinsics to C++ using Highway (#16)
* ENH, SIMD: Initial implementation of Highway wrapper
A thin wrapper over Google's Highway SIMD library to simplify its interface.
This commit provides the implementation of that wrapper, consisting of:
- simd.hpp: Main header defining the SIMD namespaces and configuration
- simd.inc.hpp: Template header included multiple times with different namespaces
The wrapper eliminates Highway's class tags by:
- Using lane types directly which can be deduced from arguments
- Leveraging namespaces (np::simd and np::simd128) for different register widths
A README is included to guide usage and document design decisions.
* SIMD: Update wrapper with improved docs and type support
- Fix hardware/platform terminology in documentation for clarity
- Add support for long double in template specializations
- Add kMaxLanes constant to expose maximum vector width information
- Follows clang formatting style for consistency with NumPy codebase.
* SIMD: Improve isolation and constexpr handling in wrapper
- Add anonymous namespace around implementation to ensure each
translation unit gets its own constants based on local flags
- Use HWY_LANES_CONSTEXPR for Lanes function to ensure proper
constexpr evaluation across platforms
* Update Highway submodule to latest master
* SIMD: Fix compile error by using MaxLanes instead of Lanes for array size
Replace hn::Lanes(f64) with hn::MaxLanes(f64) when defining the index array
size to fix error C2131: "expression did not evaluate to a constant". This error
occurs because Lanes() isn't always constexpr compatible, especially with
scalable vector extensions. MaxLanes() provides a compile-time constant value
suitable for static array allocation and should be used with non-scalable SIMD
extensions when defining fixed-size arrays.
* Convert minmax to highway.
---------
Co-authored-by: Sayed Adel <seiko@imavr.com>1 parent 1b3eaa7 commit 5f30d74
File tree
3 files changed
+527
-477
lines changed- numpy/_core
- src/umath
3 files changed
+527
-477
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
984 | 984 | | |
985 | 985 | | |
986 | 986 | | |
987 | | - | |
| 987 | + | |
988 | 988 | | |
989 | 989 | | |
990 | 990 | | |
991 | 991 | | |
992 | 992 | | |
993 | 993 | | |
| 994 | + | |
994 | 995 | | |
995 | 996 | | |
996 | 997 | | |
| |||
0 commit comments