View previous topic :: View next topic |
Author |
Message |
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Sat Mar 12, 2011 10:14 pm Post subject: [solved] Kein automatisch aktiviertes SSE? |
|
|
Hi,
ich habe erst heute morgen von dem schönen Aufruf gcc -c -Q -march=native --help=target erfahren, der einem anzeigt, welche Flags vom gcc automatisch gesetzt werden. Und erstaunlicherweise muss ich feststellen: SSE-Flags (sse, sse2, sse3, mmx) sind nicht dabei
Da ich bisher immer ausgegangen bin, dass dem so ist (so wird es auch von jeder Doku behauptet), schockt mich das ein wenig. Hat da jemand evtl Infos zu?
Meine /proc/cpuinfo:
Code: | processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Pentium(R) D CPU 2.80GHz
stepping : 7
cpu MHz : 2811.172
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pebs bts pni dtes64 monitor ds_cpl cid cx16 xtpr lahf_lm
bogomips : 5622.34
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 48 bits virtual
power management: |
Und die Ausgabe des obigen Befehls:
Code: | The following options are target specific:
-m128bit-long-double [disabled]
-m32 [enabled]
-m3dnow [disabled]
-m3dnowa [disabled]
-m64 [disabled]
-m80387 [enabled]
-m96bit-long-double [enabled]
-mabm [disabled]
-maccumulate-outgoing-args [disabled]
-maes [disabled]
-malign-double [disabled]
-malign-functions=
-malign-jumps=
-malign-loops=
-malign-stringops [enabled]
-march= nocona
-masm=
-mavx [disabled]
-mbranch-cost=
-mcld [disabled]
-mcmodel=
-mcx16 [enabled]
-mfancy-math-387 [enabled]
-mfma [disabled]
-mforce-drap [disabled]
-mfp-ret-in-387 [enabled]
-mfpmath=
-mfused-madd [enabled]
-mglibc [enabled]
-mhard-float [enabled]
-mieee-fp [enabled]
-mincoming-stack-boundary=
-minline-all-stringops [disabled]
-minline-stringops-dynamically [disabled]
-mintel-syntax [disabled]
-mlarge-data-threshold=
-mmmx [disabled]
-mms-bitfields [disabled]
-mno-align-stringops [disabled]
-mno-fancy-math-387 [disabled]
-mno-fused-madd [disabled]
-mno-push-args [disabled]
-mno-red-zone [disabled]
-mno-sse4 [enabled]
-momit-leaf-frame-pointer [disabled]
-mpc
-mpclmul [disabled]
-mpopcnt [disabled]
-mpreferred-stack-boundary=
-mpush-args [enabled]
-mrecip [disabled]
-mred-zone [enabled]
-mregparm=
-mrtd [disabled]
-msahf [enabled]
-msoft-float [disabled]
-msse [disabled]
-msse2 [disabled]
-msse2avx [disabled]
-msse3 [disabled]
-msse4 [disabled]
-msse4.1 [disabled]
-msse4.2 [disabled]
-msse4a [disabled]
-msse5 [disabled]
-msseregparm [disabled]
-mssse3 [disabled]
-mstack-arg-probe [disabled]
-mstackrealign [enabled]
-mstringop-strategy=
-mtls-dialect=
-mtls-direct-seg-refs [enabled]
-mtune= nocona
-muclibc [disabled]
-mveclibabi= |
(Interessanterweise stell ich auch fest, dass er intern denn "march" auf "nocona" setzt, obwohl "prescott" eigentlich das richtige wäre -- aber evtl mappt er das intern auch auf das gleiche...) _________________ Inter Deum Et Diabolum Semper Musica Est.
Last edited by Necoro on Sat Mar 12, 2011 10:56 pm; edited 2 times in total |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5320
|
Posted: Sat Mar 12, 2011 10:29 pm Post subject: |
|
|
nocona ist im grunde das gleiche wie prescott nur mit 64Bit extension support
man gcc wrote: | prescott
Improved version of Intel Pentium4 CPU with MMX, SSE, SSE2 and
SSE3 instruction set support.
nocona
Improved version of Intel Pentium4 CPU with 64-bit extensions,
MMX, SSE, SSE2 and SSE3 instruction set support. |
Und wegen der Ausgabe des commandos:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43718
Aber ganz schlau werde ich aus den Kommentaren auch nicht. Scheinbar bekommt --help=target nicht mit, wenn optionen/cpu-features durch die -march option implizit aktiviert werden. _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Sat Mar 12, 2011 10:37 pm Post subject: |
|
|
Ah - also nur ein Problem der Darstellung, wenn man diesen Bug liest? Wundert mich, dass die sowas denn nicht einfach gefixt haben (andererseits: Wenn das stärkere Auswirkungen hätte, liefe der sicherlich nicht als "minor")
/edit: Wunder mich, wie man jetzt eindeutig rausbekommen kann, ob der SSE3 nutzt oder net ... _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
|
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Sat Mar 12, 2011 10:56 pm Post subject: |
|
|
So - habs für mich jetzt mit "ist wirklich nur ein Anzeigebug" abgeschlossen.
Grund:
Wenn man ein kleines Testprogramm schreibt, was Floating Point-Arithmetik benutzt und mit "-mfpmath=sse" die SSE-Befehle für jegliche FP-Arithmetik erzwingt, so liefert er mit "-march=native" Assembler-Code, der nach SSE aussieht (und sich auf jeden Fall von dem ohne SSE unterscheidet). Wenn man das "-march" dagegen weglässt, kommt hingegen "warning: SSE instruction set disabled, using 387 arithmetics".
Insofern: Solved. _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
|
mastacloak Apprentice
Joined: 01 Aug 2004 Posts: 174 Location: Berlin / Germany
|
Posted: Sun Mar 13, 2011 6:43 pm Post subject: |
|
|
Aus http://en.gentoo-wiki.com/wiki/Hardware_CFLAGS kenne ich noch diesen Test:
Code: | $ echo "" | gcc -march=native -v -E - 2>&1 | grep cc1 |
Bei mir stimmt die Ausgabe auf den ersten Blick mit
Code: | $ gcc -c -Q -march=native --help=target |
überein. |
|
Back to top |
|
|
Josef.95 Advocate
Joined: 03 Sep 2007 Posts: 4670 Location: Germany
|
Posted: Sun Mar 13, 2011 8:33 pm Post subject: |
|
|
Die Ausgabe von Code: | $ gcc -c -Q -march=native --help=target | würde hier, mit einer AMD CPU auch nicht stimmen.
Eine sehr ausführliche Ausgabe (die auch stimmt) kann man sich zb mit Code: | $ cd /tmp
$ echo 'int main() {return 0;}' > test.c && gcc -v -Q -march=native -O2 test.c -o test && rm test.c test | ausgeben lassen. |
|
Back to top |
|
|
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Sun Mar 13, 2011 8:36 pm Post subject: |
|
|
Josef.95 wrote: | Die Ausgabe von Code: | $ gcc -c -Q -march=native --help=target | würde hier, mit einer AMD CPU auch nicht stimmen.
Eine sehr ausführliche Ausgabe (die auch stimmt) kann man sich zb mit Code: | $ cd /tmp
$ echo 'int main() {return 0;}' > test.c && gcc -v -Q -march=native -O2 test.c -o test && rm test.c test | ausgeben lassen. |
Ah super Danke _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6780
|
Posted: Sun Mar 13, 2011 9:49 pm Post subject: |
|
|
Josef.95 wrote: | Eine sehr ausführliche Ausgabe... |
Wer will dazu schon eine /tmp-Datei erstellen? Da ich mich jetzt nicht erinnern kann, ob ich das schon mal gepostet habe: Code: | #! /bin/sh
Usage() {
printf '%s\n' "Usage: ${0##*/} c|o [gcc-Flags e.g. -march=native -O2]
Show which compile|optimization flags are selected when you chose gcc-Flags"
exit ${1:-1}
}
case "${1}" in
c) shift
exec gcc -v -c -Q "${@}" -o /dev/null -x c - 2>&1 <<PROG
int main(){return 0;}
PROG
;;
o) shift
exec gcc -c -Q "${@}" -o /dev/null --help=optimizer 2>&1;;
*) Usage;;
esac |
|
|
Back to top |
|
|
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Sun Mar 13, 2011 10:20 pm Post subject: |
|
|
Danke Die Funktion fand Einzug in meine Zsh-Funktionssammlung _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
|
kernelOfTruth Watchman
Joined: 20 Dec 2005 Posts: 6111 Location: Vienna, Austria; Germany; hello world :)
|
|
Back to top |
|
|
|