Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
AMD Phenom II X4 - FX-4300 und 3dnow!
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
Erdie
Advocate
Advocate


Joined: 20 May 2004
Posts: 2576
Location: Heidelberg - Germany

PostPosted: Wed Nov 26, 2014 5:52 pm    Post subject: AMD Phenom II X4 - FX-4300 und 3dnow! Reply with quote

Ich bin von Phenom II X4 auf FX-4300 migriert. IMHO unterstürzt der FX 3dnow! nicht mehr, welches ich aber als Flag in der make.conf stehen habe.

1. Muß ich neucompilieren oder wird das einfach ignoriert?

2. Was bedeutet das flag "3dnowprefetch", welches unter /proc/cpuinfo erscheint?


Danke
Erdie
_________________
Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Wed Nov 26, 2014 6:26 pm    Post subject: Reply with quote

Du löscht das Flag aus der make.conf und machst ein emerge -uDN world.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Wed Nov 26, 2014 6:55 pm    Post subject: Reply with quote

Klaus Meier wrote:
Du löscht das Flag aus der make.conf und machst ein emerge -uDN world.

Tjo, wenns nur ein USE-Flag wär wäre das die Lösung. Aber hier geht es wohl um CFLAGS, die evtl. sogar automatisch über den march angeschalten wurden. Da hilft mMn. nur ein emerge -e world. Keine Ahnung ob das so ohne weiteres nach dem CPU-Tausch noch geht...
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Wed Nov 26, 2014 7:01 pm    Post subject: Reply with quote

Na wenn er die Kiste booten kann, dann wird es wohl gehen... Denke mal, der gcc wird kein 3dnow verwenden.
Back to top
View user's profile Send private message
Erdie
Advocate
Advocate


Joined: 20 May 2004
Posts: 2576
Location: Heidelberg - Germany

PostPosted: Wed Nov 26, 2014 7:19 pm    Post subject: Reply with quote

Die Cflags habe ich schon gändert. Der Rechner funktioniert seit Tagen problemlos obwohl ich (noch) nichts kompiliert habe. Aber es ist richtig, dass eine mit USE=3DNow! kompiliertes binary theoretisch auf einer CPU ohne 3DNow! Prolbeme bereiten sollte?

Es steht sowieso eine Switch von GCC 4.7 nach 4.8 an. Da kann man das doch gleich verbinden.
_________________
Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Wed Nov 26, 2014 7:37 pm    Post subject: Reply with quote

Ändern des Flags ohne Kompilieren bringt dir erst mal gar nichts. Was hast du denn bei -march gesetzt?

Des weiteren wird jetzt das Flag ja nur von einigen wenigen Paketen berücksichtigt. Es wird nur im Bereich Multimedia verwendet, es sollte eigentlich alles wichtige laufen. Wenn eine Anwendung diesen Code enthält und dieser Code wird von einer CPU ohne 3dnow Einheit ausgeführt, dann bumm.

Du solltest auf alle Fälle ein emerge -uDN world machen. Ob 3dnow Code per default ohne dieses Flag erzeugt wurde, kann ich so nicht sagen. Solltest du Abstürze bekommen, wäre ein emerge -e world angebracht.
Back to top
View user's profile Send private message
Erdie
Advocate
Advocate


Joined: 20 May 2004
Posts: 2576
Location: Heidelberg - Germany

PostPosted: Wed Nov 26, 2014 7:55 pm    Post subject: Reply with quote

Klaus Meier wrote:
Ändern des Flags ohne Kompilieren bringt dir erst mal gar nichts. Was hast du denn bei -march gesetzt?



Das ist schon klar ;) ich habe für -march die Angaben für save cflags gesetzt, wie sie im wiki stehen. Dannach war mein Plan, im Laufe der Updatezyklen alles nach und nach zu bauen, da ich bei der CPU Abwärtskompatibilitt vermutet habe. Bei 3DNow scheint das nicht so zu sein. Mich wundert nur, das ffmpeg definitiv funktionierte, obwohl es mit 3DNow Unterstützung gebaut war. Ich möchte nur verstehen, warum das so ist. Nach meinem Verständnis hätte zumindest ffmpeg crashen müssen. Es funktioniert aber offenbar alles und ich habe keine Erklärung dafür.
_________________
Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Wed Nov 26, 2014 8:44 pm    Post subject: Reply with quote

Mach mal cat /proc/cpuinfo und schau nach nem 3dnow in den flags, vielleicht wird es ja doch noch unterstützt.
USE=3dnow (oder sse oder avx) aktivieren meist eigene optimierte Codepfade: Besimmte Funktionen werden dann direkt in Assembler geschrieben. Normalerweise wird aber bei der Ausführung geschaut ob die CPU das überhaupt unterstützt.
Mit 3dnow in den CFLAGS entscheidet der Compiler, welchen Stellen er die entsprechenden Befehle spendiert. Ich kann mir sehr gut vorstellen, dass der GCC da einfach direkt SSE(x) Befehlssätze nimmt. Kann der alte Phenom ja, und AFAIK sogar den AVX.
Back to top
View user's profile Send private message
py-ro
Veteran
Veteran


