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

Build failure on circle-ci: f951: Error: bad value (skylake-avx512) for -march= switch #1909

Closed
iMichka opened this issue Dec 10, 2018 · 42 comments

Comments

@iMichka
Copy link

iMichka commented Dec 10, 2018

Hi

Release 0.3.4 fails to build on Linux (on our CI), with gcc5 and gcc6. (related issue, https://github.com/Linuxbrew/homebrew-core/pull/10455).

CPU: 36-core 64-bit skylake
Kernel: Linux 4.4.0-139-generic x86_64 GNU/Linux
OS: Ubuntu 16.04.5 LTS (xenial)
Host glibc: 2.23

Last 150 lines from /home/linuxbrew/.cache/Homebrew/Logs/openblas/01.make:
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o spotrf2.o spotrf2.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgetrf2.o sgetrf2.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbbrd.o sgbbrd.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbcon.o sgbcon.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbequ.o sgbequ.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbrfs.o sgbrfs.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbsv.o sgbsv.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbsvx.o sgbsvx.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbtf2.o sgbtf2.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbtrf.o sgbtrf.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgbtrs.o sgbtrs.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgebak.o sgebak.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgebal.o sgebal.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgebd2.o sgebd2.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgebrd.o sgebrd.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgecon.o sgecon.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeequ.o sgeequ.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgees.o sgees.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeesx.o sgeesx.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeev.o sgeev.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeevx.o sgeevx.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgehd2.o sgehd2.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgehrd.o sgehrd.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgelq2.o sgelq2.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgelqf.o sgelqf.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgels.o sgels.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgelsd.o sgelsd.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgelss.o sgelss.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgelsy.o sgelsy.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeql2.o sgeql2.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeqlf.o sgeqlf.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeqp3.o sgeqp3.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeqr2.o sgeqr2.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeqr2p.o sgeqr2p.f
gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeqrf.o sgeqrf.f
f951: Error: bad value (skylake-avx512) for -march= switch
Makefile:602: recipe for target 'sbdsvdx.o' failed
make[2]: *** [sbdsvdx.o] Error 1
make[2]: *** Waiting for unfinished jobs....
f951: Error: bad value (skylake-avx512) for -march= switch
Makefile:602: recipe for target 'sgbcon.o' failed
make[2]: *** [sgbcon.o] Error 1
f951: Error: bad value (skylake-avx512) for -march= switch
Makefile:602: recipe for target 'spotrf2.o' failed
make[2]: *** [spotrf2.o] Error 1
f951: Error: bad value (skylake-avx512) for -march= switch
f951: Error: bad value (skylake-avx512) for -march= switch
Makefile:602: recipe for target 'sgbequ.o' failed
make[2]: *** [sgbequ.o] Error 1
Makefile:602: recipe for target 'sgbsv.o' failed
make[2]: *** [sgbsv.o] Error 1
f951: Error: bad value (skylake-avx512) for -march= switch
f951: Error: bad value (skylake-avx512) for -march= switch
Makefile:602: recipe for target 'sgeequ.o' failed
make[2]: *** [sgeequ.o] Error 1
Makefile:602: recipe for target 'sgeevx.o' failed
make[2]: *** [sgeevx.o] Error 1
f951: Error: bad value (skylake-avx512) for -march= switch
Makefile:602: recipe for target 'sgbrfs.o' failed
make[2]: *** [sgbrfs.o] Error 1
f951: Error: bad value (skylake-avx512) for -march= switch
Makefile:602: recipe for target 'sgbbrd.o' failed
make[2]: *** [sgbbrd.o] Error 1
f951: Error: bad value (skylake-avx512) for -march= switch

Previous openblas versions were fine.

@sjackman
Copy link

This issue occurs when compiling OpenBLAS on an AVX-512 capable machine like Skylake with a version of GCC that does not understand march=skylake-avx512, like GCC 5, which ships with Ubuntu 16.04 LTS (Xenial Xerus). CircleCI recently upgraded their hardware to AVX-512 machines.

@martin-frbg
Copy link
Collaborator

martin-frbg commented Dec 10, 2018

Seems to me your gcc and gfortran are different versions - the gcc recent enough to accept the flag (so the compile test in c_check passes and NO_AVX512 does not get set), but gfortran too old (no separate avx512 test in f_check here as mixing different generations of the two compilers is a bad idea anyway).

@sjackman
Copy link

In that particular failure that's the issue. Thanks for that pointer. We missed that.

Here's a build failure where both gcc and gfortran are the same version, and it fails.

gfortran -O2 -Wall -m64 -fopenmp -fPIC -march=skylake-avx512 -c -o sgeqrf.o sgeqrf.f
f951: Error: bad value (skylake-avx512) for -march= switch
Makefile:602: recipe for target 'sbdsvdx.o' failed

https://circleci.com/gh/Linuxbrew/homebrew-core/22607

@martin-frbg
Copy link
Collaborator

This certainly should not happen. As I wrote above, there is a compile test that gets run very early in the build process to see if AVX512 support is available. If the test fails, NO_AVX512 is set to 1 and SkylakeX is subsequently treated like Haswell.
I seem to remember the original test case did not probe all potential problems, and you seem to be
still building 0.3.3 rather than the recent 0.3.4 release. Would it be possible for you to update to the
current version ?
(Unfortunately while the ci log you linked to is long, it does not contain the full information from the build - though with the high core count it is probably possible that both gcc and gfortran failed in parallel and only the gfortran errors appear in the abbreviated log. Still I wonder what c_check and
subsequent invocations of gcc "saw" )

@sjackman
Copy link

This certainly should not happen. As I wrote above, there is a compile test that gets run very early in the build process to see if AVX512 support is available. If the test fails, NO_AVX512 is set to 1 and SkylakeX is subsequently treated like Haswell.

Can we set NO_AVX512 manually? Is either ./configure NO_AVX512=1 or make NO_AVX512=1 expected to work?

Would it be possible for you to update to the current version ?

Yes. This build is in progress.
https://circleci.com/gh/Linuxbrew/homebrew-core/23003

Unfortunately while the ci log you linked to is long, it does not contain the full information from the build

What information do you need? I can reproduce this build failure locally outside of CircleCI on an AVX-512 machine at work.

@sjackman
Copy link

sjackman commented Dec 10, 2018

On a Haswell machine at work I'm seeing a different build failure.

gcc-5 -O2 -DMAX_STACK_ALLOC=2048 -fopenmp -Wall -m64 -DF_INTERFACE_GFORT -fPIC -DDYNAMIC_ARCH -DSMP_SERVER -DUSE_OPENMP -DNO_WARMUP -DMAX_CPU_NUMBER=2 -DMAX_PARALLEL_NUMBER=1 -DVERSION=\"0.3.4\" -march=skylake-avx512 -DASMNAME=sgemm_itcopy_SKYLAKEX -DASMFNAME=sgemm_itcopy_SKYLAKEX_ -DNAME=sgemm_itcopy_SKYLAKEX_ -DCNAME=sgemm_itcopy_SKYLAKEX -DCHAR_NAME=\"sgemm_itcopy_SKYLAKEX_\" -DCHAR_CNAME=\"sgemm_itcopy_SKYLAKEX\" -DNO_AFFINITY -DTS=_SKYLAKEX -I.. -DBUILD_KERNEL -DTABLE_NAME=gotoblas_SKYLAKEX -UDOUBLE  -UCOMPLEX -c -UDOUBLE -UCOMPLEX ../kernel/x86_64/sgemm_tcopy_16_skylakex.c -o sgemm_itcopy_SKYLAKEX.o
In file included from /home/linuxbrew/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/immintrin.h:45:0,
                 from ../kernel/x86_64/sgemm_kernel_16x4_skylakex.c:57:
../kernel/x86_64/sgemm_kernel_16x4_skylakex.c: In function 'sgemm_kernel_SKYLAKEX':
/home/linuxbrew/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h:239:1: error: inlining failed in call to always_inline '_mm512_setzero_ps': target specific option mismatch
 _mm512_setzero_ps (void)
 ^
../kernel/x86_64/sgemm_kernel_16x4_skylakex.c:90:8: error: called from here
  row3d = _mm512_setzero_ps();     \
        ^
../kernel/x86_64/sgemm_kernel_16x4_skylakex.c:797:4: note: in expansion of macro 'INIT64x4'
    INIT64x4()
    ^

https://gist.github.com/sjackman/aaf78d42c2bff38bc16aeca085e9996e#file-01-make-L1600-L1612

@martin-frbg
Copy link
Collaborator

Yes I think make NO_AVX512=1 would work.
Build failure on Haswell could be related to gcc bug 78451 i.e. you may need to have gcc 7.x for SkylakeX builds now.

@sjackman
Copy link

sjackman commented Dec 10, 2018

We'll try make NO_AVX512=1 and see if it helps.

Bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78451 indicates that this issue was resolved in GCC 7.x. It doesn't indicate if there's a work-around for earlier versions of GCC. Previous versions of OpenBLAS compiled fine on Haswell with GCC 5. Do you know if there's a work around for compiling OpenBLAS on Haswell with GCC 5?

@brada4
Copy link
Contributor

brada4 commented Dec 10, 2018

You need matching GCC an GFORTRAN, v5 would disable AVX-512 code reducing it to HASWELL code, v6 and later (matching versions) from Ubuntu compiler PPA wil compile everything
make CC=gcc-8 FC=gfortran-8
#1797
@martin-frbg do you think AVX-512 compiler support fixups should be described in FAQ?

@sjackman
Copy link

This build on Haswell uses gcc and gfortran 5.5.0 but fails. /usr/bin/gcc is 5.4.0 and is not being used. See https://gist.github.com/sjackman/aaf78d42c2bff38bc16aeca085e9996e#file-01-make-L1600-L1612

@brada4
Copy link
Contributor

brada4 commented Dec 10, 2018

There is no mention of make parameters in whole log.
There is at least USE_OPENMP=1 passed to make
5.5 < 6.0 ? or you see otherwise?

@sjackman
Copy link

sjackman commented Dec 10, 2018

There is no mention of make parameters in whole log.

See https://gist.github.com/sjackman/aaf78d42c2bff38bc16aeca085e9996e#file-01-make-L3-L8

make CC=gcc-5 FC=gfortran libs netlib shared

gcc-5 is GCC 5.5.0 and gfortran is also 5.5.0.

There is at least USE_OPENMP=1 passed to make

I don't believe so.

5.5 < 6.0 ? or you see otherwise?

We're using gcc 5.5.0 and gfortran 5.5.0.

@iMichka had one CircleCI build that experimented with using GCC 6.0. That's not the build shown in this gist.

@brada4
Copy link
Contributor

brada4 commented Dec 10, 2018

I dont know what your compiler does wrong.
gcc 5.3.1 and gfortran 5.3.1 included with your Linux distribution correctly disables AVX-512.

@martin-frbg
Copy link
Collaborator

martin-frbg commented Dec 10, 2018

What fails on Haswell is the SkylakeX part of the DYNAMIC_ARCH support, which is the only component
that currently uses AVX512 instructions. Adding NO_AVX512=1 to the make options should work around this. (If it does not, the alternative would be to supply a DYNAMIC_LIST argument with a whitespace-separated list of DYNAMIC_ARCH targets to include instead of the hardcoded one. This was added some months ago to solve issue #1595)

@sjackman
Copy link

There is at least USE_OPENMP=1 passed to make

I don't believe so.

The environment variables DYNAMIC_ARCH=1 and USE_OPENMP=1 are defined.
See https://github.com/Linuxbrew/homebrew-core/blob/b6a0f6b3255441d34b7a7ab76cc5d36961cd6414/Formula/openblas.rb#L29-L34

@sjackman
Copy link

@martin-frbg Ah! I understand now! Thanks for the explanation, Martin. I'm testing make NO_AVX512=1 now.

@sjackman
Copy link

@iMichka make NO_AVX512=1 is a good short-term workaround. It'd be nice to build bottles that have dynamic run-time support for AVX-512 using GCC ≥ 6.

@brada4
Copy link
Contributor

brada4 commented Dec 10, 2018

I cannot make it fail setting 2 parameters in env and others in command line under ubuntu 16.04 or 14.04
What is cc --version and f95 --version output , none shoud be used BUT....

@sjackman
Copy link

make DYNAMIC_ARCH=1 USE_OPENMP=1 NO_AVX512=1 worked for me on Haswell!
@iMichka is testing it out over here: https://circleci.com/gh/Linuxbrew/homebrew-core/23005

@sjackman
Copy link

@brada4

$ gcc --version | head -n1
gcc (Homebrew gcc 5.5.0_4) 5.5.0
$ cc --version | head -n1
cc (Homebrew gcc 5.5.0_4) 5.5.0
$ gfortran --version | head -n1
GNU Fortran (Homebrew gcc 5.5.0_4) 5.5.0
$ f95 --version
bash: f95: command not found

@iMichka
Copy link
Author

iMichka commented Dec 10, 2018

I confirm that NO_AVX512=1 worked on CI (which has skylake).

@sjackman
Copy link

@martin-frbg @brada4 Thanks for your help troubleshooting, Martin and Andrew!
@iMichka Thanks for implementing the fix, Michka.

@brada4
Copy link
Contributor

brada4 commented Dec 11, 2018

@iMichka skylake and skylake x are different cpu series.
I do not understand how it is derived from ci log saying

CPU: dual-core 64-bit haswell

The root cause is broken compilers being used on top of ubuntu system. OpenBLAS will build identically on any x86_64 system.

@sjackman
Copy link

skylake and skylake x are different cpu series.

They may be different CPU series. As far as I can tell, Skylake and Skylake-X share the same intel microarchitecture, namely Skylake.

See https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures
and https://en.wikipedia.org/wiki/Skylake_(microarchitecture)
and https://en.wikichip.org/wiki/intel/cores/skylake_x

Skylake X (SKL-X) is the processor core for Intel's high-end desktop (HEDT) microprocessor line based on the Skylake microarchitecture serving as a successor to Broadwell E.

@sjackman
Copy link

I do not understand how it is derived from ci log saying

CPU: 36-core 64-bit skylake

See https://circleci.com/gh/Linuxbrew/homebrew-core/23005

@sjackman
Copy link

OpenBLAS will build identically on any x86_64 system.

Does OpenBLAS change its default configuration based on the system on which it is being compiled?

@brada4
Copy link
Contributor

brada4 commented Dec 11, 2018

DYNAMIC_ARCH=1 still detects architecture and fails on unhandled CPU, that gives info on new CPUIDs here. Otherwise there is no other side effect of this detection.
Extra option TARGET=CORE2 or any other supported target will skip past this check in any case.

Building without DYNAMIC_ARCH will detect target core and build for that architecture only (to save time of casual user typing make primarily, and the hidden meaning above)

e.g. AVX-512 support is missing in Ubuntu 16.04 gcc and in Ubuntu 14 gcc and binutils
AVX2 support is missing in RHEL6/CentOS6 binutils
Thats oldest practically used today
Both supply good tools somewhere in package management, there is code to detect absence of AVX-512, and silently downgrade, but nothing for AVX2 was implemented years ago.

@martin-frbg
Copy link
Collaborator

martin-frbg commented Dec 11, 2018

The default maximum number of threads is determined from the number of cores detected on the build system. And unless you build with DYNAMIC_ARCH=1 or specify a build TARGET, the hand-optimized math kernels will be chosen to be the best match for the build host.
As far as OpenBLAS is concerned, the difference between Skylake architecture in general and Skylake X is the availability of AVX512 on the latter. A 36-core system is most likely some generation of Intel Xeon, but I do not have the time to dig through your ci log to see if it has some more detailed model information like /proc/cpuinfo contents.

@sjackman
Copy link

As far as OpenBLAS is concerned, the difference between Skylake architecture in general and Skylake X is the availability of AVX512 on the latter.

Ah, I didn't realize AVX-512 doesn't come with all Skylake CPUs. Thanks for the info.

A 36-core system is most likely some generation of Intel Xeon

cpu family      : 6
model           : 85
model name      : Intel(R) Xeon(R) Gold 6150 CPU @ 2.70GHz

@martin-frbg
Copy link
Collaborator

Xeon Gold 6150 definitely has AVX512, so it would make sense to update the compiler to make use of it if you intend to run any calculations that involve SGEMM or DGEMM.

@brada4
Copy link
Contributor

brada4 commented Dec 11, 2018

It is also rather weird that compiling GCC under same conditions with GFORTRAN produces later with different architecture parameter set. Probably worth looking into it - in case of (probably) latest gfortran5 not provding avx-512 - it could be blacklisted automatically by same CC detection routine.

There are also Intel MIC / Xeon Phi / Kinghts* accelerator boards running CentOS as firmware that provide different incompatible AVX-512 instructions and are treated as Haswell

@martin-frbg
Copy link
Collaborator

Seems gcc 6.1.0 was the first version to support the skylake-avx512 flag. I still do not see how an older gcc would manage to pass the AVX512 compatibility test and how -march=skylake-avx512 ends up in the gfortran flags unless (1) this was a build on actual SkylakeX hardware and (2) the test passed.
I am also wondering now if having this in the FCOMMON_OPT when building on Skylake X would not
actually break the backwards compatibility intended with DYNAMIC_ARCH. (There is only one round of fortran builds performed to create a common LAPACK for all cpu targets, so if the compiler is free to use avx512 instructions we could end up with a library where only the BLAS adapts to the capabilities of the system)

@brada4
Copy link
Contributor

brada4 commented Dec 11, 2018

I saw wonderful option in Circle CI documentation called "retry failed build without cache"
It could be that interim compiler files are cached at some point and next build just chews old mistakes.
OpenBLAS build is very unsuitable for most of such caches since same source files are built into multiple objects depending on defines in command line.

DYNAMIC_ARCH=1 TARGET=SKYLAKEX adds -march=skylake-avx512 to all shared files.

@sjackman
Copy link

I still do not see how an older gcc would manage to pass the AVX512 compatibility test

Ah, I see what's going on here. Homebrew / Linuxbrew use a wrapper around the compiler (named Superenv) that removes unsupported options. I'm guessing that OpenBLAS is testing whether cc -march=skylake-avx512, and it appears to work, because Superenv is removing that option. That feature is disabled while running ./configure and enabled while running make. I see that OpenBLAS doesn't appear to have a separate ./configure step, so the feature is enabled. Is there a make target that I can run to configure OpenBLAS before make all? I can disable this feature while configuring OpenBLAS.

A second reason for this feature is that we build precompiled binary packages called bottles that are intended to work on any X86-64 platform. For most packages, using -march=skylake-avx512 would result in a binary that required AVX-512 and wouldn't work on older systems. I think that's not the case for OpenBLAS, because it selects which instructions to use at run time.

@brada4
Copy link
Contributor

brada4 commented Dec 11, 2018

DYNAMIC_ARCH=1 TARGET=SKYLAKEX adds -march=skylake-avx512 to all shared files.

That will generate SIGILL soon as the tests proceed on my VM
@sjackman - add TARGET=CORE2 to build flags , that should avoid confusion. e.g. fedora has that since ages....

@sjackman
Copy link

Xeon Gold 6150 definitely has AVX512, so it would make sense to update the compiler to make use of it if you intend to run any calculations that involve SGEMM or DGEMM.

I develop tools large genome sequence assembly, so I use predominantly integer instructions and hardly any floating point instructions. We have a trillion characters of A, C, G, T, and then do lots of pattern matching. 512-bit integer instructions (like shift and logical ops) are useful though.

@sjackman
Copy link

sjackman commented Dec 11, 2018

@brada4 Thanks for the suggestion for TARGET=CORE2. We're using DYNAMIC_ARCH=1 NO_AVX512=1 now. Any idea which architecture it will target?

@brada4
Copy link
Contributor

brada4 commented Dec 11, 2018

check for march=skylake-avx512 in latest build log, having it there is wrong.
gcc actually passed AVX-512 assembler/intrinsics test , so result is usable with fortran part being build with unset arch.

@martin-frbg
Copy link
Collaborator

NO_AVX512=1 will use Haswell code on Skylake X, and no cpu-specific compiler options at all on any system (unless your CFLAGS or the default specs file of the compiler defines a specific -march= setting).

@sjackman
Copy link

Sounds like that should work for us then. The same wrapper script adds -march=core2 to the compiler command line.

Thanks for all your help, Martin and Andrew. Shall we close this issue?

@brada4
Copy link
Contributor

brada4 commented Dec 11, 2018

We will remove the overbroad -march= flag either way. You can leave it open even immediate problem is tweaked around.

@brada4
Copy link
Contributor

brada4 commented Dec 11, 2018

Here it goes.

make TARGET=SKYLAKEX DYNAMIC_ARCH=1
...
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./sblat1
 Real BLAS Test Program Results


 Test of subprogram number  1             SDOT 

Program received signal SIGILL: Illegal instruction.

Backtrace for this error:
#0  0x7fab58a405cd in ???
#1  0x7fab58a3f813 in ???
#2  0x7fab5812915f in ???
#3  0x40a170 in ???
#4  0x409060 in ???
#5  0x409d3e in ???
#6  0x40804e in ???
#7  0x7fab58113f49 in ???
#8  0x4080d9 in ???
        at ../sysdeps/x86_64/start.S:120
#9  0xffffffffffffffff in ???
make[1]: *** [Makefile:8: level1] Illegal instruction (core dumped)

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

Successfully merging a pull request may close this issue.

4 participants