Commit a25e0a2
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 15aa92d commit a25e0a2
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 | |
|---|---|---|---|
| |||
965 | 965 | | |
966 | 966 | | |
967 | 967 | | |
968 | | - | |
| 968 | + | |
969 | 969 | | |
970 | 970 | | |
971 | 971 | | |
972 | 972 | | |
973 | 973 | | |
974 | 974 | | |
| 975 | + | |
975 | 976 | | |
976 | 977 | | |
977 | 978 | | |
| |||
0 commit comments