Joined: 24 Sep 2002
Posts: 1734
Location: Velbert

PostPosted: Wed Nov 26, 2014 11:33 pm    Post subject: Reply with quote

3dnow ist eine sub optimale Erweiterung, deine CPU wird auch die diversen SSE Varianten kennen, die alle samt schneller sind, daher wird vermutlich in ffmpeg da wo optimierter code genutzt wird eher diese verwendet.

Bye
Py
Back to top
View user's profile Send private message
Erdie
Advocate
Advocate


Joined: 20 May 2004
Posts: 2576
Location: Heidelberg - Germany

PostPosted: Thu Nov 27, 2014 9:24 am    Post subject: Reply with quote

@Py-ro
das könnte ein Erklärung sein. Unter /proc/cpuinfo finde ich nur

3dnowprefetch und diverse sse Varianten bis sse4. Die habe ich jetzt alle gesetzt. Der Rechner macht jetzt ein -e world, da ich auf gcc 4.8.* umgestiegen bin. Dabei wird alles andere gleich mit erschlagen.

P.S: Deshalb auch meine Frage, was 3dnowprefetch sein soll, ein USE Flag in der der Art gibt es nicht.
_________________
Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W
Back to top
View user's profile Send private message
Erdie
Advocate
Advocate


Joined: 20 May 2004
Posts: 2576
Location: Heidelberg - Germany

PostPosted: Fri Nov 28, 2014 8:47 am    Post subject: Reply with quote

-e @world lief überigens einwandfrei durch. Sowas hatte ich noch nie. Irgendwas hakt sonst immer. Das ist doch schon mal erste Sahne.

@Franz: Der Phenom kann bis sse3. Mit dem FX ist noch sse4 dazugekommen.
_________________
Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Fri Nov 28, 2014 1:42 pm    Post subject: Reply with quote

Mach dir doch jetzt keinen Stress... Was ist wichtiger? Dass es problemlos läuft oder dass du weißt, warum :roll: :roll: :roll:
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sat Nov 29, 2014 11:09 am    Post subject: Reply with quote

Klaus Meier wrote:
Mach dir doch jetzt keinen Stress... Was ist wichtiger? Dass es problemlos läuft oder dass du weißt, warum :roll: :roll: :roll:

Dass er weiß warum, denn diese Erkenntnis hilft ihm vielleicht später weiter.
(Meine Meinung, ich doktor auch gern an Problemen rum, die sich irgendwann auf magische Weise von selbst gelöst haben - steckt auch oft ein fieser Bug dahinter ;))
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Sat Nov 29, 2014 11:30 am    Post subject: Reply with quote

Ok, in diesem Fall ist es wohl gar nicht so schwer. Der gcc erzeugt keinen 3dnow Code, wenn eine bessere sse-Einheit verfügbar ist.
Back to top
View user's profile Send private message
kurisu
Apprentice
Apprentice


Joined: 19 Jan 2011
Posts: 159
Location: Munich, Germany

PostPosted: Sun Nov 30, 2014 2:57 am    Post subject: Reply with quote

franzf wrote:
Klaus Meier wrote:
Mach dir doch jetzt keinen Stress... Was ist wichtiger? Dass es problemlos läuft oder dass du weißt, warum :roll: :roll: :roll:

Dass er weiß warum, denn diese Erkenntnis hilft ihm vielleicht später weiter.
(Meine Meinung, ich doktor auch gern an Problemen rum, die sich irgendwann auf magische Weise von selbst gelöst haben - steckt auch oft ein fieser Bug dahinter ;))

+1

Gewiss verkörpert Erstzitiertes zweifellos einen pragmatischen Ansatz, nichtsdestominder ergibt sich daraus eine interessante Technik der Deduktion. Denn nicht zuletzt bin ich gerade deshalb bei Gentoo, weil ich gerne genau wissen möchte, weshalb etwas nicht funktioniert. Aber jedem, wie ihm beliebt.
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Sun Nov 30, 2014 5:53 am    Post subject: Reply with quote

Du hast ja Recht mit deiner Aussage, aber sie trifft auf den Fall von Erdie nicht zu. Du willst wissen, warum etwas nicht geht. Dagegen ist ja nichts einzuwenden. Erdie wollte aber wissen, warum es geht. Das ist etwas anderes, :roll: :roll: :roll:

Und ich sagte ja auch nicht, dass es irrelevant ist, ich sagte, es ist wichtiger, dass es funktioniert.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sun Nov 30, 2014 9:25 am    Post subject: Reply with quote

Zwei kleine Beispiele:
Code:
#include <iostream>

void pre_test() {
    int x = 0x12345678;
}

void test() {
    int x;
    while(x++ < 10)
        std::cout << x << '\n';
}

int main() {
    pre_test();
    test();
}

Abspeichern als test1.cpp, kompilieren mit
Code:
g++ -O2 test1.cpp -o test1

Ausführen mit ./test1.
Ausgabe:
Code:
1
2
3
4
5
6
7
8
9
10

Also alles klar geht ja :)
Dann lass beim Kompilieren das "O2" weg und schon gibt das Programm keinen Muckser mehr von sich.
Hintergrund: int x in test() ist nicht korrekt initialisiert ("default initialized"). Der Optimierer führt zero-initialization durch, was zu dem erwarteten Ergebnis führt. Ohne Optimierer erhält x den Wert der gerade im Speicher liegt. Der ist recht sicher größer als 10, dadurch ist die Bedingung "x < 10" immer falsch.

Zweites Beispiel:
Code:
#include <iostream>
struct Test {
    int x;
};

int main() {
    Test *t = new Test;
    delete t;
    t->x = 6;
    std::cout << t->x << '\n';
}

Spechern als test2.cpp, Kompilieren wie oben (mit oder ohne O2 ist hier wurscht).
Wunderbar, das funktioniert. Gibt "6" aus.

Dann eine kleine Änderung:
Code:
#include <iostream>
struct Test {
    int x;
};

int main() {
    Test *t = new Test;
    delete t;
    Test *t2 = new Test;
    t2->x = 500;
    t->x = 6;
    std::cout << t2->x << '\n';
}

Erwartete Ausgabe: 500. Gibt aber immer noch 6 aus. 8O
(g++ -fsanitize=address erstellt ein binary das bei solchen ungültigen Speicherzugriffen die Ausführung abbricht)

Das war zweimal "undefined behaviour". Oft geht sowas gut, aber ändert man was (Compileroptionen, Code) geht es plötzlich nicht mehr. Ich hab das schon ein paarmal gesehen, dass sich (vor allem unerfahrene Programmierer) da wenig sagen lassen. "Geht doch". Und in diesen Fällen ist es wirklich gut zu wissen WARUM es vielleicht geht (automatische zero initialization, Zugriff auf zufälligerweise noch validen Speicher).
Genauso ist es gut zu wissen dass SSE >>> 3dnow, und dass es am Ende vielleicht doch Multimediaanwendungen gibt, die crashen könnten (wenn handoptimiert und kein runtime-check) ;)
Back to top
View user's profile Send private message
Child_of_Sun_24
Guru
Guru


Joined: 28 Jul 2004
Posts: 578

PostPosted: Sun Nov 30, 2014 7:31 pm    Post subject: Reply with quote

Der FX4300 (Wie alle Prozessoren aus der Serie) emulieren 3dnow falls entsprechende Flags gesetzt sind, dadurch wird die Codeausführung "verlangsamt" ob das jetzt spürbar ist oder nicht kann ich dir nicht sagen.

-march kannst du ruhig auf bdver2 stellen (Piledriver) und die 3dnow Option nimmst du raus, nach und nach werden dann die wichtigsten Pakete beim wöchentlichem/monatlichem emerge world -avuDN --with-bdeps=y :D auf die neuen Flags umgestellt. Es ist also nicht wirklich notwendig alles sofort neu zu kompilieren.
Back to top
View user's profile Send private message
Erdie
Advocate
Advocate


Joined: 20 May 2004
Posts: 2576
Location: Heidelberg - Germany

PostPosted: Tue Dec 02, 2014 12:07 pm    Post subject: Reply with quote

Child_of_Sun_24 wrote:
Der FX4300 (Wie alle Prozessoren aus der Serie) emulieren 3dnow falls entsprechende Flags gesetzt sind, dadurch wird die Codeausführung "verlangsamt" ob das jetzt spürbar ist oder nicht kann ich dir nicht sagen.

-march kannst du ruhig auf bdver2 stellen (Piledriver) und die 3dnow Option nimmst du raus, nach und nach werden dann die wichtigsten Pakete beim wöchentlichem/monatlichem emerge world -avuDN --with-bdeps=y :D auf die neuen Flags umgestellt. Es ist also nicht wirklich notwendig alles sofort neu zu kompilieren.


Genauso habe ich es gemacht. Und da gerade die Umstellung von gcc 4.7 auf 4.8 auf dem Plan stand, habe ich doch gleich alles kompiliert. Wenn das durchläuft ist es ja kein Akt. Kostet etwas Strom und eine Nacht + 1/2 Tag.

bdver2 hatte ich laut Wiki benutzt. CPUinfo bringt auch Ver. 2

Die Umstellung auf FX hat es allein schon wegen 30W weniger Leistungsaufnahme gebracht, selbst wenn hinterher nichts schneller war.

Danke nochmal an alle
Grüße
Erdie
_________________
Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum