[gmx-developers] warning Emulating FMA instructions - this is probably not what you want!

Szilárd Páll szilard.pall at cbr.su.se
Wed Oct 17 23:28:35 CEST 2012


That way of calling CMake triggers an interesting bug in the option
generator and CFLAGS will essentially override part of the auto-generated
compiler options. Diff of relevant lines in CMakeCache.txt are below, the
only difference is that the second file ("+" in the diff) was generated by
running "CFLAGS=-march=native cmake...":

 //Flags used by the compiler during all build types
-CMAKE_C_FLAGS:STRING='-msse2  -Wall -Wno-unused -Wunused-value  '
+CMAKE_C_FLAGS:STRING='-msse2  -march=native '

 //Flags used by the compiler during debug builds.
-CMAKE_C_FLAGS_DEBUG:STRING=-fno-inline  -g
+CMAKE_C_FLAGS_DEBUG:STRING=-g

-//Flags used by the compiler during release builds.
-CMAKE_C_FLAGS_RELEASE:STRING=-fomit-frame-pointer -funroll-all-loops
-fexcess-precision=fast  -O3 -DNDEBUG
+//Flags used by the compiler during release builds (/MD /Ob1 /Oi
+// /Ot /Oy /Gs will produce slightly less optimized but smaller
+// files).
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG

As this messes with "considered to be best basic set of options", we could
state that CFLAGS should not be used, but it might be a better alternative
to make the configuration prepend the CFLAG to the CMAKE_C_FLAGS and keep
our generated set of flags as well.

I'm not sure which options is best. Thoughts?

--
Szilárd


On Wed, Oct 17, 2012 at 10:12 PM, Jochen Hub <jhub at gwdg.de> wrote:

