Bug 893946 - Incorrect build flags on ARM
Summary: Incorrect build flags on ARM
Alias: None
Product: Fedora
Classification: Fedora
Component: fftw
Version: rawhide
Hardware: Unspecified
OS: Unspecified
Target Milestone: ---
Assignee: Conrad Meyer
QA Contact: Fedora Extras Quality Assurance
Depends On:
Blocks: ARMTracker
TreeView+ depends on / blocked
Reported: 2013-01-10 10:39 UTC by Peter Robinson
Modified: 2013-01-10 14:32 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2013-01-10 11:47:08 UTC

Attachments (Terms of Use)

Description Peter Robinson 2013-01-10 10:39:19 UTC
The changelog for 3.3.3-3 has the following:

* Tue Dec 18 2012 Susi Lehtola <jussilehtola@fedoraproject.org> - 3.3.3-3
- After consultation with upstream, enable SSE2 also on x86, altivec on ppc
  and ppc64 and NEON on arm.

Fedora ARM doesn't compile with NEON because there are platforms where NEON isn't supported. I'm not aware of any consultation with the Fedora ARM team on what would be best here.

Also I'm fairly certain that for x86 there are platforms for which SSE2 isn't supported either so it should use the rpm default to ensure it runs on all intended platforms.

Please resolve the ARM issue and check to ensure what the right setting for x86 is.

Comment 1 Susi Lehtola 2013-01-10 11:47:08 UTC
fftw has dynamic CPU detection. Closing as NOTABUG.

Comment 2 Peter Robinson 2013-01-10 11:48:30 UTC
Please provide a link to the details.

Comment 3 Dan Horák 2013-01-10 12:10:59 UTC
After looking into the sources I think Susi is right. simd-support subdir contains the detection (via executing SIMD instruction and SIGILL handler) and SIMD compiler flags are passed to CC only in selected subdirs.

Comment 4 Susi Lehtola 2013-01-10 14:31:40 UTC
Date: Tue, 18 Dec 2012 14:10:39 +0100
From: Matteo Frigo <athena@fftw.org>
To: Jussi Lehtola <jussi.lehtola@helsinki.fi>
Subject: Re: Recommended compilation flags for distributions

FFTW does have runtime CPU detection, so it is safe to enable all
features that your compiler supports.  Not too long ago a
fully-configured FFTW was running fine on an 80386 as well as a modern
CPU, and I expect this to be true today as well.

The reason why sse/avx are not enabled by default is that the core of
FFTW is written in C89 and we want to keep it like that.  Things like
SSE are not supported, e.g., by the plan 9 compiler.  OpenBSD still
uses gcc-2.95. AVX was not supported by most compilers until last year,
and avx support in gcc-4.6 was quite buggy.  The IBM compiler did not
quite work for altivec for a long time.  NEON support in llvm is still
quite experimental. So we don't feel comfortable enabling these
extensions by default.

The other consideration is the size of the binary.  A full SSE/AVX
binary is maybe 3x the size of the scalar FPU binary. I assume this
does not matter much for Fedora.

 In summary, you can safely enable all the SIMD extensions.

Comment 5 Susi Lehtola 2013-01-10 14:32:24 UTC
For the reference, I have not enabled AVX support on x86/x86_64 because at least Gromacs runs faster with plain SSE2.

Note You need to log in before you can comment on or make changes to this bug.