Which precompiled version should I use?
As of version 2.12, the following precompiled versions are available:
| MSVC |
ICCC |
yafu-x64-sse41.exe
yafu-x64-avx2.exe
yafu-x64-avx512.exe
yafu-x64-avx512-ifma.exe |
yafu-x64-intel-sse41.exe
yafu-x64-intel-avx2.exe
yafu-x64-intel-avx512.exe
yafu-x64-intel-avx512-ifma.exe |
SSE41, AVX2, AVX512, and AVX512-IFMA refer to instruction set extensions that the versions respectively support.
SIQS, ECM, and YAFU's prime sieve all get progressively faster with more modern extensions.
See here for more information:
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions
https://en.wikipedia.org/wiki/AVX-512#CPUs_with_AVX-512
The "Intel" versions are compiled with Intel C++ Compiler Classic and may be
slightly faster than the equivalent MSVC-compiled version.
They should work on Zen4 or newer AMD CPUs (but possibly not older AMD).
Pick the best one that your CPU supports.
Roughly speaking:
- If you have an Ice Lake, Tiger Lake, Rocket Lake, or Sapphire Rapids CPU, use AVX512-IFMA.
- If you have an Intel SkylakeX or certain Cannon Lake or Cascade Lake CPUs, use AVX512.
- If you have an Intel Haswell CPU or newer (newer than 2013), use AVX2.
- If you have a Zen4 or Zen5 AMD CPU, use AVX512-IFMA.
- If you have another AMD CPU newer than 2015, use AVX2 (MSVC).
- Otherwise use SSE41.