# CFLAGS Celeron

## Hollowman

Hi

Ich hab da die Tage nen kleines Problem gehabt.

Ich hab hier nen Laptop, da muss gentoo drauf.

Jetzt hat mir das Teil bei compilieren dauernd Speicherzugriffsfehler um die Ohren gehauen. Gelöst hab ich das ganze dann mit -march=native in der make.conf. Vorher hatte ich da -march=pentium4. Ich muss dazu sagen das ich die eingebaute CPU nicht hier http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel gefunden hab.

Das ist der Hobel:

CPU Family 15

Model 2

medel Name Intel(R) Celeron(R) CPU 2.60GHz

Stepping 9

cache size 128K

Da passt nix wirklich. pentium4 hab ich dann genommen weil Model und Family gepasst haben. Das war aber nix.

Was hab ich da für eine komische Kiste? Gibts noch irgendwelche anderen Listen mit CFLAGS?

Sebastian

----------

## Josef.95

Uff..., bei diese vielen Celeron Modellen durchzusehen ist wahrlich nicht einfach...

Aber warum magst du nicht bei march=-native bleiben?  *Quote:*   

> native
> 
>     This selects the CPU to tune for at compilation time by determining the processor type of the compiling machine. Using -mtune=native will produce code optimized for the local machine under the constraints of the selected instruction set. Using -march=native will enable all instruction subsets supported by the local machine (hence the result might not run on different machines). 

  Sofern man nicht distcc oder ähnliches nutzen möchte ist es doch idR eine gute Wahl..

Evtl. noch hilfreich (sofern man die CPU denn genau kennt  :Wink: 

http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options

----------

## Klaus Meier

Es gibt nichts Besseres als march=native. Weil der gcc dann selbst herausfindet, was deine CPU unterstützt. Also auch manuell kannst da nicht mehr rausquetschen. Und mit Celeron kannst du gar nichts anfangen, dass ist die Bezeichnung für etwas von Intel, was Zwangskastriert ist. Ein Hinweis darauf, was Intel da gerade kastriert hat, ist das nicht.

Ansonsten zeigt dir cat /proc/cpuinfo an, was dein Prozi so unterstützt, aber daraus auf einen bestimmten Typ zu schließen ist dann nicht so einfach. Aber wozu der Stress? march=native erledigt das doch vollständig von alleine.

Und wieso komische Kiste? Musst doch wissen, wie du an das Teil geraten bist. Es gibt halt viele Unterschiede bei den CPUs. Und die Namen sind eigentlich nur dazu da, den Aldi und Saturn Kunden zu verarschen. Der i7 war mal der Hammer. Ok, ist er immer noch, aber inzwischen gibt es auch Teile, die i7 heißen, aber zur i5 Familie gehören. Genauso wie der Core2 eine CPU mit einem Kern ist und so weiter und so weiter. Und bei den Core2 Duo ist die Zahl 4 Stellen lang und jede hat eine Bedeutung. Kennst du sie?

----------

## Christian99

hi, ich hab einen core2, und bei dem verwendet march=native dieselben flags wie march=core2. du kannst mal mit

```
g++ -v -Q -march=native -O2 test.cpp -o test
```

sehen welche flags verwendet werden (ziemlich weit oben im output) mal mit denen von march=pentium4 vergleichen.

dein prozessor ist wohl dieser hier:

http://de.wikipedia.org/wiki/Intel_Celeron_%28NetBurst%29]

und ich hätte für ihn eigentlich auch march=pentium4 verwendet. aber da celerons ja auf den "normalen" (hier p4) cpus basieren und abgespeckte funktionen haben, kann es sein, dass irgendeine funktion, die bei deinen prozessor deaktiviert sind, von gcc verwendet wird. ich an deiner stelle würde bei native bleiben.

@klaus: das "2" bei "core2" steht ja auch nicht für die kernanzahl, sondern dafür, dass es der nachfolger von "core" ist. ein nachfolgendes "solo" "duo" oder "quad" gibt die kernanzahl an, wobei es meines wissen nach beim core2 gar kein solo gibt.

----------

## Josef.95

 *Christian99 wrote:*   

> [...]du kannst mal mit
> 
> ```
> g++ -v -Q -march=native -O2 test.cpp -o test
> ```
> ...

 Hehe, der Tipp ist gut!

Anfangs wurde jedoch die fehlende test.cpp Datei bemängelt,

ein 

```
$ touch test.cpp
```

 schaffte Abhilfe.

Den werde ich mir merken.. (kommt nun in meine Schatzkammer! .. :Wink: 

Besten Dank!

----------

## Christian99

 *Josef.95 wrote:*   

> Hehe, der Tipp ist gut!

 

leider nicht von mir. weiß auch grad nicht woher ich den hab. hoffe er fällt unter kein copyright  :Smile: 

nur mal interessehalber: was sind denn die unterschiede zwischen native und p4?

----------

## Max Steel

Mit p4 (pentium4) nutzt gcc ein komplett vordefiniertes fixes Set an Flags.

mit native sucht sich der gcc die maximal möglichen (beschleunigenden?) stabilen Flags selbst aus (vornehmlich die richtige -march= Variante, und evtl die -m? Flags)

jeweils zusätzlich zu den restlichen Flags von dir.

Zumindest lese ich das hier im Thread  :Wink: 

----------

## Christian99

das weiß ich, ich wollte halt mal wissen was das konkret ist, also die einzelnen flags die aktiviert werden oder nicht, da es ja mit march=pentium4 probleme gab hats mich halt interessiert was der pentium4 kann, was der celeron nicht kann.

----------

## Max Steel

Gugg mal hier:

http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options

Was dein Prozzi kann steht auf cat /proc/cpuinfo in der/den Zeile/n "flags"

----------

## Christian99

es ist ja nicht mein prozessor, sonst würd ich nicht fragen  :Smile: 

----------

## Klaus Meier

 *Christian99 wrote:*   

> das weiß ich, ich wollte halt mal wissen was das konkret ist, also die einzelnen flags die aktiviert werden oder nicht, da es ja mit march=pentium4 probleme gab hats mich halt interessiert was der pentium4 kann, was der celeron nicht kann.

  Es gibt keinen Celeron. Selbst vom P4 gab es verschiedene Varianten. Celeron ist die Bezeichnung für irgendwelche CPUs, bei denen irgend etwas stillgelegt ist, was auf dem Chip drauf ist.

Die Tatsache, dass es vom P4 einen Celeron genannten Ablegen gab, bedeutet nicht, dass jeder Celeron P4 basierend ist.

----------

## Max Steel

Ich würde denken das der sse2 Befehlssatz stillgelegt ist, oder garnicht vorhanden.

----------

## Klaus Meier

 *Max Steel wrote:*   

> Ich würde denken das der sse2 Befehlssatz stillgelegt ist, oder garnicht vorhanden.

 Keine Ahnung, wie man das hin bekommt, eher Ausschussverwertung. So wie bei AMD, wo es die 3 Kern CPUs ja auch nur deshalb gibt, weil es bei der Produktion Ausschuss gibt.

Es gab im Laptop Bereich viele Prozzies, Pentium M (aus dem ja der Core2 hervorgegangen ist), dann den Core ohne 2, dann den Core2 ohne und mit Duo usw. Und von allem diesem Kram gab es irgendwelche Celerons. Kann schon sein, dass da mal so ne Charge Ausschuss an irgendwelche OEMs verhökert wurde. Bei Alldi gibt es ja auch Computer mit Grafikkarten von Nvidia, deren Beizeichnung sonst nirgendwo zu finden ist oder Monitore eines Markenherstellers, wo sich dann herausstellt, dass viele einen gelben Fleck an der gleichen Stelle haben.

----------

## Hollowman

Hi

Das ist nicht mein Laptop. Ich hab den nur zum installieren bekommen. Ich hätte für das Teil nie nen Pfennig Geld ausgegeben.

Ich lass ihn jetzt logischerweise bei native. Ich wusste bis da hin aber noch nicht das es native gibt.

Ich wollte einfach nur mal wissen wieso das so schief gelaufen ist. Das muss nen kastrierter P4 sein. Zumindest nach der familie und dem Model. Wenn ich das Teil nochmal in die Finger bekomme poste ich mal den /proc/cpuinfo output.

Sebastian

----------

## Josef.95

 *Hollowman wrote:*   

> Hi 
> 
> [...] Ich lass ihn jetzt logischerweise bei native. Ich wusste bis da hin aber noch nicht das es native gibt.
> 
> [...]
> ...

  Prima.., ich denke das ist ne gute Entscheidung, ist idR auch das Empfohlene... 

 *http://en.gentoo-wiki.com/wiki/Safe_Cflags wrote:*   

>  -march=native
> 
> GCC 4.2 introduces a new -march option, -march=native, which automatically detects the features your CPU supports and sets the options appropriately. If you have an Intel or AMD CPU and are using >=sys-devel/gcc-4.2.3, using -march=native is recommended. Do not  use -march=native if you use distcc on nodes with different architectures as this may produce unusable code.

 

----------

