Skip to content
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

unsupported instruction `vmovdqu' #284

Closed
timokau opened this issue Sep 25, 2019 · 5 comments
Closed

unsupported instruction `vmovdqu' #284

timokau opened this issue Sep 25, 2019 · 5 comments

Comments

@timokau
Copy link

timokau commented Sep 25, 2019

The fflas-ffpack build on our (NixOS) build server recently failed during the test phase with the following error:

make  check-TESTS
make[3]: Entering directory '/build/source/tests'
make[4]: Entering directory '/build/source/tests'
g++ -DHAVE_CONFIG_H -I. -I..    -O2  -Wall -g  -I..  -fabi-version=6  -msse -msse2 -mavx512f -mavx512vl -mavx512dq -fabi-version=6 -I/nix/store/hvp2g7haqfypign9wq0fif6p70k5ks5k-givaro-4.1.1/include   -fopenmp -c -o test-fdot.o test-fdot.C
g++ -DHAVE_CONFIG_H -I. -I..    -O2  -Wall -g  -I..  -fabi-version=6  -msse -msse2 -mavx512f -mavx512vl -mavx512dq -fabi-version=6 -I/nix/store/hvp2g7haqfypign9wq0fif6p70k5ks5k-givaro-4.1.1/include   -fopenmp -c -o test-finit.o test-finit.C
g++ -DHAVE_CONFIG_H -I. -I..    -O2  -Wall -g  -I..  -fabi-version=6  -msse -msse2 -mavx512f -mavx512vl -mavx512dq -fabi-version=6 -I/nix/store/hvp2g7haqfypign9wq0fif6p70k5ks5k-givaro-4.1.1/include   -fopenmp -c -o test-fscal.o test-fscal.C
/build/cc8a6v2g.s: Assembler messages:
/build/cc8a6v2g.s:109811: Error: unsupported instruction `vmovdqu'
/build/cc8a6v2g.s:109838: Error: unsupported instruction `vmovdqu'

If I read this page right, vmovdqu is part of the avx feature set, which we've disabled with --disable-avx. You can see the full log here.

Is this a mistake on our side or a bug in fflas-ffpack?

@ClementPernet
Copy link
Member

Hi,
Looking at the log and the flags handed to the compiler, it looks like you indeed disable the avx and AVX2 instructions but not the AVX512 ones. I guess fflas-ffpack incorrectly deduce that AVX is enabled by the fact that some higher level AVX set is enabled, thus causing the bug.
We should change the behaviour of these disable option to automatically disable all instruction set above.
Meanwhile, you could fix your problem adding --disable-avx512f --disable-avx512dq --disable-avx512vl to your configure script.

@timokau
Copy link
Author

timokau commented Sep 25, 2019

Thanks for looking into this so quickly! I've adopted your workaround for now.

Disabling higher versions implicitly probably makes sense, there are already quite a few flags we have to pass to disable all the sse and fma versions. From a distro perspective (since we want reproducible builds for the different architectures) it would actually probably make more sense to white list features instead, but #285 would already be a great help.

timokau added a commit to timokau/nixpkgs that referenced this issue Oct 22, 2019
To fix a transient failure on hydra. See
linbox-team/fflas-ffpack#284 for more details.

(cherry picked from commit 47bdb5f)
@dimpase
Copy link
Contributor

dimpase commented Jan 29, 2020

would it make sense to test in ./configure that each of these avx-related extra flags you inject works with the compiler?

@ClementPernet
Copy link
Member

For the record, we are currently moving away from this configure time detection for several reasons (see #184) and will only compile have -march=native by default unless explicitely told by the user not to do so (at config time).

@ClementPernet
Copy link
Member

Closing as it is no longer relevant since we removed the fine grain selection of intruction sets, and use -march=native instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants