Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 339837 - sci-chemistry/gromacs-4.5.1 fails to emerge because SSE2 instruction set is not enabled
Summary: sci-chemistry/gromacs-4.5.1 fails to emerge because SSE2 instruction set is n...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo Chemistry-Related Packages
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-10-05 16:26 UTC by Juergen Rose
Modified: 2011-02-14 21:07 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
/var/tmp/portage/sci-chemistry/gromacs-4.5.1/temp/build.log (build.log,88.92 KB, text/plain)
2010-10-05 16:28 UTC, Juergen Rose
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Juergen Rose 2010-10-05 16:26:35 UTC
'emerge gromacs' fails with:
...
 i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I/var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/src/gmxlib/nonbonded/nb_kernel_ia32_sse -I../../../../src -I/usr/include/libxml2 -I/var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/include -DGMXLIBDIR=\"/usr/share/top\" -O2 -march=athlon-xp -fomit-frame-pointer -pthread -I/var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/include -MT nb_kernel400_ia32_sse.lo -MD -MP -MF .deps/nb_kernel400_ia32_sse.Tpo -c /var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/src/gmxlib/nonbonded/nb_kernel_ia32_sse/nb_kernel400_ia32_sse.c  -fPIC -DPIC -o .libs/nb_kernel400_ia32_sse.o
In file included from /var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/src/gmxlib/nonbonded/nb_kernel_ia32_sse/nb_kernel400_ia32_sse.c:22:
/usr/lib/gcc/i686-pc-linux-gnu/4.4.4/include/emmintrin.h:32:3: error: #error "SSE2 instruction set not enabled"
In file included from /var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/src/gmxlib/nonbonded/nb_kernel_ia32_sse/nb_kernel400_ia32_sse.c:24:
/var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/include/gmx_sse2_single.h:128: error: expected declaration specifiers or ‘...’ before ‘__m128i’
/var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/include/gmx_sse2_single.h: In function ‘printxmmi’:
/var/tmp/portage/sci-chemistry/gromacs-4.5.1/work/gromacs-4.5.1/include/gmx_sse2_single.h:132: error: ‘__m128i’ undeclared (first use in this function)
...
make[5]: *** [nb_kernel400_ia32_sse.lo] Error 1


root@cheetah:/usr/src/linux(37)# emerge -pqv =sci-chemistry/gromacs-4.5.1
[ebuild     U ] sci-chemistry/gromacs-4.5.1 [4.0.7-r4] USE="X bash-completion blas doc fftw gsl lapack mpi single-precision threads%* xml -debug -dmalloc -double-precision -fkernels -static -static-libs -test -zsh-completion (-ffamber%)" 


Reproducible: Always




root@cheetah:/usr/src/linux(36)# emerge --info =sci-chemistry/gromacs-4.5.1
Portage 2.1.9.13 (default/linux/x86/10.0/desktop, gcc-4.4.4, glibc-2.12.1-r1, 2.6.34-gentoo-r1 i686)
=================================================================
                        System Settings
=================================================================
System uname: Linux-2.6.34-gentoo-r1-i686-AMD_Athlon-tm-_XP_1800+-with-gentoo-2.0.1
Timestamp of tree: Tue, 05 Oct 2010 02:05:01 +0000
ccache version 2.4 [disabled]
app-shells/bash:     4.1_p7
dev-java/java-config: 2.1.11
dev-lang/python:     2.6.5-r3, 3.1.2-r4
dev-util/ccache:     2.4-r8
dev-util/cmake:      2.8.1-r2
sys-apps/baselayout: 2.0.1
sys-apps/openrc:     0.6.3
sys-apps/sandbox:    2.3-r1
sys-devel/autoconf:  2.13::<unknown repository>, 2.68
sys-devel/automake:  1.4_p6-r1, 1.7.9-r2, 1.8.5-r3::<unknown repository>, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.20.1-r1
sys-devel/gcc:       4.4.4-r2, 4.5.0
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.10
sys-devel/make:      3.81-r2
virtual/os-headers:  2.6.35 (sys-kernel/linux-headers)
ACCEPT_KEYWORDS="x86 ~x86"
ACCEPT_LICENSE="* -@EULA PUEL dlj-1.1 skype-eula googleearth AdobeFlash-10.1 cadsoft"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/compiler /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests binpkg-logs distlocks fixlafiles fixpackages news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
FFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="de fr"
MAKEOPTS="-j1"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/java-overlay /var/lib/layman/n4g /var/lib/layman/x11 /var/lib/layman/sunrise /var/lib/layman/science /var/lib/layman/pro-audio /usr/local/portage /var/lib/cpan"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext R X Xaw3d a52 aac abiword acl acpi admin afs alsa ao apache2 applet archive arpack asf aspell assistant audacious audiofile automap automount bash-completion beagle berkdb blas blast bluetooth boo boost branding bzip2 cairo cardbus cdda cddb cdf cdio cdparanoia cdr cgi chm cli consolekit corba cracklib crypt css cups curl cxx daap db dbase dbi dbm dbus designer devhelp device-mapper dga dia djvu doc dri ds2490 ds9097 ds9097u dts dv dvb dvd dvdr dvi dynamicplugin eds elf emacs emboss empathy encode epiphany evo examples exif expat extensions extra extras fam fame ffmpeg fftw firefox fits flac fltk fontconfig foomaticdb fortran fpx fts3 fuse galago garmin gd gdal gdbm gedit geoip geolocation geos gif gimp ginac git glade glib gml gmp gmtsuppl gnokii gnome gnome-keyring gnome-print gnuplot gnutls gphoto2 gpm grammar graphics graphtft graphviz grass gs gsl gsm gstreamer gtk guile hal harness hddtemp hdf hdf5 hdri hlapi http httpd iconv icq icu id3 ide imagemagick imap innodb inotify ipod ipv6 irda ithreads jabber jadetex java java5 java6 jbig john jpeg jpeg2k kdrive kerberos kpathsea ladspa lame lapack latex latex3 lcms ldap lensfun libffi libgda libnotify libsamplerate lirc lm_sensors lua lzo mad mail maildir mailwrapper mapnik math matroska matrox mikmod mkl mmx mmxext mng modules mono moonlight motif mozdevelop mozilla mp3 mp4 mpeg mpi mplayer mtp mudflap musicbrainz mysql mysqli nautilus ncurses neXt netcdf netpbm network networking networkmanager nfs nls nntp nptl nptlonly nsplugin ntfs ntp numarray numeric obex objc ocaml octave odbc ogdi ogg ole openexr opengl openmp overview pae pam pango pcre pda pdf perl plotutils plugins png podcast policykit posix postgres postscript ppds pppd preview-latex proj projectx pstricks pulseaudio pymol python python-bindings qemu qhull qt3support qt4 quicktime readline reflection reiserfs rle romio rpc rrdcgi rrdtool samba sasl science sdl secure-delete semantic-desktop server session sip slang slp smbclient sms sndfile snmp soup sox speex spell sql sqlite sse ssl startup-notification stlport subtitles subversion suexec svg swig sysfs szip t1lib tcl tcpd tex tex4ht texmacs theora threads thunderbird tidy tiff tk tntc tools truetype udev unicode usb userlocales utempter v4l2 virtualbox vorbis wav webdav webdav-serf webkit win32codecs wmf wxwidgets x264 x86 xattr xcb xemacs xext xine xml xmlreader xmlrpc xorg xpm xulrunner xv xvid xvmc zlib zvbi" ALSA_CARDS="intel8x0" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" CAMERAS="canon" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" DVB_CARDS="tda10045 tda10046lifeview" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse                evdev               " KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="de fr" LIRC_DEVICES="hauppauge" NETBEANS_MODULES="apisupport cnd dlight enterprise ergonomics groovy gsf harness ide identity j2ee java mobility nb php profiler ruby websvccommon xml" QEMU_SOFTMMU_TARGETS="i386 ppc ppc64 x86_64" QEMU_USER_TARGETS="arm i386 x86_64" RUBY_TARGETS="ruby18 jruby" USERLAND="GNU" VIDEO_CARDS="mga matrox vesa" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" 
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Juergen Rose 2010-10-05 16:27:45 UTC
My CPU doesn not understand SSE2:

