#18550 closed defect (fixed)
fftw-3[-single] 3.2.1 : should not have --enable-fma for Intel builds
Reported by: | eborisch@… | Owned by: | skymoo (Adam Mercer) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 1.7.0 |
Keywords: | Cc: | MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) | |
Port: | fftw-3, fftw-3-single |
Description
Both the fftw-3 and fftw-3-single ports have --enable-fma in their configure.args. These should be removed, as they are incorrect for Intel builds, and replaced with the appropriate platform-specific args.
Suggested args:
PPC: --enable-fma --enable-altivec
Intel: --enable-sse OR --enable-sse2 (for fftw-3-single, and fftw-3, respectively)
It might also be nice to add '-O3 -fomit-frame-pointer -fstrict-aliasing' to the configure.cflags-append -- most folks using FFTW are going for speed; might as well build for it. (These flags were found on the FFTW benchmark site: http://www.fftw.org/speed/Pentium4-3.06GHz/ and http://www.fftw.org/speed/G5-2GHz-macosx/)
Attachments (2)
Change History (16)
comment:1 Changed 16 years ago by mf2k (Frank Schima)
Keywords: | fftw-3 removed |
---|---|
Owner: | changed from macports-tickets@… to takeshi@… |
comment:2 Changed 16 years ago by skymoo (Adam Mercer)
Cc: | ram@… added |
---|
comment:3 Changed 16 years ago by skymoo (Adam Mercer)
On Intel Leopard fftw-3
and fftw-3-single
build without error using these suggested flags. I've attached patches, can anyone test on PPC?
Changed 16 years ago by skymoo (Adam Mercer)
Attachment: | fftw-3-single.diff added |
---|
apply flags to fftw-3-single
comment:4 follow-up: 8 Changed 16 years ago by skymoo (Adam Mercer)
One thing I've just noticed is that the Portfiles already used the -fno-common
cflag and the page you linked to didn't mention this cflag. Should this be used?
comment:5 Changed 16 years ago by skymoo (Adam Mercer)
fftw-3
fails to build with the universal variant with the following error:
libtool: compile: gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../.. -I../../kernel -I../../simd -msse2 -O2 -fno-common -O3 -fomit-frame-pointer -fstrict-aliasing -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch ppc -D_THREAD_SAFE -MT sse2.lo -MD -MP -MF .deps/sse2.Tpo -c sse2.c -fno-common -DPIC -o .libs/sse2.o sse2.c:27: error: variable 'fftw_sse2_pm' has initializer but incomplete type sse2.c:28: error: extra brace group at end of initializer sse2.c:28: error: (near initialization for 'fftw_sse2_pm') sse2.c:28: warning: excess elements in union initializer sse2.c:28: warning: (near initialization for 'fftw_sse2_pm') make[3]: *** [sse2.lo] Error 1 make[2]: *** [all-recursive] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2
Also on Intel Leopard. Looks like the --enable-sse2 option is being passed to configure for the PPC build.
comment:6 Changed 16 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Cc: | mcalhoun@… added |
---|
Cc Me!
comment:7 Changed 16 years ago by skymoo (Adam Mercer)
Cc: | ram@… removed |
---|---|
Keywords: | fftw-3-single removed |
Owner: | changed from takeshi@… to ram@… |
Port: | fftw-3-single added |
Status: | new → assigned |
comment:8 Changed 16 years ago by eborisch@…
comment:9 follow-up: 11 Changed 16 years ago by eborisch@…
How about this for fftw-3:
array set merger_configure_args { ppc "--enable-fma --enable-altivec" ppc64 "--enable-fma --enable-altivec" i386 --enable-sse2 x86_64 --enable-sse2 }
and this for fftw-3-single:
array set merger_configure_args { ppc "--enable-fma --enable-altivec" ppc64 "--enable-fma --enable-altivec" i386 --enable-sse x86_64 --enable-sse }
(Keeping your other changes to configure.args and configure.cflags-append)
comment:10 Changed 16 years ago by eborisch@…
The configure argument "-enable-type-prefix" in fftw-3-single should go away as well (not a valid - or needed - argument anymore.)
comment:11 Changed 16 years ago by skymoo (Adam Mercer)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Replying to eborisch@…:
How about this for fftw-3:
array set merger_configure_args { ppc "--enable-fma --enable-altivec" ppc64 "--enable-fma --enable-altivec" i386 --enable-sse2 x86_64 --enable-sse2 }
That does the job, although --enable-altivec
is only appropriate for the single precision build.
Replying to eborisch@…:
The configure argument "-enable-type-prefix" in fftw-3-single should go away as well (not a valid - or needed - argument anymore.)
Done
Changes committed in r47232, thanks!
comment:12 Changed 16 years ago by skymoo (Adam Mercer)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Reopening as the platform specific flags, --enable-sse2
for example, are not applied when the port is built for a single platform, i.e. not universally.
comment:13 Changed 16 years ago by skymoo (Adam Mercer)
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Platform specific flags applied to non-universal builds in r47243
Cc Me!