PDA

Επιστροφή στο Forum : Gentoo amd64 - AMD K8 officially recommended CFLAGS



WAntilles
27-05-06, 22:04
Για πολλούς λόγους, ύστερα από 14 μήνες, αποφάσισα να χτίσω το amd64 Gentoo σύστημά μου από την αρχή.

Το χτίσιμο θα γίνει εκ του μηδενός με τα πρόσφατα unmasked GCC 4.1.1, modular Xorg 7.0 και Gnome 2.14.

Ως γνωστόν τα default CFLAGS για Venice (ή νεότερο) Athlon64 (έχω Toledo) είναι:


CFLAGS="-march=athlon64 -msse3 -O2 -pipe"

Η AMD όμως προτείνει επισήμως στις σελίδες της τα παρακάτω:


CFLAGS="march=athlon64 -msse3 -O3 -pipe -fomit-frame-pointer -funroll-all-loops -ftracer"

Η γνώμη σας ποιά είναι;

Αξίζει τον κόπο ή θα δημιουργήσουν αρκετά προβλήματα;



Σημ.: Οι απόψεις στα Gentoo Forums διίστανται.

hpstg
27-05-06, 22:28
Κανένα πρόβλημα από εδώ μεριά. Για το funroll-all-loops έχω κάτι αμφιβολίες για επεξεργαστές με τόσο καλό branch prediction. Μου δίνει την αίσθηση ότι ο κώδικας γίνεται τεράστιος χωρίς λόγο.

mrsaccess
27-05-06, 22:34
Επειδή το είχα ψάξει λίγο εξαιτίας του Sempron δεν είδα πουθενά η AMD να τα αναφέρει αυτά ως προτεινόμενα cflags.

Βρήκα ένα paper που έδινε για τους 64μπιτους επεξεργαστές της και ανάμεσα σε άλλα μιλούσε για την συμβατότητα με τους διάφορους compilers.
Στον gcc έχω την εντύπωση πως έδινε τα παραπάνω cflags ως παράδειγμα για κάποιες μαθηματικές εφαρμογές αλλά με τίποτα δεν τα πρότεινε για σύστημα.

Θα σου έλεγα να χρησιμοποιήσεις:

CFLAGS="-march=athlon64 -msse3 -O3 -pipe -fomit-frame-pointer"

ΥΣ. Από ότι ξέρω στον ggc4 το march athlon64 δεν είναι το ίδιο με k8 (το λέω σωστά;). Στον gcc3 τα δύο αυτά marches ήταν ένα και το αυτό. Για ψάξ'το λίγο. ;)

bedazzled
27-05-06, 22:37
Τα -O3 παράγει πιο γρήγορο κώδικα, με κόστος στο μέγεθος του binary. IMHO δεν νομίζω ότι θα κάνει καλό σε CPUs με μικρή cache (έχω 512K). Σε Intelάδες ίσως κάνει καλό.
Το -funroll-all-loops "θεωρητικά" παράγει πιο γρήγορο κώδικα υπό περιστάσεις, αλλά στην πράξη μάλλον το αντίθετο συμβαίνει...
Το -fomit-frame-pointer είναι redundant σε amd64.


ΥΣ. Από ότι ξέρω στον ggc4 το march athlon64 δεν είναι το ίδιο με k8 (το λέω σωστά;). Στον gcc3 τα δύο αυτά marches ήταν ένα και το αυτό. Για ψάξ'το λίγο. ;)


k8, opteron, athlon64, athlon-fx
AMD K8 core based CPUs with x86-64 instruction set support. (This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and 64-bit instruction set extensions.)
Δεν πιστεύω ότι αξίζει πολύ το "παιχνίδι" με τα CFLAGS, πολύ hype για το τίποτα.
Εντάξει, να κάνεις compile τον mplayer, ή το ffmpeg με optimized CFLAGS οκ, έχει νοήμα. Το init ή ο grub ή το shell δεν θα ωφεληθούν.

ΥΓ: Προσωπικά έχω αυτά:
CFLAGS="-Os -march=k8"
Το -pipe λείπει, γιατί κάνω compile σε tmpfs. ;)

WAntilles
28-05-06, 00:07
Κανένα πρόβλημα από εδώ μεριά.

Μιλάς για GCC 3.4.x ή για 4.1.x;


Για το funroll-all-loops έχω κάτι αμφιβολίες για επεξεργαστές με τόσο καλό branch prediction. Μου δίνει την αίσθηση ότι ο κώδικας γίνεται τεράστιος χωρίς λόγο.

Χμ ναι αλλά αυτά εσύ τα είχες αναφέρει-προτείνει σε άλλο thread.


ΥΣ. Από ότι ξέρω στον ggc4 το march athlon64 δεν είναι το ίδιο με k8 (το λέω σωστά;). Στον gcc3 τα δύο αυτά marches ήταν ένα και το αυτό. Για ψάξ'το λίγο. ;)

Το έψαξα.

Παρέμεινε ίδιο καί στον 4.x.


Τα -O3 παράγει πιο γρήγορο κώδικα, με κόστος στο μέγεθος του binary. IMHO δεν νομίζω ότι θα κάνει καλό σε CPUs με μικρή cache (έχω 512K).

Εδώ που έχω 1024 ανά core, θα κάνει κατιτίς καλύτερο;


Σε Intelάδες ίσως κάνει καλό.

Καλά αυτοί έχουν ανάγκη ντουζίνες ματζουνίων. :haha


Δεν πιστεύω ότι αξίζει πολύ το "παιχνίδι" με τα CFLAGS, πολύ hype για το τίποτα.

Μάλλον εκεί καταλήγω καί εγώ.

mrsaccess
28-05-06, 00:29
Το βρήκα και του έχουν κάνει και update!
Εδώ: http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/32035.pdf

Τελικά τα προτεινόμενα για GCC 4.0:

-O3 -ffast-math -funroll-all-loops -fpeel-loops -ftracer -funswitch-loops –ftree-vectorize
Αλλά δεν ξεκαθαρίζει αν κάνει για όλο το σύστημα...

Σελίδα 19, κεφάλαιο 3.1.3 ;)

Αν θες μια γνώμη, καλύτερα φτιάξε πρώτα ένα δοκιμαστικό σύστημα με αυτά...

hpstg
28-05-06, 00:40
Βασικά αυτά τα CFLAGS χρησιμοποιώ κι εγώ, αλλά μου φαίνεται πραγματικά πως είναι άχρηστο το funroll-all-loops. Δεν ξέρω τι να πω, μπορείς κάλλιστα να το δοκιμάσεις αν πας για GCC 4.0.

viron
28-05-06, 00:49
http://gentoo-wiki.com/Safe_Cflags

Βύρων.

@ ADSLgr.com All rights reserved.