/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
GCC og platformsvalg
Fra : Martin Christensen


Dato : 28-10-02 16:49

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hejsa!

Nu har jeg efterhånden hørt en del fra folk, der bruger
source-distributioner af Linux, der siger, at man får en mærkbar
hastighedsforbedring ved at bygge alle sine pakker selv, så jeg
tænkte, at jeg da lige kunne prøve det på den mest centrale
systemkomponenter som libc og X. Hva' pokker, når man som jeg kører
Debian, er det jo blot apt-get source --compile [pakkenavn], og så
klarer den resten selv.

Mit spørgsmål er så, om GCC selv finder ud af at optimere til den
aktuelle platform, altså at den compiler speficikt til min Athlon XP,
og ikke falder tilbage på i386, fordi jeg ikke har givet den andre
instrukser? Hvis ikke den selv finder ud af det, kan jeg fortælle den,
hvilke options den skal bruge i mangel på andre instrukser? gcc(1)
siger så vidt jeg kan se ikke noget om relevante environment-variable,
og under FILES er der ingen konfigurationsfiler nævnt.

Martin, der synes, at fortolkere er sjovere end compilere

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAj29XFUACgkQYu1fMmOQldUdjACggKf0EJbVuim1x63ZLtXdz3gF
iOkAoJGUoAEkXJHfJWNNp/L/nqbiSCli
=GGFf
-----END PGP SIGNATURE-----

 
 
enrique (28-10-2002)
Kommentar
Fra : enrique


Dato : 28-10-02 17:47

On Mon, 28 Oct 2002 16:48:37 +0100, Martin Christensen wrote:

> Nu har jeg efterhånden hørt en del fra folk, der bruger
> source-distributioner af Linux, der siger, at man får en mærkbar
> hastighedsforbedring ved at bygge alle sine pakker selv, så jeg tænkte,
> at jeg da lige kunne prøve det på den mest centrale systemkomponenter
> som libc og X. Hva' pokker, når man som jeg kører Debian, er det jo blot
> apt-get source --compile [pakkenavn], og så klarer den resten selv.

X er glad for det. Men ellers vil jeg ikke sige at man kan mærke _meget_
forskel, men jeg må sige at hele systemt _føles_ hurtiger, f.eks. starter
det hele lidt hurtiger, og hvis man laver mange ting samtidigt så føles
det også hurtiger.

> Mit spørgsmål er så, om GCC selv finder ud af at optimere til den
> aktuelle platform, altså at den compiler speficikt til min Athlon XP, og
> ikke falder tilbage på i386, fordi jeg ikke har givet den andre
> instrukser? Hvis ikke den selv finder ud af det, kan jeg fortælle den,
> hvilke options den skal bruge i mangel på andre instrukser? gcc(1) siger
> så vidt jeg kan se ikke noget om relevante environment-variable, og under
> FILES er der ingen konfigurationsfiler nævnt.

Jeg har et par links her:

http://www.cs.auc.dk/~enrique/linux/fromsource.html#doc_chap4

Læs f.eks. gcc's egen liste af indstillinger til gcc...

--
Mvh. / Kind regards
Henrik Farre
http://www.cs.auc.dk/~enrique
http://www.fsf.org/philosophy/no-word-attachments.html


Martin Christensen (28-10-2002)
Kommentar
Fra : Martin Christensen


Dato : 28-10-02 18:53

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"enrique" <look@mysignature.txt> writes:

> Jeg har et par links her:
> http://www.cs.auc.dk/~enrique/linux/fromsource.html#doc_chap4
> Læs f.eks. gcc's egen liste af indstillinger til gcc...

Takker. Men er /etc/make.conf en standardfil? Jeg kan finde en masse
referencer til den fra diverse BSD-relaterede mailarkiver, men intet
om GNU make. Desuden nævnes den ikke fra makes man-side eller i
Debians make-pakke. I det hele taget har jeg ikke kunnet finde nogen
'officielle' steder, den nævnes. Det forekommer mig noget mystisk.

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAj29eXMACgkQYu1fMmOQldU+MACbBIQwSPu/lC+W2XuwyWVzSjr0
7mAAoOJlmEGTO1EAjaBkGmGTuE1ppie/
=DNmf
-----END PGP SIGNATURE-----

enrique (28-10-2002)
Kommentar
Fra : enrique


Dato : 28-10-02 20:28

On Mon, 28 Oct 2002 18:52:51 +0100, Martin Christensen wrote:


> Takker. Men er /etc/make.conf en standardfil? Jeg kan finde en masse
> referencer til den fra diverse BSD-relaterede mailarkiver, men intet om
> GNU make. Desuden nævnes den ikke fra makes man-side eller i Debians
> make-pakke. I det hele taget har jeg ikke kunnet finde nogen 'officielle'
> steder, den nævnes. Det forekommer mig noget mystisk.

Ja det er en gentoo ting, men indholdet kan du exportet som en variabler,
f.eks. CFLAGS="-march=athlon-xp ..."

--
Mvh. / Kind regards
Henrik Farre
http://www.cs.auc.dk/~enrique
http://www.fsf.org/philosophy/no-word-attachments.html


Martin Christensen (28-10-2002)
Kommentar
Fra : Martin Christensen


Dato : 28-10-02 21:19

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"enrique" <look@mysignature.txt> writes:

> Ja det er en gentoo ting, men indholdet kan du exportet som en variabler,
> f.eks. CFLAGS="-march=athlon-xp ..."

Ja, det kunne jeg forstå på de andre. Tak for hjælpen! Nu får vi at
se, om det virker.

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAj29m7sACgkQYu1fMmOQldXDbACfVPFyPLi24SKLPzbYGJFJ3bWL
El0AoIh7xfVfjGBOuFo0X03U/9Yn5UMg
=ahzH
-----END PGP SIGNATURE-----

Rasmus Bøg Hansen (28-10-2002)
Kommentar
Fra : Rasmus Bøg Hansen


Dato : 28-10-02 19:22

Martin Christensen wrote:

> Nu har jeg efterhånden hørt en del fra folk, der bruger
> source-distributioner af Linux, der siger, at man får en mærkbar
> hastighedsforbedring ved at bygge alle sine pakker selv, så jeg
> tænkte, at jeg da lige kunne prøve det på den mest centrale

Jeg synes ikke, der er en stor hastighedsforbedring at mærke; lidt men ikke
voldsomt meget.

> systemkomponenter som libc og X. Hva' pokker, når man som jeg kører
> Debian, er det jo blot apt-get source --compile [pakkenavn], og så
> klarer den resten selv.

Omgivelsesvariablene CFLAGS og CXXFLAGS plejer at virke.

> Mit spørgsmål er så, om GCC selv finder ud af at optimere til den
> aktuelle platform, altså at den compiler speficikt til min Athlon XP,
> og ikke falder tilbage på i386, fordi jeg ikke har givet den andre
> instrukser? Hvis ikke den selv finder ud af det, kan jeg fortælle den,
> hvilke options den skal bruge i mangel på andre instrukser? gcc(1)
> siger så vidt jeg kan se ikke noget om relevante environment-variable,
> og under FILES er der ingen konfigurationsfiler nævnt.

Nej, den falder svjv tilbage på i386, da koden hermed kan køre på alle
maskiner i IA32-familien. Til athlon skal du nok have fat i noget med:

export CFLAGS="-O3 -mcpu=athlon -march=athlon <evt. mere>"
export CXXFLAGS="[tilsvarende her]"
export FFLAGS="[...]"

CFLAGS bruges til C, CXXFLAGS til C++ og FFLAGS til fortran.

Vær opmærksom på at -mcpu=athlon og -march=athlon kun virker på GCC 3.0+ -
k6 kan evt. bruges i stedet for athlon på GCC <3.0.

/Rasmus

--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
Drink wet cement: Get Stoned.
----------------------------------[ moffe at amagerkollegiet dot dk ] --

Troels Arvin (28-10-2002)
Kommentar
Fra : Troels Arvin


Dato : 28-10-02 19:34

On Mon, 28 Oct 2002 19:21:46 +0100, Rasmus Bøg Hansen wrote:

> export CFLAGS="-O3 -mcpu=athlon -march=athlon <evt. mere>"

Jeg har set folk advare mod -O3, fordi det inline'er så meget, at visse
CPU-registre/caches/whatever skulle blive fyldte for hurtigt, og at et
multitask'ende system (med mange samtidigt kørende programmer) overordnet
set bliver mindre effektivt.

I øvrigt er -mcpu implicit det samme som -march, hvis -march er
defineret, så vidt jeg har forstået, så -mcpu er overflødigt i
ovenstående.

--
Greetings from Troels Arvin, Copenhagen, Denmark



Rasmus Bøg Hansen (28-10-2002)
Kommentar
Fra : Rasmus Bøg Hansen


Dato : 28-10-02 22:44

Troels Arvin wrote:

> On Mon, 28 Oct 2002 19:21:46 +0100, Rasmus Bøg Hansen wrote:
>
>> export CFLAGS="-O3 -mcpu=athlon -march=athlon <evt. mere>"
>
> Jeg har set folk advare mod -O3, fordi det inline'er så meget, at visse
> CPU-registre/caches/whatever skulle blive fyldte for hurtigt, og at et
> multitask'ende system (med mange samtidigt kørende programmer) overordnet
> set bliver mindre effektivt.

Ok. Jeg har ikke eksperimenteret så meget med det, så jeg ved, hvor stor
forskellen mellem O2 og O3 er.

> I øvrigt er -mcpu implicit det samme som -march, hvis -march er
> defineret, så vidt jeg har forstået, så -mcpu er overflødigt i
> ovenstående.

Ok. Man lærer noget nyt hver dag

/Rasmus

--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
A surplus means there'll be money left over.
Otherwise, it wouldn't be called a surplus.
----------------------------------[ moffe at amagerkollegiet dot dk ] --

Martin Christensen (28-10-2002)
Kommentar
Fra : Martin Christensen


Dato : 28-10-02 21:18

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Rasmus Bøg Hansen <moffe47@hotmail.com> writes:

> Omgivelsesvariablene CFLAGS og CXXFLAGS plejer at virke.

Okay, takker. Det undrer mig bare, at de ikke er dokumenterede. Man
ser dem jo så ofte i make-filer, men de er ikke nævnt med et ord i
gccs man-side.

Lader det til, at gcc < 3.0 foretrækker -march=i686, hvis
kerneudviklerne da ellers har forstand på disse sager. Det er i hvert
fald det flag, de bruger.

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAj29m5QACgkQYu1fMmOQldXXVACg2BXaaG4aFRlsRPo/8cvhtPHf
q4AAoIFxcJaVdGt27iRfmK5XkdaS5kXy
=nf/L
-----END PGP SIGNATURE-----

Rasmus Bøg Hansen (28-10-2002)
Kommentar
Fra : Rasmus Bøg Hansen


Dato : 28-10-02 22:55

Martin Christensen wrote:

> Rasmus Bøg Hansen <moffe47@hotmail.com> writes:
>
>> Omgivelsesvariablene CFLAGS og CXXFLAGS plejer at virke.
>
> Okay, takker. Det undrer mig bare, at de ikke er dokumenterede. Man
> ser dem jo så ofte i make-filer, men de er ikke nævnt med et ord i
> gccs man-side.

Prøv info-siden; gcc er vist bedre dokumenteret på info-siderne.

> Lader det til, at gcc < 3.0 foretrækker -march=i686, hvis
> kerneudviklerne da ellers har forstand på disse sager. Det er i hvert
> fald det flag, de bruger.

Nej da - ikke, hvis du har en gcc, som forstår -march=athlon og har en nyere
2.4 kerne (jeg ved ikke, hvornår det blev indført):

offe@grignard:/data/linux/linux-2.4.19# grep -A2 K7 arch/i386/Makefile
ifdef CONFIG_MK7
CFLAGS += $(shell if $(CC) -march=athlon -S -o /dev/null -xc /dev/null
>/dev/null 2>&1; then echo "-march=athlon"; else echo "-march=i686
-malign-functions=4"; fi)
endif
moffe@grignard:/data/linux/linux-2.4.19#

/Rasmus

--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
[...]but more than 5,000 known bugs from Windows 95 still exist in
Windows 98, because Microsoft views bug fixes as unprofitable.
-- osdata.com
----------------------------------[ moffe at amagerkollegiet dot dk ] --

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408877
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste