Commit 1d1c3e9
ENH: Convert arithm_fp from C universal intrinsics to C++ using Highway (#17)
* 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 arithm_fp to highway.
---------
Co-authored-by: Sayed Adel <seiko@imavr.com>1 parent 5f30d74 commit 1d1c3e9
File tree
3 files changed
+617
-653
lines changed- numpy/_core
- src/umath
3 files changed
+617
-653
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
921 | 921 | | |
922 | 922 | | |
923 | 923 | | |
924 | | - | |
| 924 | + | |
925 | 925 | | |
926 | 926 | | |
927 | 927 | | |
928 | 928 | | |
929 | 929 | | |
930 | 930 | | |
| 931 | + | |
931 | 932 | | |
932 | 933 | | |
933 | 934 | | |
| |||
0 commit comments