-
Notifications
You must be signed in to change notification settings - Fork 4.1k
dynamic dispatch distances_simd #4553
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
dynamic dispatch distances_simd #4553
Conversation
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
887faee to
fe0f6a3
Compare
Summary: `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
Summary: Pull Request resolved: facebookresearch#4553 `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
fe0f6a3 to
7fb1823
Compare
Summary: `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
7fb1823 to
b236273
Compare
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
Summary: `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
b236273 to
b916ec0
Compare
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
Summary: `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
b916ec0 to
00da9fe
Compare
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
Summary: `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
00da9fe to
6910497
Compare
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
Summary: `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
6910497 to
8814705
Compare
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
Summary: `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
8814705 to
1c22fc5
Compare
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
|
|
||
| #include <faiss/utils/distances.h> | ||
|
|
||
| #define AUTOVEC_LEVEL SIMDLevel::ARM_NEON |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the name of the file should be changed to distances_arm_neon.cpp
…DQ, Vl, DL) detection
Summary:
* Added support to detect SIMD instruction set for both `AVX2` and `AVX512F, AVX512VL` related levels
* Added hardware specific unit tests (eg: checks when unit tests are ran on x86 arch then relevant SIMD levels are returned, also respective instructions are executed)
* Reason for explicitly running computation and not relying on `__builtin_cpu_supports("avx512f")` [link](https://stackoverflow.com/questions/48677575/does-gccs-builtin-cpu-supports-check-for-os-support)
* Also, fixes the bug in existing `AVX2` detection
* Incorrect CPUID Bit Check: Function uses `ebx & (1 << 16)` to check for `AVX2` support. This is incorrect because bit 16 in `ebx` is actually used for `AVX-512F`, not `AVX2`.
* Correct Bit for AVX2: Correct bit for detecting AVX2 is bit 5 in `ebx` when `eax = 7` and `ecx = 0`. This is based on Intel's documentation for the CPUID instruction.
* Another bug observed in constructor for SIMDConfig (if env variable is set, the codepath still follows detection via code)
* Improving SIMDConfig to take parameters to its constructor to support and enable injection mechanism for better testing* Adding more unit tests for other Hardware
* Added variable with SIMDConfig to track all possible supported SIMD Levels
Differential Revision: D72937710
Reviewed By: mdouze
Summary: `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
1c22fc5 to
8a37e1b
Compare
Summary: Pull Request resolved: facebookresearch#4553 `fvec_madd` is the first function to test dispatching to AVX and AVX512 distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags. Reviewed By: mnorris11 Differential Revision: D72937708
|
This pull request was exported from Phabricator. Differential Revision: D72937708 |
8a37e1b to
f2273a7
Compare
Summary:
fvec_maddis the first function to test dispatching to AVX and AVX512distances_simd.cpp is split into specialized files distances_avx2.cpp distances_avx512.cpp that are compiled with appropriate flags.
Reviewed By: mnorris11
Differential Revision: D72937708