Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

[Script] VDR-SC FFdecsa optimization

tecfreak

Spezialist
Registriert
13. September 2010
Beiträge
616
Reaktionspunkte
322
Punkte
123
EDIT: Erweiterte/verbesserte Funktionsweise (V9)
EDIT: Option "-v" entfernt (nicht mehr nötig)
EDIT: Support für "native" flags hinzugefügt (abschaltbar "-n")
EDIT: Anhang entfernt.

EDIT: Neue Versionen nur noch unter folgender URL:
Du musst dich Anmelden oder Registrieren um diesen link zusehen!



Hallo,

unter der oben angegebenen URL findet ihr ein Script welches bei der Ermittlung der optimalen FFdecsa Parameter helfen soll.
Das script erwartet als Parameter den Pfad zum FFdecsa Ordner im vdr-sc source Verzeichnis, kann aber auch weggelassen werden, wenn das script sich im selben Verzeichnis befindet wie der FFdecsa Ordner (üblicherweise direkt im vdr-sc source Verzeichnis).
Ansonsten versucht das script den Ordner selbst zu lokalisieren.


(Nur für fortgeschrittene User)
Eigene compiler flags können im script über die Variable "OwnFlags" definiert werden.
Diese sollten in dem Fall vollständig und vorallem korrekt sein, ansonsten bricht das script ab oder die Tests werden fehlschlagen.
Außerdem kann über die Variable "FFdecsaDIR" der Pfad zum FFdecsa source Verzeichnis angegeben werden.


Das Script kopieren und z.B. unter "cpuopt.sh" abspeichern und anschließend ausführbar machen:
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!



Parameter:
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!



Beispiel:
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!


Ausgabe:
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!



Über komplette Testresultate würde ich mich freuen.
 
Zuletzt bearbeitet:
AW: [Script] VDR-SC FFdecsa optimization

### CPU-INFO ###
System: x86
Vendor-ID: AuthenticAMD
CPU-Family: 16
CPU-Model: 6
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save

### FFdeCSA TEST ###
Using compiler: g++
with flags: -Wall -fPIC -O3 -march=amdfam10 -fomit-frame-pointer -funroll-loops

Trying various FFdecsa optimizations...
PARALLEL_32_INT: test failed
PARALLEL_32_4CHAR: 65
PARALLEL_32_4CHARA: 41
PARALLEL_64_8CHAR: 59
PARALLEL_64_8CHARA: 36
PARALLEL_64_2INT: test failed
PARALLEL_64_LONG: 133
PARALLEL_64_MMX: 237
PARALLEL_128_16CHAR: 59
PARALLEL_128_16CHARA: 44
PARALLEL_128_4INT: 185
PARALLEL_128_2LONG: 170
PARALLEL_128_2MMX: 274
PARALLEL_128_SSE: 275
PARALLEL_128_SSE2: 392
Choosing PARALLEL_MODE = PARALLEL_128_SSE2

### VDR-SC FFdeCSA MAKEFILE OPTS ###
CPUOPT ?= amdfam10
PARALLEL ?= PARALLEL_128_SSE2
CSAFLAGS ?= -Wall -fPIC -O3 -fomit-frame-pointer -funroll-loops

Danke für das nützliche Skript!!

EDIT: Oben hatte ich schon die Makefile von Hand verbessert, mit Original Makefile sieht es so aus:

### CPU-INFO ###
System: x86
Vendor-ID: AuthenticAMD
CPU-Family: 16
CPU-Model: 6
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save

### FFdeCSA TEST ###
Using compiler: g++
with flags: -Wall -fPIC -O3 -march=amdfam10 -fomit-frame-pointer -funroll-loops

Trying various FFdecsa optimizations...
PARALLEL_32_INT: test failed
PARALLEL_32_4CHAR: 44
PARALLEL_32_4CHARA: 35
PARALLEL_64_8CHAR: 40
PARALLEL_64_8CHARA: 31
PARALLEL_64_2INT: test failed
PARALLEL_64_LONG: 106
PARALLEL_64_MMX: 205
PARALLEL_128_16CHAR: 45
PARALLEL_128_16CHARA: 37
PARALLEL_128_4INT: 138
PARALLEL_128_2LONG: 106
PARALLEL_128_2MMX: 184
PARALLEL_128_SSE: build failed
PARALLEL_128_SSE2: build failed
Choosing PARALLEL_MODE = PARALLEL_64_MMX

