You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The -Ofast optimization level makes AVX version unable to finish the execution.
However, it does not happen on AVX2 version.
If we change the optimization level to -O3, the problem would disappear.
The GCC version has nothing to do with the problem.
The difference of the assembly code:
-O3
vucomisd %xmm3, %xmm0
jp .L114
jne .L114
-Ofast
vcomisd %xmm3, %xmm0
jne .L114
These code happens when the __m256d type variable is compared to another constant value or uses its value in the logical operation.
The jp instruction would jump if one of the previous comparison operand is NaN.
The NaN value are defined in the IEEE floating-point standard.
The bitwise operation in the PoW might created the NaN value.
However, the NaN value is not handled in the -Ofast optimization level since it optimizes out the jp instruction.
The
BUILD_AVX=1
command option would enableAVX
code implementation of dcurl.However, the current
AVX
code has two different implementations.Not the default. Need to modify
Makefile
and the source code to use it.The default.
The issue is focused on using the correct
AVX
code implementation automatically based on the hardware supported instruction.The text was updated successfully, but these errors were encountered: