Compilation on processor without SSE2 tries to build with it
Brought to you by:
rwhaley,
tonyc040457
On one of my older machines I'm not able to update ATLAS to new 3.10.x - all was working well with 3.8.4. The machine is two processor Pentium III 1GHz. I'm attaching the error log. Is this error, or by any chance ATLAS requires SSE2 now? I will be happy to provide any additional details.
Andrzej,
No, ATLAS does *not* require SSE, or any vectorization. At one point before the release, I installed on both a PIII and a PentiumPRO successfully, but the machines are so slow, I don't think I installed again after the final changes were made :(
Unfortunately, your log files are completely empty (only the header is printed). Was there anything else printed to the screen?
Cheers,
Clint
Hi, only error I've seen is what at the end of Stage1.log:
gcc -fPIC -m32 -x assembler-with-cpp -DL2SIZE=4194304 -I/tmp/yaourt-tmp-aginiewicz/aur-atlas-lapack/src/ATLAS/build/include -I/tmp/yaourt-tmp-aginiewicz/aur-atlas-lapack/src/ATLAS/build/..//include -I/tmp/yaourt-tmp-aginiewicz/aur-atlas-lapack/src/ATLAS/build/..//include/contrib -DAdd_ -DF77_INTEGER=int -DStringSunStyle -DATL_OS_Linux -DATL_ARCH_PIII -DATL_CPUMHZ=999 -DATL_SSE1 -DATL_GAS_x8632 -m32 -DATL_FULL_LAPACK -DATL_NCPU=2 -DDREAL -o ATL_dset_xp1yp0aXbX.o -c ATL_dset_xp1yp0aXbX.c
ATL_dset_xp1yp0aXbX.c:89:5: error: #error "This routine requires SSE2"
so it seems this is the culprit.
Cheers,
Andrzej.
OK, this looks like incorrect testing on my part. I confirm this as a bug in ATLAS, and have moved this to the bugtracker.
So that I can create an errata entry, can you try the following fix:
Edit your ATLAS/tune/blas/level/SET/set_x86.c, and change lines 86-87 from:
#ifndef ATL_SSE2
#error "This routine requires SSE2"
to:
#ifndef ATL_SSE1
#error "This routine requires SSE1"
Let me know, and thanks for this bug report!
Clint
After this change, it stops in the same way, but in different place:
gcc -fPIC -m32 -DL2SIZE=4194304 -I/tmp/yaourt-tmp-aginiewicz/aur-atlas-lapack/src/ATLAS/build/include -I/tmp/yaourt-tmp-aginiewicz/aur-atlas-lapack/src/ATLAS/build/..//include -I/tmp/yaourt-tmp-aginiewicz/aur-atlas-lapack/src/ATLAS/build/..//include/contrib -DAdd_ -DF77_INTEGER=int -DStringSunStyle -DATL_OS_Linux -DATL_ARCH_PIII -DATL_CPUMHZ=999 -DATL_SSE1 -DATL_GAS_x8632 -m32 -DATL_FULL_LAPACK -DATL_NCPU=2 -DATL_UCLEANM -DATL_UCLEANN -DATL_UCLEANK -DATL_BETA=0 -c -x assembler-with-cpp ATL_supNBmm0_1_0_b0.c
ATL_supNBmm0_1_0_b0.c:87:5: error: #error "This routine requires SSE2!"
OK, another example of the same incorrect guard. \
Change lines 36-37 of ATLAS/tune/blas/gemm/CASES/ATL_smm6x1x80_sse.c from:
#ifndef ATL_SSE2
#error "This routine requires SSE2!"
to:#ifndef ATL_SSE1
#error "This routine requires SSE1!"
You may have to start a new install, since sometimes dying in the middle of cleanup can create a malformed library.
Let me know!
Clint
It worked now, build finished. Thanks for ultra-fast-fixing! I'm running make check and make ptcheck now to verify that all went well, but I hope it will be OK.
Andrzej.
make check did not found any issues, so all seems well. Thanks again.
Thank you very much for the bug report and confirmation of the fix. You have created the first ATLAS bug errata entry:
http://math-atlas.sourceforge.net/errata.html#piiisse2
NOTE TO SELF: I have not yet modifed either the developer or stable basefiles to fix.
Thanks,
Clint
I have made the fixes to the developer basefiles.
Wonderful! Thank you for your great work on really useful software!
fixed by 3.10.1 release (changes made to basefiles before).