### VDR-SC FFdeCSA MAKEFILE OPTS ###
CPUOPT ?= amdfam10
PARALLEL ?= PARALLEL_64_MMX
CSAFLAGS ?= -Wall -fPIC -O3 -fomit-frame-pointer -funroll-loops


diff Makefile.opt Makefile.orig
22c22
< FLAGS ?= -Wall -fPIC -O3 -march=amdfam10 -msse2 -fomit-frame-pointer -fexpensive-optimizations -funroll-loops
---
> FLAGS ?= -Wall -fPIC -O3 -march=pentium -mmmx -fomit-frame-pointer -fexpensive-optimizations -funroll-loops
39,40d38
<
< PARALLEL_MODE ?= PARALLEL_128_SSE2
 
Zuletzt bearbeitet:
AW: [Script] VDR-SC FFdecsa optimization

Alles klar!

Da war wohl noch ein kleiner Fehler im make Teil. Die übergebenen Variablen wurden durch die im Makefile überschrieben. Nun läuft das über Umgebungsvariablen.

Hatte selber im FFdecsa Makefile die FLAGS Zeile mal angepasst, also genau wie bei dir im ersten Versuch.

Schau mal bitte obs nun mit jungfreulichen Sourcen klappt.


Danke dir vielmals fürs Feedback!
 
AW: [Script] VDR-SC FFdecsa optimization

War mein Fehler - sorry!

Bitte einfach nochmal runterladen.
 
AW: [Script] VDR-SC FFdecsa optimization

Den Pfad zum FFdecsa Verzeichnis solltest du schon mit angeben. Steht auch so im ersten Post.

Wenn du nicht weisst wo der ist, dann probier mal folgendes:
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

Wenn das nicht hinhaut, dann hast du entweder keine sources von vdr-sc oder einfach nicht nach "/usr/..." entpackt.
 
AW: [Script] VDR-SC FFdecsa optimization

ja,ist richtig liegt im home verzeichnis

muß ich jetzt umziehen?
 
Zuletzt bearbeitet von einem Moderator:
AW: [Script] VDR-SC FFdecsa optimization

@dippes
./cpuopt.sh -D /Pfad/zum/FFdecsa -v
@tecfreak
Ja, jetzt geht es mit originaler Makefile.
 
AW: [Script] VDR-SC FFdecsa optimization

Du musst dich Anmelden oder Registrieren um den Inhalt der Angebote zu sehen!

Für die, die nicht in der Lage sind selber einen Parameter anzugeben -
die neuste Version sucht selbständig nach einem Pfad zum FFdecsa source Verzeichnis (in "/usr/src", "/usr/local/src", "/home").

@JyJyJ
Danke nochmal fürs Testen.
 
AW: [Script] VDR-SC FFdecsa optimization

habs jetzt mit dem aktuellen script durchlaufen lassen

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
wieso wird jetzt bei den cpuopt native vorgeschlagen? sonst war es core2?

was ist denn jetzt besser für mein system?
 
Zuletzt bearbeitet von einem Moderator:
AW: [Script] VDR-SC FFdecsa optimization

Native bedeutet, dass der compiler deine cpu kennt und damit keine genaueren angaben mehr nötig sind.

Du kannst das aber mit der Option "-n" auch wieder abschalten und hast wieder wie gewohnt "core2" dort stehen.

Mit der aktuellen Version (eben raus) könnte die Performance auf bestimmten System ggf. nochmal etwas besser sein.


Schau mal wie es jetzt einmal mit "-n" und einmal ohne aussieht.
"-v" ist jetzt nicht mehr nötig wie ich oben schon mal geschrieben habe.
 
AW: [Script] VDR-SC FFdecsa optimization

Du musst dich Anmelden oder Registrieren um den Inhalt der Angebote zu sehen!
Ja!

