Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[FreeBSD] make.conf : optimisation de compilation

7 réponses
Avatar
gregg
avec CPUTYPE="p4", j'ai soit -march PentiumPro, soit -march p3
Mais jamais p4 :)

Comment ce fait-ce ?
(marche pareil avec CPUTYPE en ligne de commande avec le make...)

7 réponses

Avatar
Antoine Jacoutot
gregg wrote:
avec CPUTYPE="p4", j'ai soit -march PentiumPro, soit -march p3
Mais jamais p4 :)

Comment ce fait-ce ?
(marche pareil avec CPUTYPE en ligne de commande avec le make...)



Bon, peut-être que je dis n'importe quoi, mais il me "semble" que:
gcc < 3 --> ne supporte que les optimisation -march pentiumm pro au max
gcc 3+ --> ne supporte que les optimisation -march pentium 3 au max

Voilà, mais je suis loin d'être un connaisseur... si quelqu'un pouvait
confirmer/infirmer :)

Antoine

Avatar
gregg
Antoine Jacoutot wrote:


Bon, peut-être que je dis n'importe quoi, mais il me "semble" que:
gcc < 3 --> ne supporte que les optimisation -march pentiumm pro au max
gcc 3+ --> ne supporte que les optimisation -march pentium 3 au max


gcc 3.2.2
FreeBSD 5.1-p10

donc a priori ça devrait aller jusque "p3".
parfois c'est du ppro, d'autres du p3

j'ai placé "p4", pcq je l'avais lu dans la page de man


je me demande si l'optimisation ne dépend pas du programme que l'on
compile ?

(enfin, le noyau en p3, ça devrait aller: pourquoi refuse-t-il
autrechose que ppro ?)

d'autres ont-ils réussi à utiliser "p4" en optimisation ?
(ce qui voudrait dire que j'ai un pb de config, ou que je m'y prends mal)

gregg

Avatar
Benoit Izac
Bonjour,

le 31/10/2003 à 11:46, gregg a écrit
dans le message <3fa23d18$0$27028$ :

avec CPUTYPE="p4", j'ai soit -march PentiumPro, soit -march p3
Mais jamais p4 :)

Comment ce fait-ce ?
(marche pareil avec CPUTYPE en ligne de commande avec le make...)



man gcc
[...]
-mcpu=cpu-type
Tune to cpu-type everything applicable about the generated code,
except for the ABI and the set of available instructions. The
choices for cpu-type are i386, i486, i586, i686, pentium, pentium-
mmx, pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3,
athlon, athlon-tbird, athlon-4, athlon-xp, athlon-mp, winchip-c6,
winchip2 and c3.

je dirais donc :
CPUTYPE="pentium4"

--
Benoit Izac

Avatar
Arnaud Launay
Le Fri, 31 Oct 2003 19:35:52 +0100, Benoit Izac écrivit:
avec CPUTYPE="p4", j'ai soit -march PentiumPro, soit -march p3
Mais jamais p4 :)
Comment ce fait-ce ?
(marche pareil avec CPUTYPE en ligne de commande avec le make...)
man gcc

[...]
-mcpu=cpu-type
Tune to cpu-type everything applicable about the generated code,
except for the ABI and the set of available instructions. The
choices for cpu-type are i386, i486, i586, i686, pentium, pentium-
mmx, pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3,
athlon, athlon-tbird, athlon-4, athlon-xp, athlon-mp, winchip-c6,
winchip2 and c3.
je dirais donc :
CPUTYPE="pentium4"


J'avais pas vu que CPUTYPE était une variable de gcc, dis donc.

Par contre, bizarrement, dans /etc/defaults/make.conf, je lis ceci:

# The CPUTYPE variable controls which processor should be targeted for
# generated code. This controls processor-specific optimizations in
# certain code (currently only OpenSSL) as well as modifying the value
# of CFLAGS to contain the appropriate optimization directive to gcc.
# The automatic setting of CFLAGS may be overridden using the
# NO_CPU_CFLAGS variable below.
# Currently the following CPU types are recognized:
# Intel x86 architecture:
# (AMD CPUs) k7 k6-2 k6 k5
# (Intel CPUs) p4 p3 p2 i686 i586/mmx i586 i486 i386
# Alpha/AXP architecture: ev6 pca56 ev56 ev5 ev45 ev4


Waaah, dis donc, la variable p4 serait donc fonctionnelle. Impressionnant.

Arnaud.
--
Happiness is something money can't buy.
Lourds et aigris, mais on aime ça.
HLFL 0.60.1 !! Look here: http://www.hlfl.org/


Avatar
gregg
Thierry Herbelot wrote:

je dirais même mieux : gcc sait générer du code spécifique p4, mais ce code
est connu comme étant vérolé (une petite recherche sur les listes ?). donc,
pour éviter de se retrouver avec des bugs de freebsd, en fait dus à gcc,
l'option "p4" (bien nommée, finalement) a été débrayée.


du code vérolé ???
c'est à dire ?

(tes sources ?)


gregg

Avatar
gregg
Thierry Herbelot wrote:

tu connais google ?


oui
je voulais tes sources précises pour m'y référer, pas lire 3,000 pages
en diagonale pour retrouver l'info
(merci quand même)

sinon :
<http://www.freebsd.org/relnotes/CURRENT/relnotes/i386/article.html>

TfH



ça ?

"
GCC has been updated from 3.2.2 to 3.3.1-release.

Note: Previous versions of GCC generated incorrect code when
-march=pentium4 optimization was enabled. This problem is believed to
have been fixed with this upgrade, and the earlier workaround for the
case of CPUTYPE=p4 has been removed.
"


Ca mentionne du code "incorrect", et non "vérolé" (vérolé, recelant un
virus, soit du code malicieux).
Ca indique que le problème est réglé avec 3.3.1-release (ou en tous cas
ils le croient), et que "pentium4" est rétabli en tant qu'option.

En outre, tu parles du -march=pentium4, quand j'évoquais le CPUTYPE="p4"
du make.conf (est-ce exactement la même chose ?)

Humpf :

Avatar
talon
gregg wrote:


Ca mentionne du code "incorrect", et non "vérolé" (vérolé, recelant un
virus, soit du code malicieux).



Les exemple que j'ai lus, avient à faire avec du code flottant qui était
clairement faux.

Ca indique que le problème est réglé avec 3.3.1-release (ou en tous cas
ils le croient), et que "pentium4" est rétabli en tant qu'option.

En outre, tu parles du -march=pentium4, quand j'évoquais le CPUTYPE="p4"
du make.conf (est-ce exactement la même chose ?)


L'option -march de gcc enclanche à la fois les timings d'instruction
adaptés au processeur en question et l'usage des instructions
spécifiques au processeur. Dans mon souvenir mettre le CPUTYPE
dans make.conf produit des -march sur la ligne de compilation, mais
c'est facile à vérifier :-)

Bref, j'ai essayé une fois par curiosité de compiler avec -march
athlonxp et d'exécuter sur un athlon ordinaire. Ca n'a pas fait un pli,
je me suis trouvé avec des instructions illégales. Donc méfiance, les
versions récentes de gcc utilisent (enfin!) le jeu d'instruction des
processeurs récents.


Humpf :



--

Michel TALON