-rw-r----- 1 nobody nobody 91059 2010-10-05 18:26 /home_moose/rose/build.log
root@cheetah:/usr/src/linux(41)# cat /proc/cpuinfo 
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 6
model           : 6
model name      : AMD Athlon(tm) XP 1800+
stepping        : 2
cpu MHz         : 1534.123
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow
bogomips        : 3068.24
clflush size    : 32
cache_alignment : 32
address sizes   : 34 bits physical, 32 bits virtual
power management: ts
Comment 2 Juergen Rose 2010-10-05 16:28:16 UTC
Created attachment 249651 [details]
/var/tmp/portage/sci-chemistry/gromacs-4.5.1/temp/build.log
Comment 3 Robert Bradbury 2010-10-14 16:42:11 UTC
This is some kind of CFLAGS problem within the ebuild or the Makefile I suspect.  The configure *is* detecting the machine type and instruction set properly, e.g.
  checking whether i686-pc-linux-gnu-gcc accepts -msse2... yes
It is also detecting that gcc accepts -O3.  But *neither* of these appears to be making it into the CFLAGS for compiling "nb_kernel400_ia32_sse.c", "nb_kernel410_ia32_sse.c" or any other machine specific files.

Looking back at the gromacs-4.0.7 log, these compile lines had my CFLAGS "-O2 -march=prescott" (presumably prescott picks up sse2) -- those flags are not present in the 4.5.1 build.  So either the ebuild is removing the user CFLAGS or the configure/Makefile are suppressing them.
Comment 4 Robert Bradbury 2010-12-01 14:16:45 UTC
It looks like at least part of the problem with building gromacs is the fact that the transition from Gromacs 3 to Gromacs 4 appears to have lost ebuild support for the USE="sse sse2" options in the ebuilds!  (I have a package.use file from 2008 which *has* those options set but the current ebuilds do not use them).

It would also appear that using CFLAGS (in make.conf) of "-march=Prescott" does not implicitly set sse/sse2.  Interestingly, using "-march=amdfam10" (on a Phenom II X3 CPU) either sets sse/sse2 or the gromacs code does not use those instructions on amd64 CPUs.

One solution, a poor one, is of the form:
 CFLAGS="-msse -msse2 -O2" emerge gromacs

IMO, the ebuilds should be repaired to the pre-v4 state which incorporated the sse/sse2 flags and the USE flag documentation should be updated to reflect this.

There may also be a bug in gcc with respect to whether the -march= flags do or do not enable all of the features of the CPUs with said architecture.
Comment 5 Christoph Junghans (RETIRED) gentoo-dev 2011-02-13 16:04:54 UTC
Does the problem still persist in gromacs-4.5.3?
Comment 6 Christoph Junghans (RETIRED) gentoo-dev 2011-02-14 21:07:03 UTC
Actually, it is a bug in gromacs's configure.ac. CFLAGS were overwrite with ones from the environment after adding -msse. I fixed it in gromacs-4.5.3-r2 (sci overlay).

As gromacs is in the process of switching to cmake, it will not be fixed upstream.

I will wait until gromacs-4.5.4 before adding it into the tree.