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:
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:
Parameter:
Beispiel:
Ausgabe:
Über komplette Testresultate würde ich mich freuen.
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:
Sie müssen registriert sein, um Links zu sehen.
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:
chmod +x cpuopt.sh
Parameter:
Code:
### FFdecsa optimization helper/benchmark
### Version 9
Usage: ./cpuopt.sh [OPTION [ARG]]...
Options:
-D [PATH] path to FFdecsa source directory
-O [LEVEL] set custom optimization level e.g. S, 2 or 3
-P [MODE] test only the given PARALLEL_MODE
-T [N] number of tests per mode
-e extended - test all PARALLEL_MODEs
-i print system info - do not perform FFdecsa test
-n disable "native" flags if gcc/g++ >=4.2
-q be quiet - only results, warnings and errors
-h this output
Beispiel:
Code:
./cpuopt.sh -D /usr/local/src/vdr-plugin-sc/FFdecsa
Ausgabe:
Code:
### FFdecsa optimization helper/benchmark
### Version 9
### CPU-INFO ###
System: x86
Auto detected arch: k8
Vendor-ID: AuthenticAMD
CPU-Family: 15
CPU-Model: 107
Flags: fpu de tsc msr pae cx8 apic cmov pat clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt 3dnowext 3dnow up pni hypervisor cmp_legacy extapic cr8_legacy 3dnowprefetch
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
Compilers "native" flags disabled or unsupported
### FFdeCSA TEST ###
Using compiler: g++
Flags: -march=k8 -fomit-frame-pointer -fexpensive-optimizations -funroll-loops
Testing optimization levels 2 and 3
Level -O2:
PARALLEL_32_INT
- 143, 141, 143, 142, 142, 142, 143, 143, 143, 142
- 143 Mbit/s max.
PARALLEL_64_2INT
- 146, 143, 146, 146, 146, 146, 146, 146, 146, 146
- 146 Mbit/s max.
PARALLEL_64_LONG
- 112, 111, 112, 109, 112, 110, 110, 111, 110, 110
- 112 Mbit/s max.
PARALLEL_64_MMX
- 233, 235, 234, 232, 234, 235, 235, 235, 233, 235
- 235 Mbit/s max.
PARALLEL_128_2LONG
- 127, 127, 127, 126, 127, 127, 128, 129, 124, 128
- 129 Mbit/s max.
PARALLEL_128_2MMX
- 264, 261, 264, 266, 266, 263, 263, 262, 263, 215
- 266 Mbit/s max.
PARALLEL_128_SSE
- 228, 229, 231, 229, 229, 231, 229, 229, 231, 229
- 231 Mbit/s max.
PARALLEL_128_SSE2
- 245, 248, 247, 247, 233, 246, 244, 243, 238, 246
- 248 Mbit/s max.
Fastest PARALLEL_MODE = PARALLEL_128_2MMX (266 Mbit/s)
Level -O3:
PARALLEL_32_INT
...failed!
PARALLEL_64_2INT
...failed!
PARALLEL_64_LONG
- 113, 113, 112, 113, 113, 113, 112, 113, 113, 113
- 113 Mbit/s max.
PARALLEL_64_MMX
- 212, 212, 211, 211, 212, 210, 212, 211, 211, 212
- 212 Mbit/s max.
PARALLEL_128_2LONG
- 116, 116, 116, 116, 116, 116, 116, 116, 116, 116
- 116 Mbit/s max.
PARALLEL_128_2MMX
- 253, 256, 255, 253, 252, 253, 255, 256, 210, 254
- 256 Mbit/s max.
PARALLEL_128_SSE
- 214, 214, 214, 214, 215, 214, 215, 214, 215, 215
- 215 Mbit/s max.
PARALLEL_128_SSE2
- 249, 251, 248, 249, 249, 249, 249, 247, 250, 251
- 251 Mbit/s max.
Fastest PARALLEL_MODE = PARALLEL_128_2MMX (256 Mbit/s)
Best result with -O2 and PARALLEL_128_2MMX at 266 Mbit/s
### VDR-SC FFdeCSA Makefile OPTS ###
CPUOPT ?= k8
PARALLEL ?= PARALLEL_128_2MMX
CSAFLAGS ?= -O2 -fomit-frame-pointer -fexpensive-optimizations -funroll-loops
### GENERIC FFdeCSA make OPTS ###
FLAGS="-O2 -march=k8 -fomit-frame-pointer -fexpensive-optimizations -funroll-loops" PARALLEL_MODE=PARALLEL_128_2MMX
Über komplette Testresultate würde ich mich freuen.
Zuletzt bearbeitet: