Opened 10 years ago
Closed 9 years ago
#44533 closed defect (fixed)
atlas +gcc48 does not build
Reported by: | eschnett (Erik Schnetter) | Owned by: | Veence (Vincent) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.3.1 |
Keywords: | Cc: | ||
Port: | atlas |
Description
The command
sudo port install atlas +gcc48
aborts with the error message
:info:build make[2]: *** No rule to make target `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_atlas/atlas/work/ATLAS/build/..//CONFIG/ARCHS/Core264AVX.tar.bz2', needed by `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_atlas/atlas/work/ATLAS/build/ARCHS/Core264AVX'. Stop.
I attach the full log file.
Attachments (1)
Change History (9)
Changed 10 years ago by eschnett (Erik Schnetter)
comment:1 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
Owner: | changed from macports-tickets@… to vince@… |
---|---|
Port: | vince added |
comment:2 Changed 10 years ago by Veence (Vincent)
Ooops. AVX instructions are enabled, and they should not. Can you give me the output of
sysctl -a hw
Thanks!
comment:3 Changed 10 years ago by eschnett (Erik Schnetter)
$ sysctl -a hw hw.ncpu: 8 hw.byteorder: 1234 hw.memsize: 17179869184 hw.activecpu: 8 hw.physicalcpu: 4 hw.physicalcpu_max: 4 hw.logicalcpu: 8 hw.logicalcpu_max: 8 hw.cputype: 7 hw.cpusubtype: 4 hw.cpu64bit_capable: 1 hw.cpufamily: 526772277 hw.cacheconfig: 8 2 2 8 0 0 0 0 0 0 hw.cachesize: 17179869184 32768 262144 8388608 0 0 0 0 0 0 hw.pagesize: 4096 hw.busfrequency: 100000000 hw.busfrequency_min: 100000000 hw.busfrequency_max: 100000000 hw.cpufrequency: 2700000000 hw.cpufrequency_min: 2700000000 hw.cpufrequency_max: 2700000000 hw.cachelinesize: 64 hw.l1icachesize: 32768 hw.l1dcachesize: 32768 hw.l2cachesize: 262144 hw.l3cachesize: 8388608 hw.tbfrequency: 1000000000 hw.packages: 1 hw.optional.floatingpoint: 1 hw.optional.mmx: 1 hw.optional.sse: 1 hw.optional.sse2: 1 hw.optional.sse3: 1 hw.optional.supplementalsse3: 1 hw.optional.sse4_1: 1 hw.optional.sse4_2: 1 hw.optional.x86_64: 1 hw.optional.aes: 1 hw.optional.avx1_0: 1 hw.optional.rdrand: 1 hw.optional.f16c: 1 hw.optional.enfstrg: 1 hw.optional.fma: 0 hw.optional.avx2_0: 0 hw.optional.bmi1: 0 hw.optional.bmi2: 0 hw.optional.rtm: 0 hw.optional.hle: 0 hw.cputhreadtype: 1 hw.machine = x86_64 hw.model = MacBookPro10,1 hw.ncpu = 8 hw.byteorder = 1234 hw.physmem = 2147483648 hw.usermem = 363184128 hw.pagesize = 4096 hw.epoch = 0 hw.vectorunit = 1 hw.busfrequency = 100000000 hw.cpufrequency = 2700000000 hw.cachelinesize = 64 hw.l1icachesize = 32768 hw.l1dcachesize = 32768 hw.l2settings = 1 hw.l2cachesize = 262144 hw.l3settings = 1 hw.l3cachesize = 8388608 hw.tbfrequency = 1000000000 hw.memsize = 17179869184 hw.availcpu = 8
Note: My CPU supports AVX instructions. The default assembler does not, and Atlas's build process outputs a note to that respect in the beginning of the log file ("disabling AVX" or similar). However, I replaced /opt/local/bin/as with a script that calls a different assembler, so that AVX instructions work fine on my system. Maybe there is a configure check for AVX that unexpectedly succeeds?
comment:4 Changed 10 years ago by Veence (Vincent)
Uh. It's a rather good idea, but I think gcc calls /usr/bin/as and not /opt/local/bin/as (despite what the configuration process says). If you want to persevere in that course ;), rename /usr/bin/as to, e.g. /usr/bin/AS and make /usr/bin/as a link to /opt/local/bin/as then retry.
As a test, if you have not cleaned your build, you can cd into /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_atlas/atlas/work/ATLAS/build/src/blas/level3/kernel and try:
/opt/local/bin/gcc-mp-4.8 -o ATL_dtrsmKRUNN.o -c -DL2SIZE=4194304 -I /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org _release_tarballs_ports_math_atlas/atlas/work/ATLAS/build/include -I/opt/local/v ar/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tar balls_ports_math_atlas/atlas/work/ATLAS/build/..//include -I/opt/local/var/macpo rts/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_po rts_math_atlas/atlas/work/ATLAS/build/..//include/contrib -DAdd_ -DF77_INTEGER=i nt -DStringSunStyle -DATL_OS_OSX -DATL_ARCH_Core2 -DATL_CPUMHZ=2700 -DATL_AVX -D ATL_SSE3 -DATL_SSE2 -DATL_SSE1 -DATL_USE64BITS -DATL_GAS_x8664 -m64 -DATL_DYLIBS -DPentiumCPS=2700 -DATL_FULL_LAPACK -DATL_NCPU=8 -fomit-frame-pointer -mfpmath= sse -O3 -fno-schedule-insns2 -fPIC -msse4.2 -m64 -fPIC -DDREAL -DUpper_ \ :info:build -DNonUnitDiag_ -DRight_ /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_atlas/atlas/work/ATLAS/build/..//src/blas/level3/kernel/ATL_trsmKR.c
If it compiles correctly, then you've the green light.
comment:5 Changed 10 years ago by eschnett (Erik Schnetter)
I find that gcc is calling /opt/local/bin/as; I can use AVX instructions with gcc fine.
I was able to build Atlas with gcc48 by temporarily removing my AVX-enabling assembler.
How do you want to proceed? Do you want to keep Atlas as-is (and I'll have to work around this problem), or do you want to update its AVX detection so that it would use AVX instructions in my case?
comment:6 Changed 10 years ago by Veence (Vincent)
Ok. Great. I think there is a conflict between the options -DATL_AVX and -msse4.2.
-DATL_AVX is probably automatically added by Atlas as it detects that AVX instructions are successfully compiled, whereas -msse4.2 is the standard way to disable to use of AVX instructions with gcc4.8 and is part of the Portfile standard behavior.
Since your installation is non-standard, I'd prefer to keep the Portfile the way it is. Is there a reason why you don't use 'clang' and the 'perf' option, which handles AVX cleanly by using the dragonegg front-end?
comment:7 Changed 10 years ago by mf2k (Frank Schima)
Port: | atlas added; vince removed |
---|
comment:8 Changed 9 years ago by Veence (Vincent)
Resolution: | → fixed |
---|---|
Status: | new → closed |
No response → closing
log file