amd64 mit acml

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
BermudaHonk
Beiträge: 184
Registriert: 21.09.2005 10:43:37
Wohnort: Dresden

amd64 mit acml

Beitrag von BermudaHonk » 04.10.2005 02:22:12

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
The only Microsoft product ever to ship that doesn't suck will probably be a vacuum cleaner!

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 04.10.2005 03:24:38

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
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

BermudaHonk
Beiträge: 184
Registriert: 21.09.2005 10:43:37
Wohnort: Dresden

Beitrag von BermudaHonk » 04.10.2005 09:54:32

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 8O

Gruß BermudaHonk
The only Microsoft product ever to ship that doesn't suck will probably be a vacuum cleaner!

shoefer
Beiträge: 1
Registriert: 18.10.2005 10:26:30

Geht einfacher

Beitrag von shoefer » 18.10.2005 10:50:51

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

Antworten