Sajátosan kevert optimizálás

Fórumok

Sajátosan kevert optimizálás

Hozzászólások

Egy AMD Sempron van a gépemben, de úgy szeretném a fordítást a processzoromra optimalizálni, hogy a "/usr/portage/packages"-ben kapott csomagok hiba nélkül menjenek egy Pentium 2-en is. Az ennél régebbi procik ebben az esetben nem érdekelnének. Arra gondoltam, hogy a Slackware-t parafrazálva valami ilyesmivel próbálkoznék:

[code:1:fb03085af3]CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -mcpu=athlon-xp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"[/code:1:fb03085af3]

Ez így helyes lenne? Vagy inkébb ez?:

[code:1:fb03085af3]CHOST="i686-pc-linux-gnu"
CFLAGS="-march=i686 -mcpu=athlon-xp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"[/code:1:fb03085af3]

Hm?

i686 nem fog menni

szerintem i386-ra forgass, az biztos megy

pontosabban innen:

http://gentoo-wiki.com/Safe_Cflags

Pentium II (Klamath), (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"[/u]

Pontosabban a -march és a magasabb értékü -mcpu keverése érdekelne. Sok helyen olvastam, hogy a legújabb Slackware-ekben Patrick Volkedring a "-march=i486 -mcpu=i686"-ot használja. Az eredmény már nem kompatibilis az i386-al, hanem csak a i486-al, de tartalmaz bizonyos optimalizálásokat az i686-ra.

Ezt az ötletet szerettem volna alkalmazni úgy, mint: "-march=pentium2 -mcpu=athlon-xp", hogy az eredmény még fusson a Pentium 2-en, de azért tartalmazzon néhány optimalizálást az AMD Sempron-os procimra is.

Mégegyszer nekivágok a kérdezésnek. (Bocs, de sehol sem kaptam eddig még megnyugtató választ.)

Nem az a kérdésem, hogy mi a különbség a "-march" és az "-mtune" között, hanem, hogy KEVERHETEM-E a "-march" és az "-mtune" flag-eket ELTÉRŐ paraméterekkel, ahogyan azt az alábbi példa is mutatja?:

[code:1:b2cf66d9c9]-march=i686 -mtune=athlon-xp[/code:1:b2cf66d9c9]

Mi a szándékom?:
1) úgy optimizálni athlon-xp-re, hogy közben megtartom a kompatibilitást a többi, i686-osnál újabb processzorral;
2) megtörni a kompatibilitást az i686-osnál régebbi processzorokkal (i386, i486, i586), vagyis maximálisan optimizálni az i686-osra.

Miért?:
Az egyszerű "-mtune=athlon-xp" nem más, mint egyféle "-march=i386 -mtune=athlon-xp", amit persze ebben a formában senki sem ír le, és ami akár egy i386-oson is megy. A "-march=i686 -mtune=athlon-xp" azonban gyosabb lenne ennél, bár csak az i686-os felett futna.

Tulajdonképpen bináris csomagokat szeretnék készíteni a "/usr/portage/packages" mappában, és használni szeretném őket más (pentium2-es, pentium3-as) gépeken.

Más fórumokon többen azzal válaszoltak, hogy az "-mcpu" felülírja/elhanyagolja a "-march"-ot, de szerintem ez csak abban az esetben igaz, ha azonos paraméterrel használják őket. Itt azonban épphogy különböző paraméterekről lenne szó. A Slackware is csinál hasonló keveréseket: a "-march=i386 -mtune=i686"-ot használja. Íme:

ftp://ftp.slackware.com/pub/slackware/slackware-current/source/l/glibc/glibc.SlackBuild

Szóval bátran használhatom ezt?:

[code:1:b2cf66d9c9]-march=i686 -mtune=athlon-xp[/code:1:b2cf66d9c9]

Nem kaptam még választ a kérdésemre. Így még egyszer felteszem. Voltak-e már tapasztalatai valakinek ezzel a kevert optimalizálással (a -march és az -mcpu eltérő paraméterekkel történő használatával)? S ha igen, meséljen egy kicsit a tapasztalatairól :) .