./cpuoptv7.sh
FFdecsa optimization helper (benchmark) V7
### CPU-INFO ###
System: x86
Vendor-ID: AuthenticAMD
CPU-Family: 16
CPU-Model: 6
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save

gcc version 4.5.0 20100604 [gcc-4_5-branch revision 160292] (SUSE Linux)
Using compilers "native" flags

### FFdeCSA TEST ###
Using compiler: g++
with flags: -O3 -march=native -mmmx -msse -msse2 -fexpensive-optimizations -funroll-loops

Trying various FFdecsa optimizations...
PARALLEL_32_INT: test failed
PARALLEL_32_4CHAR: 67
PARALLEL_32_4CHARA: 40
PARALLEL_64_8CHAR: 60
PARALLEL_64_8CHARA: 38
PARALLEL_64_2INT: test failed
PARALLEL_64_LONG: 129
PARALLEL_64_MMX: 313
PARALLEL_128_16CHAR: 59
PARALLEL_128_16CHARA: 42
PARALLEL_128_4INT: 183
PARALLEL_128_2LONG: 169
PARALLEL_128_2MMX: 261
PARALLEL_128_SSE: 370
PARALLEL_128_SSE2: 417

Choosing PARALLEL_MODE = PARALLEL_128_SSE2 (417 Mbit/s)

### VDR-SC FFdeCSA MAKEFILE OPTS ###
CPUOPT ?= native
PARALLEL ?= PARALLEL_128_SSE2
CSAFLAGS ?= -O3 -march=native -mmmx -msse -msse2 -fexpensive-optimizations -funroll-loops

### GENERIC FFdeCSA MAKE OPTS ###
FLAGS="-O3 -march=native -mmmx -msse -msse2 -fexpensive-optimizations -funroll-loops" PARALLEL_MODE=PARALLEL_128_SSE2


./cpuoptv7.sh -n
FFdecsa optimization helper (benchmark) V7
### CPU-INFO ###
System: x86
Vendor-ID: AuthenticAMD
CPU-Family: 16
CPU-Model: 6
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save

gcc version 4.5.0 20100604 [gcc-4_5-branch revision 160292] (SUSE Linux)
Compilers "native" flags disabled or unsupported

### FFdeCSA TEST ###
Using compiler: g++
with flags: -O3 -march=amdfam10 -fexpensive-optimizations -funroll-loops

Trying various FFdecsa optimizations...
PARALLEL_32_INT: test failed
PARALLEL_32_4CHAR: 68
PARALLEL_32_4CHARA: 41
PARALLEL_64_8CHAR: 60
PARALLEL_64_8CHARA: 38
PARALLEL_64_2INT: test failed
PARALLEL_64_LONG: 130
PARALLEL_64_MMX: 314
PARALLEL_128_16CHAR: 59
PARALLEL_128_16CHARA: 42
PARALLEL_128_4INT: 183
PARALLEL_128_2LONG: 168
PARALLEL_128_2MMX: 260
PARALLEL_128_SSE: 373
PARALLEL_128_SSE2: 418

Choosing PARALLEL_MODE = PARALLEL_128_SSE2 (418 Mbit/s)

### VDR-SC FFdeCSA MAKEFILE OPTS ###
CPUOPT ?= amdfam10
PARALLEL ?= PARALLEL_128_SSE2
CSAFLAGS ?= -O3 -march=amdfam10 -fexpensive-optimizations -funroll-loops

### GENERIC FFdeCSA MAKE OPTS ###
FLAGS="-O3 -march=amdfam10 -fexpensive-optimizations -funroll-loops" PARALLEL_MODE=PARALLEL_128_SSE2


Noch schneller (429) wird es aber mit
FLAGS ?= -O3 -march=amdfam10 -msse2 -fomit-frame-pointer -fexpensive-optimizations -funroll-loops und PARALLEL_MODE=PARALLEL_128_SSE2
 
AW: [Script] VDR-SC FFdecsa optimization

Habs angepasst und "-fomit-frame-pointer" hinzugefügt.
Auf "-msse2" kann man in dem Fall verzichten, da bereits durch "-march=amdfam10" definiert.

V8 ist online.

...und nochmal Danke für den feedback.
 
Zurück
Oben