Commit 90d5f9a
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 a25e0a2 commit 90d5f9a
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 | |
|---|---|---|---|
| |||
902 | 902 | | |
903 | 903 | | |
904 | 904 | | |
905 | | - | |
| 905 | + | |
906 | 906 | | |
907 | 907 | | |
908 | 908 | | |
909 | 909 | | |
910 | 910 | | |
911 | 911 | | |
| 912 | + | |
912 | 913 | | |
913 | 914 | | |
914 | 915 | | |
| |||
0 commit comments