Opened 6 years ago

Closed 5 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


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)

main.log (9.6 MB) - added by eschnett (Erik Schnetter) 6 years ago.
log file

Change History (9)

Changed 6 years ago by eschnett (Erik Schnetter)

Attachment: main.log added

log file

comment:1 Changed 6 years ago by ryandesign (Ryan Schmidt)

Owner: changed from macports-tickets@… to vince@…
Port: vince added

comment:2 Changed 6 years ago by Veence (Vincent)

Ooops. AVX instructions are enabled, and they should not. Can you give me the output of

sysctl -a hw


comment:3 Changed 6 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 6 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
_release_tarballs_ports_math_atlas/atlas/work/ATLAS/build/include -I/opt/local/v
balls_ports_math_atlas/atlas/work/ATLAS/build/..//include -I/opt/local/var/macpo
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
 -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 6 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 6 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 6 years ago by mf2k (Frank Schima)

Port: atlas added; vince removed

comment:8 Changed 5 years ago by Veence (Vincent)

Resolution: fixed
Status: newclosed

No response → closing

Note: See TracTickets for help on using tickets.