> Hi all,
>
> many thanks for the help. I now compiled with gcc 4.7 and with manually
> adding export CFLAGS=-mfma4 (that is what you meant, right?). Now the
> warning does not appear any more.
>
> I am not sure though how Gromacs performed on this hardware using these
> settings, as the AVX kernels are apparently not in release-4.6.
>
> Thanks,
> Jochen
>
>
> Am 10/17/12 5:12 PM, schrieb Szilárd Páll:
>
>> On Wed, Oct 17, 2012 at 4:46 PM, Berk Hess <hess at kth.se
>> <mailto:hess at kth.se>> wrote:
>>
>>     Hi,
>>
>>     Apparently icc can compile the code, so than it's not strange that
>>     you end up in this situation. But we should avoid this from happening.
>>     SSE4.1 would be the next supported level, but you really want the
>>     vex instructions and not plain SSE, as the latter is much slower.
>>
>>
>> AMD explicitly states that only up to -msse3 should be used on Bulldozer
>> and I have never tried to generate SSE4.1 instructions with icc and run
>> it on AMD. I would not be surprised if it didn't work.
>>
>> --
>> Szilárd
>>
>>     The best thing would be to use gcc, preferably 4.7.
>>
>>     Cheers,
>>
>>     Berk
>>
>>     ----- Reply message -----
>>     From: "Szilárd Páll" <szilard.pall at cbr.su.se
>>     <mailto:szilard.pall at cbr.su.se**>>
>>     To: "Discussion list for GROMACS development"
>>     <gmx-developers at gromacs.org <mailto:gmx-developers@**gromacs.org<gmx-developers at gromacs.org>
>> >>
>>     Subject: [gmx-developers] warning Emulating FMA instructions - this
>>     is probably not what you want!
>>     Date: Wed, Oct 17, 2012 15:25
>>
>>
>>     Hi,
>>
>>     First of all, as far as I know, the new icc 13 can not generate
>>     AMD-compatible FMA4/XOP (v12 surely cant:
>>     http://developer.amd.com/**Assets/CompilerOptQuickRef-**62004200.pdf<http://developer.amd.com/Assets/CompilerOptQuickRef-62004200.pdf>
>> ),
>>     so I find it strange that you've ended up with
>>     GMX_ACCELERATION=AVX_128_FMA using an Intel compiler -- unless you
>>     set the acceleration manually. To get FMA4 support you need to use a
>>     recent gcc version, the newer the better. The Verlet kernels don't
>>     benefit much from FMA4, so if you want to, you can use Intel
>>     Compiler, but then you need to set the acceleration to SSE2 (max
>>     SSE3 works, but we don't use these instructions).
>>
>>     On Wed, Oct 17, 2012 at 11:14 AM, Jochen Hub <jhub at gwdg.de
>>     <mailto:jhub at gwdg.de>> wrote:
>>
>>         Hi developers,
>>
>>         does anyone know how to interpret this icc warning:
>>
>>         [  8%]
>>         /home/jhub/src/gromacs/__**include/gmx_x86_avx_128_fma.h(**__88):
>>
>>         warning #1224: #warning directive: Emulating FMA instructions -
>>         this is probably not what you want!
>>
>>            #warning Emulating FMA instructions - this is probably not
>>         what you want!
>>
>>
>>     This warning is related to a bug in the build system, you'll need to
>>     add the -mfma4 flag to the compiler flags manually.
>>
>>     --
>>     Szilard
>>
>>
>>         I am compiling 46-release on a Interlagos 6378 with OpenMPI and
>>         icc 13.0.0 20120731. My cmake line is:
>>
>>         cmake $gmxsrc \
>>              -DFFTW_LIBRARY=$FFTW_LOCATION/**__lib/libfftw3f.a \
>>              -DFFTW3F_INCLUDE_DIR=$FFTW___**LOCATION/include \
>>              -DFFTW3F_LIBRARIES=$FFTW___**LOCATION/lib/libfftw3f.a \
>>
>>              -DCMAKE_INSTALL_PREFIX=$(pwd) \
>>              -DGMX_X11=OFF \
>>              -DCMAKE_CXX_COMPILER=$MPICXX \
>>              -DCMAKE_C_COMPILER=$MPICC \
>>              -DGMX_MPI=ON \
>>              -DGMX_PREFER_STATIC_LIBS=ON \
>>              -DGMX_GPU=OFF
>>
>>         and cmake reported:
>>
>>         -- Performing Test GNU_AVX_CFLAG
>>         -- Performing Test GNU_AVX_CFLAG - Success
>>         -- Enabling 128-bit AVX Gromacs acceleration (with
>>         fused-multiply add), and it will help compiler optimization.
>>
>>         Thanks a lot,
>>         Jochen
>>
>>
>>
>>
>>         --
>>         ------------------------------**__---------------------
>>
>>         Dr. Jochen Hub
>>         Computational Molecular Biophysics Group
>>         Institute for Microbiology and Genetics
>>         Georg-August-University of Göttingen
>>         Justus-von-Liebig-Weg 11, 37077 Göttingen, Germany.
>>         Phone: +49-551-39-14189 <tel:%2B49-551-39-14189>
>>         http://cmb.bio.uni-goettingen.**__de/
>>         <http://cmb.bio.uni-**goettingen.de/<http://cmb.bio.uni-goettingen.de/>
>> >
>>         ------------------------------**__---------------------
>>         --
>>         gmx-developers mailing list
>>         gmx-developers at gromacs.org <mailto:gmx-developers@**gromacs.org<gmx-developers at gromacs.org>
>> >
>>         http://lists.gromacs.org/__**mailman/listinfo/gmx-__**developers<http://lists.gromacs.org/__mailman/listinfo/gmx-__developers>
>>
>>         <http://lists.gromacs.org/**mailman/listinfo/gmx-**developers<http://lists.gromacs.org/mailman/listinfo/gmx-developers>
>> >
>>         Please don't post (un)subscribe requests to the list. Use the
>>         www interface or send it to gmx-developers-request at __groma**
>> cs.org <http://gromacs.org>
>>         <mailto:gmx-developers-**request at gromacs.org<gmx-developers-request at gromacs.org>
>> >.
>>
>>
>>
>>     --
>>     gmx-developers mailing list
>>     gmx-developers at gromacs.org <mailto:gmx-developers@**gromacs.org<gmx-developers at gromacs.org>
>> >
>>
>>     http://lists.gromacs.org/**mailman/listinfo/gmx-**developers<http://lists.gromacs.org/mailman/listinfo/gmx-developers>
>>     Please don't post (un)subscribe requests to the list. Use the
>>     www interface or send it to gmx-developers-request@**gromacs.org<gmx-developers-request at gromacs.org>
>>     <mailto:gmx-developers-**request at gromacs.org<gmx-developers-request at gromacs.org>
>> >.
>>
>>
>>
>>
>>
> --
> ------------------------------**---------------------
> Dr. Jochen Hub
> Computational Molecular Biophysics Group
> Institute for Microbiology and Genetics
> Georg-August-University of Göttingen
> Justus-von-Liebig-Weg 11, 37077 Göttingen, Germany.
> Phone: +49-551-39-14189
> http://cmb.bio.uni-goettingen.**de/ <http://cmb.bio.uni-goettingen.de/>
> ------------------------------**---------------------
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20121017/9c179468/attachment.html>


More information about the gromacs.org_gmx-developers mailing list