Tach.
Ich habe aus ein wenig Langeweile und Experimentierfreude mich mit der "AMD Core Math Library" beschäftigt, weil mich das schon seit geraumer Zeit nicht mehr in Ruhe gelassen hat. Nun ja, heute habe ich damit begonnen.
Um noch schnell zu klären worum es hierbei überhaut geht:
Die ACML ist eine Bibliothek die spezielle, unter anderem im dem AMD64-Prozessor vorhandenen, Funktionen (Sinus, Cosinus, Logarithmus, Potenz- und Exponentialfunktion, schnelle Fouriertransformation ...) nutzt, anstatt den üblichen Weg über die "math.h" Bibliothek zu gehen. Der Vorteil hiervon ist naheliegend -> Leistungssteigerung in der Funktionsabarbeitung.
Ich habe bereits "toolame" gegen die ACML gelinkt und eine ca. 170MB große Wave-Datei in 60 Sek. umwandeln können. Das gleiche brauchte mit der Standatfunktion 71 Sek. Hierbei handelte es sich und ganz wenige Funktionen die ich ersetzen musste ~20 Stück.
Als nächstes wollte ich etwas größeres versuchen und fand bei "povray-3.5" annähernd 266 Funktionen die ich substituieren konnte. Dazu schrieb ich ein Skript, sonst würde ich immernoch am edieren sein . Das Skript erledigte seinen Job in wenigen Sekunden und der anschließende Test mit einer Example-Szene brachte 35% Zeitersparnis (23 Sek. gegenüber 36 Sek. mit Standartfunktionen).
Was haltet Ihr davon? Man könnte doch daraus was ernstes machen, oder?
Gruß BermudaHonk
amd64 mit acml
-
- Beiträge: 184
- Registriert: 21.09.2005 10:43:37
- Wohnort: Dresden
amd64 mit acml
The only Microsoft product ever to ship that doesn't suck will probably be a vacuum cleaner!
- blackm
- Moderator und Co-Admin
- Beiträge: 5921
- Registriert: 02.06.2002 15:03:17
- Lizenz eigener Beiträge: MIT Lizenz
Hi,
hoert sich ja inertessant an. Machst du das gleich so das die patches in das eigentliche Projekt einfliessen? Also das wenn ich das auf n AMD64 baue, deine funktionen verwendet werden und wenn auf n IA32, dann die Standardfunktionen?
bye, Martin
PS: Ich habe das Thema mal von Smalltalk weggeschoben
hoert sich ja inertessant an. Machst du das gleich so das die patches in das eigentliche Projekt einfliessen? Also das wenn ich das auf n AMD64 baue, deine funktionen verwendet werden und wenn auf n IA32, dann die Standardfunktionen?
bye, Martin
PS: Ich habe das Thema mal von Smalltalk weggeschoben
Schöne Grüße
Martin
Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden
Martin
Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden
-
- Beiträge: 184
- Registriert: 21.09.2005 10:43:37
- Wohnort: Dresden
Hi,
danke erstmal, ich habe net so recht gewusst wohin mit meinem Post.
Na, fürs erste hab ich einfach den Code mit dem Skript umgeschrieben (die Funktionen heißen dann z.B "fastsin") und hinterher noch die Makefile angepasst, damit die Lib dem Linker bekannt wird. Die Headerdatei habe ich über einen Symlink gleich in das richtige Verzeichnis verlegt.
Laut den PDFs von AMD hat die Sache auch mehr oder minder kleine Einschränkungen:
- denormal inputs may produce unpredictable results
- the routine may return slightly worse for very large values
Es hat natürlich experimentellen Charakter und ist daher mit Vorsicht zu genießen (Anwendungen wie CAD und Co. sollten immer bei "math.h" bleiben)
Jetzt kann man sich natürlich überlegen was man damit anfangen könnte und wie
Gruß BermudaHonk
danke erstmal, ich habe net so recht gewusst wohin mit meinem Post.
Na, fürs erste hab ich einfach den Code mit dem Skript umgeschrieben (die Funktionen heißen dann z.B "fastsin") und hinterher noch die Makefile angepasst, damit die Lib dem Linker bekannt wird. Die Headerdatei habe ich über einen Symlink gleich in das richtige Verzeichnis verlegt.
Laut den PDFs von AMD hat die Sache auch mehr oder minder kleine Einschränkungen:
- denormal inputs may produce unpredictable results
- the routine may return slightly worse for very large values
Es hat natürlich experimentellen Charakter und ist daher mit Vorsicht zu genießen (Anwendungen wie CAD und Co. sollten immer bei "math.h" bleiben)
Jetzt kann man sich natürlich überlegen was man damit anfangen könnte und wie
Gruß BermudaHonk
The only Microsoft product ever to ship that doesn't suck will probably be a vacuum cleaner!
Geht einfacher
Wenn ich die Doku zur ACML richtig gelesen habe, kannst du dir anscheinend einen Teil des Ersetzens sparen. Da steht, das die Standardfunktionen (cos, exp ...) sich in der Teilbibliothek ACML_MV befinden und mittels weak alias eingebunden werden können:
"If ACML MV is included in the link order before libm, then all calls to the aliased libm function name (e.g. cos) will use the equivalent ACML MV routine (e.g. fastcos). If ACML MV is included in the link order after libm, then all calls to libm functions will use the libm versions."
Man bräuchte also nur noch das Environment im configure abfragen (mußt du eh), und dann die Bibliothek als erste linken
"If ACML MV is included in the link order before libm, then all calls to the aliased libm function name (e.g. cos) will use the equivalent ACML MV routine (e.g. fastcos). If ACML MV is included in the link order after libm, then all calls to libm functions will use the libm versions."
Man bräuchte also nur noch das Environment im configure abfragen (mußt du eh), und dann die Bibliothek als erste linken