Closed duhagppn closed 3 months ago
NEON/SVE methods only work on ARM platforms, so they won't be compiled in on x86. If you pick a method that hasn't been compiled for, it'll revert to the default, which appears to be "Shuffle (AVX2)" in your case.
My guess is that your compiler doesn't support AVX10, as it requires Clang 18 or GCC 14, so it'll do the same thing there and fall back to the default.
Maybe I can change the behaviour to error out if methods aren't compiled.
From your method list, the odd one out would be "Shuffle (VBMI)" is missing - can you confirm?
Shuffle VBMI is listed but doesn't run. avx512, vbmi, affine, affine2x all fail. the only thing I noticed was xorjit-avx512 doesn't display any multiply method (attempted or fallback), whereas everything else (even if failed) would show something.
perhaps --method-list which shows the compiled & usable methods which are available on the CPU?
Erroring out is the more logical conclusion whereas defaulting to an available method is more user friendly so it's up to you.
I've decided to abort if the chosen method hasn't been compiled.
There's generally little reason to ever use the --method
flag, as the best method should be auto-detected. I consider it to be an advanced option (i.e. the user knows what they're doing).
The required CPU feature(s) are listed in the method name. It looks like your CPU supports up to AVX2, so methods relying on newer features (AVX-512/AVX10, AVX512-VBMI, GFNI) will fail.
thanks, updated and it's much better now. The only reason I started to manually select method is because an old seedbox used to default to a slower one, trying each one has become a habit when trying out new seedboxes :nerd_face:
Some hypervisors may be configured to mask the underlying CPU's CPUID. A key reason for the --method
option was actually for this purpose.
Because the CPUID is masked, a --method-list
flag, as you suggest, would actually be pointless because applications can't see all features the CPU supports.
Having said that, even with a masked CPUID, I can't imagine manual overrides to be that beneficial unless the underlying CPU supports GFNI.
wondering as to the accuracy of the method displayed in the progress output and whether this has changed recently. I was using --method clmul-sve2 and recall that "Multiply method" displayed CLMUL, but now it appears to always say Shuffle? am I remembering wrong?
also curious as to affine-avx10 and affine2x-avx10 - both which display as Shuffle, and run on my CPU despite every other affine method resulting in illegal instruction.